diff --git a/.gitignore b/.gitignore
index b445380..c36c5e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,21 @@
-claw-code/
\ No newline at end of file
+claw-code/
+Agent Compare/
+
+# Build outputs
+bin/
+obj/
+publish/
+
+# IDE
+.vs/
+*.user
+*.suo
+
+# OS
+Thumbs.db
+Desktop.ini
+.DS_Store
+
+# Secrets
+*.env
+credentials.json
diff --git a/AGENTS.md b/AGENTS.md
index ea4036b..0284e04 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -48,6 +48,12 @@
### AX Agent의 테마 통일성
- AX Agent의 경우 별도 테마를 생성하여 사용(codex, claude-code를 모방한 ui/ux를 원함)
- 테마는 시스템, 라이트, 다크로 간단하게 구성
+- AX Agent UI/UX는 **기존 AX Copilot UI 틀을 유지하지 않아도 되며**, 필요 시 레이아웃/구조를 재배치해도 됨
+- 목표 기준은 **Codex, Claude, claude-code 계열처럼 심플하고 밀도 높은 업무형 UI**이며, 장식보다 정보 구조와 사용 흐름의 단순화를 우선
+- 채팅 본문, 실행 로그, 계획 카드, composer, 설정 화면 모두 가능한 한 **같은 시각 언어**로 정리하고 기본 컨트롤 느낌을 줄임
+- AX Agent 설정 화면은 **가독성이 좋도록 항목 간 상하 여백과 섹션 간 간격을 충분히 확보**하여 답답하지 않게 구성
+- AX Agent 설정 화면에서는 기본 WPF CheckBox/ComboBox 느낌을 그대로 쓰지 말고, **커스텀 라디오 버튼, 커스텀 콤보박스, 커스텀 선택 카드/토글 UI**를 우선 사용
+- 설정 항목은 가능하면 `라벨 + 설명 + 현재값/선택 컨트롤` 구조의 row 패턴으로 정리하고, 선택 가능한 값은 **텍스트만이 아니라 시각적으로 인지 가능한 버튼/배지/카드 형태**로 표현
### 코드비하인드 팝업/다이얼로그 테마 규칙
- **코드비하인드에서 생성하는 모든 팝업 Window/다이얼로그**도 현재 테마를 따라야 함
diff --git a/README.md b/README.md
index 35934da..173b493 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
개발 참고: Claw Code 동등성 작업 추적 문서
`docs/claw-code-parity-plan.md`
+
---
## 주요 기능 (프리픽스 치트시트)
@@ -45,6 +46,7 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
| 테마 커스터마이징 | ❌ | ✅ (7종 프리셋 + 완전 커스텀) |
| 설정 UI | ✅ | ✅ (7탭 전체 GUI 설정) |
+
---
## 설치 및 빌드
@@ -91,6 +93,7 @@ powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1 -SkipFullTes
| 스킬 파일 | `%APPDATA%\AxCommander\skills\*.skill.json` |
| 크래시 덤프 | `%APPDATA%\AxCommander\crashes\` |
+
---
## 사용법
@@ -133,6 +136,7 @@ powershell -ExecutionPolicy Bypass -File .\scripts\release-gate.ps1 -SkipFullTes
| `{month}` | 월 (2자리) | `03` |
| `{day}` | 일 (2자리) | `23` |
+
---
## 플러그인 개발
@@ -196,6 +200,7 @@ public class MyHandler : IActionHandler
}
```
+
---
## 테마
@@ -216,6 +221,7 @@ public class MyHandler : IActionHandler
설정 UI(`Ctrl+,` → 테마 탭)에서 클릭 한 번으로 즉시 미리보기 적용.
+
---
## 변경 이력
@@ -300,10 +306,73 @@ public class MyHandler : IActionHandler
| 권한 팝업 밀도/정렬 미세조정 | 권한 행의 패딩·폰트·아이콘·체크마크 간격을 컴팩트하게 재정렬하고 요약 카드 타이포를 축소해 `claw-code` 스타일의 빠른 스캔 밀도를 강화 |
| Slash palette 상태 분리 시작 | `ChatWindow`에 몰려 있던 slash 상태를 `SlashPaletteState`로 분리해 이후 Codex/Claude형 composer 개편 기반 마련 |
| 런처 이미지 미리보기 추가 | `#` 클립보드 이미지 항목에서 `Shift+Enter`로 전용 미리보기 창을 열고, 줌·원본 해상도 확인·PNG/JPEG/BMP 저장·클립보드 복사를 지원 |
+| AX Agent 모델 선택 단순화 | AX Agent 서비스 설정에서 내부 서비스 모델 선택을 등록 모델 칩 중심으로 고정하고, 채팅 오버레이/보조 설정창의 숨은 모델 텍스트 입력 의존을 제거 |
+| vLLM SSL 위치 정리 | 전역 서비스 설정/채팅 오버레이에서 vLLM SSL 우회 노출을 걷어내고, 모델 등록/편집 다이얼로그에서만 모델별로 설정하도록 정리 |
+| 검증 | `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 |
| 검증 | `dotnet build` 경고 0 / 오류 0, `dotnet test` 436 passed / 0 failed |
자세한 내용은 [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md)의 `v0.7.3` 항목을 참고하세요.
+
+---
+
+## 최근 추가 작업
+
+- 업데이트: 2026-04-04 23:57 (KST)
+- Git 브랜치 패널 상단에 검색 입력을 추가해 많은 브랜치도 바로 필터링하고 전환할 수 있게 했습니다.
+- 브랜치 전환 섹션은 검색 중 표시 수 / 전체 수를 함께 보여주도록 보강했습니다.
+
+- 업데이트: 2026-04-04 23:49 (KST)
+- AX Agent 서비스/권한 탭의 주요 선택 항목을 기본 ComboBox 대신 카드형 라디오 선택으로 바꿔 같은 선택 언어로 통일했습니다.
+- 워크스페이스 패널은 최근/전체 섹션 개수와 현재 선택 강조를 추가해 현재 위치를 더 바로 읽을 수 있게 했습니다.
+
+- 업데이트: 2026-04-04 23:41 (KST)
+- Chat/Cowork/Code 빈 화면의 세로 기준점을 통일하고, 설명 블록과 프리셋 카드 영역 시작 위치가 같은 리듬으로 보이도록 정리했습니다.
+- 프리셋 카드/기타/추가 카드의 외곽 마진과 내부 패딩을 맞춰 중앙 정렬 상태에서도 행 간격이 더 균일하게 보이도록 보정했습니다.
+
+- 업데이트: 2026-04-04 23:33 (KST)
+- AX Agent 공통 설정에 표현 수준을 직접 조정하는 행을 추가하고, 저장된 표현 수준이 설정 창에서 그대로 유지되도록 초기화 경로를 바로잡았습니다.
+- Code 탭 하단 바는 로컬 / 브랜치 / 워크트리 흐름을 우선으로 재정리하고, Code 전용 파일/로그 버튼은 제거해 더 단순한 작업 전환 구조로 맞췄습니다.
+
+- 업데이트: 2026-04-04 23:20 (KST)
+- AX Agent 설정의 고급/서비스/권한 행 간격을 더 넓히고, 서비스 탭과 권한 탭의 주요 설정 행을 같은
+ow + toggle 시각 언어로 통일했습니다.
+- 워크스페이스 선택 팝업은 제목 + 검색 + 내부 스크롤 구조를 가진 검색 가능한 프로젝트 선택 패널로 다듬었습니다.
+- 업데이트: 2026-04-04 23:08 (KST)
+- 설정 서브탭 외곽선을 제거하고 배경 강조 중심의 더 얇은 탭 정렬로 정리했습니다.
+- Cowork/Code 상단 필터와 좌측 메뉴를 워크스페이스 목록 기반으로 전환했습니다.
+- 사이드바 검색을 평시 액션 행 + 인라인 확장 검색 흐름으로 바꾸고, Ctrl+K 단축키를 연결했습니다.
+- 좌측 대화 목록을 오늘 / 어제 / 이전 날짜 그룹으로 정리했습니다.
+- AX Agent 고급 설정의 켜기/끄기 버튼을 단일 토글 스위치로 교체했습니다.
+- 좌측 상단 액션 줄은 새 대화 / 검색의 같은 리스트형 행으로 통일하고 예약됨/Dispatch 성격의 항목은 노출하지 않도록 정리했습니다.
+- 워크스페이스 선택 팝업은 검색 가능한 패널형으로 재구성했습니다.
+- Code 탭 하단 바는 언어 선택 대신 로컬 / 워크트리 중심 흐름으로 바꾸고, Git 저장소에서는 `git worktree add`, 일반 폴더에서는 복사본 워크스페이스 전환을 지원하도록 연결했습니다.
+- 메인 설정에 남아 있던 `AI 기능 활성화`, `운영 모드`, `자동 모델 라우팅` 성격의 AX Agent 관련 항목은 AX Agent 탭 중심으로 재배치하고, 일반/기능 탭의 중복 노출을 숨겨 설정 통합 흐름을 정리했습니다.
+- AX Agent 서브탭은 `공통 / 서비스 / 권한 / 고급` 4개 중심으로 단순화하고, 공통 패널 내부를 기본 상태/서비스/공통 런타임 묶음으로 나눠 같은 시각 언어와 간격으로 다시 정리했습니다.
+- 기능 탭의 과한 AI 표현은 `텍스트/파일`, `선택 텍스트 명령`, `코드 리뷰` 등 사용자 기준 문구로 낮췄습니다.
+- 워크스페이스 선택 패널은 `최근 워크스페이스 / 전체 워크스페이스` 섹션형으로 재구성했고, Code 하단 브랜치 선택 패널도 worktree 메뉴와 같은 설명형 row 언어로 통일했습니다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
+- 업데이트: 2026-04-04 23:59 (KST)
+- AX Agent 공통 탭의 운영 모드, 최대 컨텍스트 토큰, 대화 보관 기간 선택을 카드형/칩형 선택으로 교체해 공통/서비스/권한/고급 전 영역의 선택 언어를 더 강하게 통일했습니다.
+- AX Agent 고급 탭의 실행 이력 상세도도 간략/상세/디버그 카드형 선택으로 전환해 남아 있던 기본 WPF ComboBox 흔적을 줄였습니다.
+- Git 브랜치 패널에는 최근 전환 브랜치 섹션을 추가해 자주 오가는 브랜치를 검색 전에 바로 전환할 수 있게 보강했습니다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
+
+- 업데이트: 2026-04-05 00:10 (KST)
+- Enter 입력을 기본 DraftQueue 경로로 승격하고, Ctrl+Enter/전송 버튼/초기 전송/재실행/후속 작업도 같은 큐 흐름을 타도록 정리했습니다.
+- DraftQueue는 메시지/명령/직접 실행/후속 작업/조정 kind를 보존하도록 확장했고, Code 탭 작업 위치 패널은 워크트리/복사본 전환 흐름 중심으로 재구성했습니다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
+
+- 업데이트: 2026-04-05 00:28 (KST)
+- DraftQueue 카드를 실행 대기/최근 결과 섹션형으로 재구성하고, 상태·우선순위·종류 배지와 아이콘을 추가해 큐 상태를 더 빠르게 파악할 수 있게 했습니다.
+- 워크스페이스/브랜치/워크트리 패널은 같은 Popup row 규칙으로 맞추고, composer 최대 폭 확장과 하단 칩형 상태줄 정리로 Code/Cowork 하단 리듬을 더 가볍게 다듬었습니다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
+
+- 업데이트: 2026-04-05 00:38 (KST)
+- DraftQueue 패널 상단에 실행 중 / 다음 / 보류 / 완료 / 실패 요약 pill을 추가하고, composer 상단의 모델/컨텍스트/프리셋 줄도 더 낮고 평평한 밀도로 정리했습니다.
+- 브랜치/워크트리 패널에는 공통 요약 strip을 추가해 현재 상태를 같은 시각 언어로 보여주도록 맞췄고, 저장소 루트 `.gitignore`에는 빌드 산출물·IDE 파일·OS 잡파일·비밀정보 패턴을 추가했습니다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
+
---
## 라이선스
diff --git a/docs/AGENT_ROADMAP.md b/docs/AGENT_ROADMAP.md
index 00d4100..ef543c1 100644
--- a/docs/AGENT_ROADMAP.md
+++ b/docs/AGENT_ROADMAP.md
@@ -64,3 +64,32 @@
- 2026-04-04(추가2): /mcp login/logout 세션 인증 토큰 지원, /mcp status·/chrome 진단에 Auth(Session) 반영.
- 2026-04-04(추가3): 권한 UX 통합(/permissions·/allowed-tools·/settings permissions), 복구 혼합 테스트 보강, 좌측 패널 실패 필터 노출 정책 rich 전용으로 정렬.
+
+- 2026-04-04 20:27 (KST): Added a dedicated AX Agent theme layer and separated in-chat theme selection into style (`claw/codex/slate`) and mode (`system/light/dark`).
+- 2026-04-04 18:03 (KST): Added a Codex-style context usage ring to the composer, exposed direct `/compact` execution from the footer, and surfaced Git branch/change status in the Cowork/Code footer when a repository is connected.
+- 2026-04-04 18:03 (KST): Simplified the Cowork footer by removing document format/design selectors and moved those defaults into the AX Agent settings page, with output format centered on AI automatic selection.
+- 2026-04-04 18:03 (KST): Minimized AX Agent message headers, changed model quick controls to a popup panel, flattened slash command rows into a Codex-style list, and aligned model/permission/template controls to the same dropdown panel language.
+- 2026-04-04 18:03 (KST): Expanded the Git branch badge into a dropdown panel, flattened permission/template popups into row-based lists, and made AI message action bars remain visible for the selected message.
+- 2026-04-04 18:03 (KST): Flattened the data-usage popup, added Git branch switching/creation inside the dropdown, and surfaced quick model chips so the inline model panel relies less on ComboBox controls.
+- 2026-04-04 18:03 (KST): Replaced the visible inline model/service selectors with custom cards and row lists so the AX Agent quick panel more closely follows the Codex/claude-code control feel.
+- 2026-04-04 18:03 (KST): Added recent/favorite grouping to the preset popup and enabled right-click pinning so the preset picker better matches Codex-style frequent-use navigation.
+- 2026-04-04 18:03 (KST): Added preset search, made selected messages visually persistent, and flattened more of the permission detail popup into row-based information to keep the panel lighter.
+- 2026-04-04 18:03 (KST): Switched recent permission-denied actions to flat row actions, exposed Git upstream state in the branch panel, and made inline quick actions read more like custom stateful cards.
+- 2026-04-04 19:07 (KST): Unified AX Agent popup panels around the same row-driven language by flattening permission override details, simplifying collapsible section chrome, adding keyboard-friendly row actions, and turning Git change stats into compact pills.
+- 2026-04-04 19:07 (KST): Refined message actions into custom pill buttons with visible labels, fixed the custom action template so border visuals render correctly, and tightened composer/footer density so model, preset, token, permission, and Git controls feel like one system.
+- 2026-04-04 19:11 (KST): Reworked the AX Agent timeline so execution events render like thin Codex-style inline logs instead of heavy banners, softened older-history loading into an outline pill, and aligned planning cards to the same message-width rhythm.
+- 2026-04-04 19:25 (KST): Tightened user/assistant/streaming cards under one density rule by compressing vertical spacing, card padding, header typography, and message meta spacing to a more Codex-like rhythm.
+- 2026-04-04 19:25 (KST): Flattened the composer further by reducing input, model, preset, token, and footer control heights so the bottom work area reads more like a single claw-code-style strip.
+- 2026-04-04 19:25 (KST): Matched AX Agent overlay quick settings to inline quick settings with the same `label · value` structure, lighter explanatory copy, and unified section naming.
+- 2026-04-04 19:48 (KST): Fixed Chat sidebar topic exploration so clicking the left topic entry surfaces the preset cards again, and made preset selection immediately sync category label, conversation metadata, and saved state.
+- 2026-04-04 19:48 (KST): Reduced permission/data-usage UI lag by synchronizing conversation settings before persistence, switching popup rows to immediate mouse-down activation, and refreshing overlay status labels in the same turn.
+- 2026-04-04 19:48 (KST): Widened the AX Agent message lane, softened the yellow cast of the Claude-style theme preset, aligned the data-usage button with the permission button language, and routed the tray settings entry directly into AX Agent settings when AI is enabled.
+- 2026-04-04 20:41 (KST): Permission surface re-aligned to the four claw-code public modes, legacy `질문 없이 진행` exposure removed from AX Agent popups/slash guidance, and the in-chat settings/sidebar information hierarchy simplified to match the lighter Claude/Codex-style layout direction.
+- 업데이트: 2026-04-04 22:05 (KST)
+- AX Agent 고급 설정 오버레이를 설명형 row + 커스텀 On/Off 선택 구조로 개편하고, 내부 기능명을 사용자 친화 문구로 정리함.
+- 업데이트: 2026-04-04 20:58 (KST)
+- AX Agent 서비스 설정의 내부 서비스 모델 선택을 등록 모델 칩 기반으로 정리하고, vLLM SSL 우회는 모델 등록/편집 다이얼로그에서만 노출되도록 설정 표면을 축소함.
+- 업데이트: 2026-04-04 21:02 (KST)
+- composer 컨텍스트 카드를 hover 중심의 간단 표기(`%` + `K/M` 사용량)로 정리하고, 최대 컨텍스트 설정 상한을 1M까지 확장함.
+- 업데이트: 2026-04-04 21:02 (KST)
+- AX Agent 서비스 설정의 `Gemini/Claude`도 모델 칩 선택 구조로 통일하고, composer 모델 버튼을 `서비스 · 모델` 문법으로 맞춰 설정-실행 흐름의 시각 언어를 정리함.
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index 349008d..22c128a 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -1,5 +1,16 @@
# AX Copilot — 개발 문서
+- Document update: 2026-04-04 20:27 (KST) - Added AX Agent theme styles (`claw/codex/slate`) and exposed separate selection inside the in-chat settings.
+- Document update: 2026-04-04 18:03 (KST) - Added a context usage ring with compact guidance, a direct compact action, and Git branch status badges to the AX Agent composer/footer.
+- Document update: 2026-04-04 18:03 (KST) - Removed document format/design selectors from the footer and moved their defaults into AX Agent settings, keeping output format on AI automatic selection by default.
+- Document update: 2026-04-04 18:03 (KST) - Simplified AX Agent message headers, converted model quick settings into a popup panel, flattened slash command rows, and aligned composer dropdown buttons to a unified panel pattern.
+- Document update: 2026-04-04 18:03 (KST) - Added a Git branch dropdown panel, flattened permission/template popup rows to match the slash list, and made AI message action bars persist on selected messages.
+- Document update: 2026-04-04 18:03 (KST) - Flattened the data-usage popup into row lists, added branch switching/creation inside the Git dropdown, and exposed quick model chips in the inline model panel to reduce ComboBox-heavy UX.
+- Document update: 2026-04-04 18:03 (KST) - Reworked the inline model panel into custom service cards and row-based model lists so the visible UI relies much less on default ComboBox controls.
+- Document update: 2026-04-04 18:03 (KST) - Added recent/favorite sections to the preset popup and enabled right-click pinning so the preset picker follows a more Codex-like frequent-use flow.
+- Document update: 2026-04-04 18:03 (KST) - Added preset search, strengthened selected-message visuals, and reduced permission detail emphasis by shifting more of the popup to flat row-based information.
+- Document update: 2026-04-04 18:03 (KST) - Converted recent permission-denied actions into row actions, surfaced Git upstream status in the branch panel, and gave inline quick actions stronger stateful card visuals.
+
---
## 📑 목차
@@ -3779,3 +3790,273 @@ else:
### 3) 품질 게이트
- `dotnet build src/AxCopilot/AxCopilot.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false` 통과 (경고 0, 오류 0).
- `dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Debug -p:UseSharedCompilation=false -nodeReuse:false --filter "ChatWindowSlashPolicyTests|OperationModePolicyTests|OperationModeReadinessTests"` 통과 (65 passed, 0 failed).
+
+## 2026-04-04 추가 진행 기록 (연속 실행 48차: AX Agent 패널/메시지/composer 시각 규칙 통일 1차)
+
+업데이트: 2026-04-04 19:07 (KST)
+
+### 1) 팝업 패널 row 언어 통일
+- 권한 팝업의 `도구별 예외`를 칩 나열에서 row 기반 목록으로 바꿔, Git/프리셋/슬래시와 같은 스캔 방식으로 맞춤.
+- 권한 상세 접힘 섹션 카드 외곽을 무거운 박스형에서 경계선 중심 구조로 정리해 `claw-code` 기준의 가벼운 패널 밀도에 가깝게 조정.
+- Git 브랜치 팝업의 변경 통계를 텍스트 나열 대신 pill 배지로 정리하고, 섹션 라벨과 액션 row를 같은 규칙으로 통일.
+- 공통 `CreateFlatPopupRow()`에 키보드 포커스/Enter·Space 실행/chevron 표시를 넣어 클릭 가능한 항목이 더 명확하게 보이도록 보강.
+
+### 2) 메시지 액션 바와 선택 상태 정리
+- 메시지 액션 버튼을 아이콘만 있는 상태에서 `아이콘 + 라벨` pill형 버튼으로 바꿔, hover/선택 시에도 기능을 더 빠르게 읽을 수 있도록 조정.
+- 커스텀 액션 버튼 템플릿이 BorderBrush/BorderThickness를 반영하도록 수정해 메시지 액션 바가 실제 커스텀 컨트롤처럼 보이도록 정리.
+- 메시지 선택 시 카드 외곽선과 그림자 강조가 안정적으로 유지되도록 정렬.
+
+### 3) composer 하단 바 밀도 보정
+- 입력 카드 패딩, 모델 선택 버튼, 프리셋 버튼, 토큰 사용 카드의 높이/곡률을 재정리해 상단 control strip이 같은 계열의 composer 요소처럼 보이도록 조정.
+- Cowork/Code 하단 `FolderBar`를 독립 카드형 영역으로 올리고, 데이터 활용/권한/Git 버튼 패딩과 카드 밀도를 동일 기준으로 정렬.
+
+### 4) 품질 게이트
+- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal` 통과 (경고 0, 오류 0).
+
+## 2026-04-04 추가 진행 기록 (연속 실행 49차: AX Agent 타임라인을 Codex형 본문 로그 구조로 재정렬)
+
+업데이트: 2026-04-04 19:11 (KST)
+
+### 1) 실행 로그 배너를 얇은 본문 로그로 재구성
+- `AddAgentEventBanner()`를 무거운 컬러 배너 카드에서 `얇은 실행 줄 + 우측 메타` 구조로 전환.
+- 로그 라벨, 실행 시간, 토큰 배지는 유지하되 색/곡률/마진을 낮춰 본문을 방해하지 않는 방향으로 정리.
+- detailed/debug 요약, tool input, file path 보조 정보도 동일 기준의 얕은 블록으로 맞춤.
+
+### 2) 계획 카드를 대화 흐름형 카드로 보정
+- `AddPlanningCard()`를 별도 강조 박스보다 `메시지 카드와 같은 폭/곡률`에 가깝게 재정렬.
+- 헤더 문구를 `N개의 작업 완료 중 0` 구조로 바꿔 Codex 스타일의 진행형 계획 카드 리듬에 맞춤.
+- 진행률 바/단계 목록의 텍스트 색과 폭도 현재 메시지 본문 폭 기준으로 맞춤.
+
+### 3) 이전 대화 로드 카드 톤 다운
+- `CreateTimelineLoadMoreCard()`를 카드형 박스에서 얇은 outline pill형 버튼으로 전환해 타임라인 상단 밀도를 낮춤.
+
+### 4) 품질 게이트
+- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal` 통과 (경고 0, 오류 0).
+
+## 2026-04-04 추가 진행 기록 (연속 실행 50차: 메시지/스트리밍/composer/설정 표현을 같은 UX 규칙으로 재정렬)
+
+업데이트: 2026-04-04 19:25 (KST)
+
+### 1) 메시지 카드와 스트리밍 카드 규칙 통일
+- 사용자/AI 메시지 카드의 세로 마진, 코너 반경, 본문 패딩, 타임스탬프 크기를 한 단계 더 줄여 Codex형 촘촘한 본문 밀도로 재정렬.
+- 스트리밍 카드 헤더의 아이콘/이름/경과 시간 타이포를 일반 AI 메시지와 같은 기준으로 맞추고, 카드 반경/패딩/메타 줄 간격도 동일 규칙으로 통일.
+- 액션 바의 세로 간격과 메타 정보 크기를 낮춰 본문과 자연스럽게 이어지도록 정리.
+
+### 2) composer 상단 strip / 하단 상태줄 압축
+- 입력 카드, 모델 버튼, 프리셋 버튼, 토큰 링 카드의 높이와 패딩을 더 낮고 평평하게 조정해 `claw-code` 계열의 얇은 composer 리듬에 가깝게 정렬.
+- 입력 박스 최소 높이와 패딩, 첨부/내보내기/중지/전송 버튼 크기를 함께 줄여 하단부 전체가 한 덩어리의 얇은 작업줄처럼 보이도록 보정.
+- Cowork/Code `FolderBar`도 높이/곡률/패딩을 다시 낮춰 하단 상태줄이 본문보다 과하게 튀지 않도록 정리.
+
+### 3) AX Agent 설정 페이지와 인라인 빠른 설정 표현 일치
+- 인라인 빠른 설정의 상태 라벨을 `제목 · 현재값` 구조로 통일하고, 전체 설정의 빠른 설정 버튼도 같은 표기 규칙으로 동기화.
+- 전체 설정의 `빠른 제어` 영역을 `빠른 설정`으로 재정의하고, 인라인 빠른 설정과 같은 항목명/강조 방식으로 맞춤.
+- 전체 설정 설명 문구도 `AX Agent 설정을 이 화면 하나에서 정리`하는 방향으로 다시 정리해 트레이 기반 표현의 잔재를 제거.
+
+## 2026-04-04 추가 진행 기록 (연속 실행 51차: AX Agent 실사용 버그와 폭/테마 정비)
+
+업데이트: 2026-04-04 19:48 (KST)
+
+### 1) Chat 좌측 주제 클릭과 프리셋 반영 흐름 보정
+- Chat 좌측 `주제 탐색` 클릭 시 단순 필터 초기화만 하던 흐름을 수정해, 프리셋 카드와 EmptyState가 즉시 다시 보이도록 정리.
+- 프리셋 선택 시 카테고리 라벨, 대화 메타, 워터마크, 대화 목록 저장 흐름을 함께 갱신해 `눌러도 아무 일 없는 것처럼 보이는` 상태를 줄임.
+
+### 2) 권한/데이터 활용 상태 반영 지연 보정
+- 대화 설정 저장 전에 현재 대화 객체의 권한/데이터 활용/무드 값을 먼저 동기화하도록 조정해 하단 상태가 한 단계 늦게 반영되는 문제를 줄임.
+- 권한 팝업과 데이터 활용 팝업의 row 클릭을 `MouseLeftButtonDown` 기준으로 바꿔 즉시 반영감이 나도록 보정.
+- 권한/데이터 활용 변경 후 오버레이의 빠른 설정 라벨도 즉시 다시 계산하도록 연결.
+
+### 3) 채팅 폭/설정 레이아웃/테마 조정
+- 메시지 최대 폭 계산과 좌우 마진을 줄여 Chat 본문과 composer가 더 넓게 보이도록 조정.
+- AX Agent 설정 오버레이의 좌측 컬럼 폭과 헤더 타이포를 조정하고, 설명 문구에 줄바꿈을 허용해 제목이 잘려 보이던 현상을 완화.
+- `Claw` 스타일 표시는 `Claude`로 보이도록 정리하고, 전용 테마의 밝은/시스템/다크 팔레트를 더 중성적인 베이지·회색 계열로 다듬어 노란 톤을 완화.
+
+### 4) 하단 바 시각 정렬과 트레이 진입점 정리
+- 폴더 데이터 활용 버튼을 기본 선택형 카드처럼 보이지 않도록 투명 배경 + 경계선 기준으로 다시 정리해 권한 버튼과 더 비슷한 밀도로 맞춤.
+- 트레이의 `설정` 항목은 AI 활성화 시 `AX Agent 설정`으로 직접 진입하도록 바꾸고, AI 비활성 상태에서는 기존 앱 설정으로 폴백하도록 연결.
+
+### 5) 품질 게이트
+- `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal` 통과 (경고 0, 오류 0).
+- 2026-04-04 20:41 (KST): Reduced AX Agent permission surface to the four claw-code-aligned public modes (`권한 요청`, `편집 자동 승인`, `계획 모드`, `권한 건너뛰기`), removed legacy `질문 없이 진행` exposure from popups/slash guidance, and normalized old aliases onto the four-mode flow.
+- 2026-04-04 20:41 (KST): Simplified the in-chat AX Agent settings page by shortening navigation/section copy, tightening the settings information hierarchy, and making the overlay read more like a single integrated settings page instead of separate mini panels.
+- 2026-04-04 20:41 (KST): Trimmed Chat/Cowork/Code sidebar information labels to a smaller shared structure (`주제`, `작업`, `코드 작업`) so the left rail reads closer to the simpler Claude/Codex-style navigation density.
+## 2026-04-04 ?? ?? ?? (?? ?? 52?: AX Agent ?? ???? ??? ??/row ???)
+????: 2026-04-04 20:10 (KST)
+### 1) ??? ??? ?? ?? ??
+- AX Agent ?? ?????? ?? ?? ??? ??? ??(AX Agent ???, ?? ??/???, ???/??, ???????????Fast, ?? ??? ??, vLLM SSL ??)? ?? ?? ???? ?? composer/??/?? ??/?? ???? ?? ?? ????? ??.
+- ?????, API ?, ?? ???, ?? ??(?? ?? ??/?? ???? ??/?? ??? ??)? LostFocus ?? ???? ? ????? ????, ??? ??? ?? ? ?? + ?? ??? ??.
+### 2) ?? ???? ?? ??
+- ?? ?? ?? ?, ?? ??, ?? ??? ?? Claude/Codex ???? ? ?? ???? ???? ??.
+- ?? ?? ??? ?? ??? ?? ?? ?? ??? ?? ???? ???? ?? ???? ???? ??.
+### 3) row ?? ?? ???? ??
+- ?? ?? ??? ?? ?? ???? ??/??/???? ? ??? ?? Fast, ???? ??, ?? ? ??, ?? ??? ?? ???? ???? ??.
+- ???/?? ??? ??/??? ???, ??/?????/API ?/?? ??? ??? ?? ??? ??? ?? ?? ??? ? ??? ? ?? UX? ???? ??.
+### 4) ?? ???
+- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal ?? (?? 0, ?? 0).
+
+## 2026-04-04 추가 진행 기록 (연속 실행 53차: AX Agent 고급 설정 설명형 On/Off 개편)
+- 업데이트: 2026-04-04 22:05 (KST)
+- AX Agent 채팅 내부 설정 오버레이의 고급 옵션 묶음을 한 줄 체크박스 목록에서 설명형 행(row) 구조로 재구성했다.
+- 옵션 문구를 사용자 기준으로 정리했다. 예: 자동 컨텍스트 압축→자동 대화 압축, 스킬 시스템→확장 스킬 사용, 병렬 도구 실행→도구 병렬 실행.
+- 각 옵션 아래에 상세 설명을 붙이고, 켜기 / 끄기 커스텀 선택 버튼으로 상태를 바꾸도록 변경했다.
+- 내부 저장 로직은 기존 체크박스 기반 상태를 유지해 호환성을 지키고, 표시 UI만 커스텀 컨트롤로 교체했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal → 경고 0 / 오류 0
+
+## 2026-04-04 추가 진행 기록 (연속 실행 54차: AX Agent 모델 선택/SSL 흐름 정리)
+- 업데이트: 2026-04-04 20:58 (KST)
+- AX Agent 메인 설정의 내부 서비스(Ollama, vLLM)는 `등록 모델` 목록과 `사용할 모델` 칩 선택만 남기고, 별도 모델명 텍스트 입력 흐름을 제거하는 방향으로 정리했다.
+- 채팅 내부 AX Agent 설정 오버레이는 등록 모델 칩 선택을 기준 경로로 고정하고, 숨겨진 모델 입력칸과 전역 vLLM SSL 토글이 저장 경로에 영향을 주지 않도록 보정했다.
+- 구형 `AgentSettingsWindow`에서도 모델 선택을 내부 `_selectedModel` + 칩 선택 흐름으로 바꾸고, 전역 vLLM SSL 우회 토글은 노출/저장 대상에서 제외했다.
+- `ModelRegistrationDialog`는 vLLM일 때만 SSL 인증서 검증 생략 옵션을 표시하도록 정리해, SSL 우회는 모델 등록/편집 단계에서만 관리하도록 맞췄다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` → 경고 0 / 오류 0
+
+## 2026-04-04 추가 진행 기록 (연속 실행 55차: 컨텍스트 표시 단순화와 1M 상한 정리)
+- 업데이트: 2026-04-04 21:02 (KST)
+- 하단 composer의 컨텍스트 카드를 `컨텍스트 32%` + `83K / 258K`처럼 더 짧게 읽히는 구조로 정리하고, 상세 정보는 hover 툴팁에서 보이도록 바꿨다.
+- hover 툴팁에는 상태, 실제 토큰 수, 압축 시작 임계치, 현재 입력 초안 포함 여부를 함께 표시하도록 정리했다.
+- 토큰 표기 단위는 `k` 대신 `K`, `M` 기준으로 통일해 큰 컨텍스트 창에서 더 빠르게 읽히도록 보정했다.
+- 설정의 `최대 컨텍스트 토큰` 선택 범위를 `32K / 64K / 128K / 256K / 512K / 1M`까지 확장하고, ViewModel/오버레이 입력 경로에서도 최대값을 `1,000,000`으로 제한했다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` → 경고 0 / 오류 0
+
+## 2026-04-04 추가 진행 기록 (연속 실행 56차: 서비스 선택 UI 통일과 composer 표기 정리)
+- 업데이트: 2026-04-04 21:02 (KST)
+- AX Agent 설정의 서비스 서브탭 스타일을 더 얇고 정돈된 카드형 라디오 버튼으로 조정하고, 선택 상태는 AccentColor 경계선 + 배경 강조로 다시 정리했다.
+- `Gemini`, `Claude` 서비스 패널도 기존 ComboBox 대신 버튼형 모델 칩 목록으로 교체해 `Ollama`, `vLLM`과 같은 선택 문법으로 맞췄다.
+- 메인 설정의 서비스 패널은 내부 서비스/외부 서비스 모두 `사용할 모델` + `모델 선택` + `API 키` 구조로 통일했다.
+- 채팅 하단 composer의 모델 버튼 문구를 `서비스 {서비스명} · 모델 {모델명}` 구조로 바꿔 설정 화면과 같은 언어로 읽히도록 정리했다.
+- `claw-code` 소스와의 격차는 실제 코드 구조 기준으로 다시 점검했다. 현재 UI/권한/모델 선택 흐름은 근접했지만, `claw-code`에는 여전히 더 깊은 상태 계층(설정 소스 우선순위, 세션별 bypass 상태, per-model usage/turn budget 집계, settings change fan-out)이 존재해 이 부분이 주된 남은 격차로 확인됐다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` → 경고 0 / 오류 0
+
+## 2026-04-04 추가 진행 기록 (연속 실행 57차: 설정 서브탭 외곽선 제거와 정렬 보정)
+- 업데이트: 2026-04-04 21:20 (KST)
+- `SettingsWindow`의 서브탭 공통 스타일(`AgentSubTabStyle`)에서 버튼 외곽선과 선택 시 테두리 강조를 제거하고, 배경 강조 중심의 더 가벼운 탭 표현으로 정리했다.
+- `일반`, `테마`, `기능`, `AX Agent`, `서비스` 서브탭 묶음 컨테이너의 배경 박스를 걷어내고, 탭 줄의 상하 여백과 세로 정렬을 보정해 제목 아래에서 더 중앙에 오도록 맞췄다.
+- 설정 화면 전체가 기본 컨트롤 느낌보다 Claude/Codex 계열처럼 더 얇고 단정한 탭 밀도로 읽히도록 정리했다.
+- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` → 경고 0 / 오류 0
+
+### 2026-04-04 추가 진행 기록 (연속 실행 58차: Cowork/Code 워크스페이스 필터 전환)
+- 업데이트: 2026-04-04 21:55 (KST)
+- ChatWindow 상단 필터와 좌측 메뉴에서 Cowork/Code의 주제/작업 유형 선택을 워크스페이스 필터로 전환했다.
+- 드롭다운은 현재 탭 대화 메타의 WorkFolder를 기준으로 프로젝트 목록을 만들고, 선택 시 해당 워크스페이스 대화만 표시한다.
+- Chat 탭은 기존 주제 필터를 유지해 프리셋/카테고리 흐름을 보존했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 59차: 사이드바 검색 액션화와 경계선 정리)
+- 업데이트: 2026-04-04 22:08 (KST)
+- AX Agent 좌측 사이드바 검색 박스를 평시에는 평평한 액션 행으로 보이게 바꾸고, 클릭 시 좌측에서 우측으로 펼쳐지는 인라인 검색 입력으로 전환했다.
+- 검색 행은 hover 시 Ctrl+K 단축키를 표시하고, Ctrl+K 입력으로도 즉시 열리도록 연결했다.
+- 좌측 메뉴 컨테이너의 불필요한 카드형 경계선을 제거해 claw-code 계열의 더 평평한 리스트형 느낌으로 정리했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 60차: 대화 목록 날짜 그룹 정리)
+- 업데이트: 2026-04-04 22:14 (KST)
+- 좌측 대화 목록을 오늘 / 어제 / 이전 3단계 그룹으로 재구성했다.
+- 첫 페이지 렌더링과 더 보기 확장 렌더링 모두 같은 날짜 그룹 규칙을 사용하도록 정리했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 61차: AX Agent 고급 설정 토글 스위치화)
+- 업데이트: 2026-04-04 22:22 (KST)
+- AX Agent 고급 설정의 켜기/끄기 이중 버튼을 제거하고 각 항목을 단일 ToggleSwitch로 교체했다.
+- 고급 설정 행은 유지하되 조작부를 더 단순한 스위치형으로 바꿔 가독성과 상태 인지성을 개선했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 62차: 상단 액션 줄 단순화와 Code 워크트리 UI 추가)
+- 업데이트: 2026-04-04 22:47 (KST)
+- AX Agent 좌측 상단 액션을 새 대화 / 검색의 같은 리스트형 행으로 통일하고, 검색은 유지하되 예약됨/Dispatch 성격의 항목은 노출하지 않도록 정리했다.
+- 워크스페이스 선택 팝업에 검색 입력을 추가해 대화 메타와 최근 폴더를 함께 검색 가능한 패널형으로 재구성했다.
+- Code 탭 하단 바에서 언어 선택을 제거하고 로컬 / 워크트리 중심 버튼을 추가했으며, Git 저장소에서는 현재 브랜치 기준 git worktree add로 분리 작업 폴더를 만들고, 일반 폴더는 복사본 워크스페이스로 전환하도록 연결했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 63차: AX Agent 설정 통합 정리)
+- 업데이트: 2026-04-04 22:55 (KST)
+- 메인 설정의 일반 탭에 남아 있던 `AI 기능 활성화`, `운영 모드` 노출을 숨기고, AX Agent 공통 탭 상단의 `기본 상태` 섹션으로 이동해 AX Agent 관련 제어를 한곳에서 하도록 정리했다.
+- AX Agent 공통 탭에는 `AX Agent 사용` 토글과 `운영 모드` 선택을 추가하고, 기존 저장 경로와 같은 이벤트 핸들러를 공유하도록 동기화했다.
+- 기능 탭에 남아 있던 `자동 모델 라우팅` 준비 중 UI는 숨기고, AX Agent 개발자 탭 안의 표시형 섹션으로 옮겨 AX Agent 전용 실험/개발 항목 위치를 일관되게 맞췄다.
+- `ApplyAiEnabledState`, `ApplyOperationModeState`를 보강해 일반 탭/AX Agent 탭의 중복 컨트롤이 있어도 동일 상태를 유지하도록 정리했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 64차: AX Agent 서브탭 단순화와 설정 밀도 정리)
+- 업데이트: 2026-04-04 23:02 (KST)
+- AX Agent 상단 서브탭을 `공통 / 서비스 / 권한 / 고급` 4개 중심으로 단순화하고, 기존 `코워크/코드/도구/스킬/차단` 세부 탭은 표면에서 숨겼다.
+- AX Agent 공통 패널 내부를 `기본 상태`, `서비스 설정`, `공통 런타임 설정` 묶음으로 나눌 수 있도록 `AgentCommonOverviewSection`, `AgentServiceSection`, `AgentCommonRuntimeSection` 래퍼를 추가하고, 선택된 서브탭에 따라 같은 패널 안에서 필요한 섹션만 보이도록 재구성했다.
+- `공통` 탭은 기본 상태와 공통 런타임 설정, `서비스` 탭은 활성 서비스/서비스별 모델 설정, `권한` 탭은 Cowork/Code 공통 권한과 실행 제어, `고급` 탭은 개발자 성격의 상세 설정 중심으로 보이게 매핑했다.
+- AX Agent 설정 행 간격과 서브탭 패딩을 늘려 가독성을 높였고, 기능 탭의 `AI 기능` 서브탭 표기를 `텍스트/파일`로 바꾸는 등 일반 설정에 남아 있던 과한 AI 표현을 줄였다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 65차: 워크스페이스/브랜치 패널 언어 통일)
+- 업데이트: 2026-04-04 23:08 (KST)
+- 워크스페이스 선택 팝업을 `최근 워크스페이스 / 전체 워크스페이스` 섹션형으로 재구성해 `claw-code` 계열처럼 최근 사용과 전체 후보를 나눠 스캔할 수 있도록 정리했다.
+- 워크스페이스 패널은 최근 목록과 전체 목록을 분리하되, 현재 활성 폴더는 동일한 체크/아이콘 문법으로 표시하고 검색 필터는 두 섹션에 공통 적용되도록 맞췄다.
+- Code 탭 하단의 Git 브랜치 팝업은 기존 flat row 중심 렌더에서 worktree 패널과 같은 `섹션 라벨 + 설명형 row` 언어로 재구성했다.
+- 브랜치 패널은 `현재 브랜치 / 저장소 / 업스트림 / 빠른 작업 / 브랜치 전환 / 브랜치 작업` 섹션으로 나누고, 각 항목을 worktree 메뉴와 같은 선택/체크 문법으로 표시하도록 통일했다.
+- `CreatePopupMenuRow` nullable 경로를 정리해 브랜치 패널 리팩터링 후에도 빌드 경고가 남지 않도록 보정했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 66차: AX Agent 설정 행 밀도/워크스페이스 패널 정리)
+- 업데이트: 2026-04-04 23:20 (KST)
+- AX Agent 설정의 AgentSettingsRow 패딩과 간격을 한 단계 더 넓히고, 서비스 탭과 권한 탭의 주요 설정 행을 같은
+ow + toggle 시각 언어로 다시 정렬했다.
+- 서비스 탭의 Ollama/vLLM/Gemini/Claude 설정 행과 권한 탭의 권한/에이전트 동작/프로젝트 규칙/메모리 관련 행을 AgentSettingsRow 기준으로 통일해, 설정 밀도와 토글 리듬이 섞여 보이던 문제를 줄였다.
+- 워크스페이스 선택 팝업은 제목, 검색 입력, 내부 스크롤 영역을 가진 검색 가능한 프로젝트 선택 패널로 재구성해 claw-code 계열처럼 최근/전체 워크스페이스를 더 안정적으로 탐색할 수 있게 했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 67차: AX Agent 표현 수준 이관과 Code 하단 구조 정리)
+- 업데이트: 2026-04-04 23:33 (KST)
+- AX Agent 공통 설정에 표현 수준 행을 추가하고, 기존 숨김 영역에 남아 있던 표현 수준 라디오와 새 AX Agent 라디오를 같은 저장 경로로 동기화하도록 정리했다.
+- 표현 수준 초기화는 저장된 값을 우선 사용하도록 수정해, 설정 창을 열 때마다
+`rich`로 덮어쓰이던 문제를 방지했다.
+- Code 탭 하단 바는 로컬 / 브랜치 / 워크트리 흐름을 우선으로 보이도록 재정리하고, Code 전용 하단 액션에서 파일 버튼과 실행 이력 상세도 버튼을 제거해 claw-code 계열처럼 더 단순한 작업 전환 구조로 맞췄다.
+- 로컬 버튼은 원본 워크스페이스로 복귀, 워크트리 버튼은 분리 작업 복사본 생성/전환 팝업을 열도록 연결했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 68차: 빈 화면 중앙 정렬과 프리셋 간격 보정)
+- 업데이트: 2026-04-04 23:41 (KST)
+- Chat/Cowork/Code가 공유하는 EmptyState의 최대 폭, 상하 여백, 제목/설명 블록 간격을 조정해 세 탭의 빈 화면 세로 위치가 같은 기준선에 맞도록 보정했다.
+- EmptyState 설명 텍스트는 고정 폭과 중앙 정렬을 적용해 탭별 문구 길이가 달라도 프리셋 카드 영역 시작점이 흔들리지 않도록 정리했다.
+- 프리셋 카드/기타/프리셋 추가 카드의 폭, 높이, 외곽 마진, 내부 패딩, 아이콘 하단 간격을 통일해 중앙 정렬 기준에서도 행 간격이 더 균일하게 보이도록 다듬었다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 69차: 서비스/권한 카드 선택과 워크스페이스 강조 보강)
+- 업데이트: 2026-04-04 23:49 (KST)
+- AX Agent 서비스 탭의 사용할 서비스 선택을 기본 ComboBox 대신 Ollama / vLLM / Gemini / Claude 카드형 라디오 선택으로 교체하고, 선택 시 서비스 서브탭/모델 패널이 함께 동기화되도록 정리했다.
+- AX Agent 권한 탭의 기본 파일 접근 권한, 의사결정 수준, 플랜 모드도 카드형 라디오 선택으로 전환해 서비스 탭과 같은 선택 언어로 통일했다.
+- 워크스페이스 선택 패널은 최근 워크스페이스 · N, 전체 워크스페이스 · N처럼 개수를 표시하도록 바꾸고, 현재 선택된 워크스페이스는 강조 배경/테두리와 현재 선택 설명으로 더 명확히 보이도록 보강했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 70차: 브랜치 검색 패널 보강)
+- 업데이트: 2026-04-04 23:57 (KST)
+- Git 브랜치 패널 상단에 검색 입력을 추가해 브랜치 수가 많은 저장소에서도 전환 대상을 바로 필터링할 수 있게 했다.
+- 브랜치 팝업을 열면 검색어를 초기화하고 검색 입력에 포커스를 주도록 정리했으며, 검색 중에는 브랜치 전환 · 표시수/전체수 형식으로 결과 개수를 함께 보여주도록 보강했다.
+- 서비스/권한 탭의 주요 선택은 이미 카드형 라디오 선택으로 전환된 상태를 유지하고, 브랜치 패널도 같은 검색-선택 흐름의 커스텀 패널 언어로 확장했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-04 추가 진행 기록 (연속 실행 71차: AX Agent 공통 카드 선택과 최근 브랜치 흐름 보강)
+- 업데이트: 2026-04-04 23:59 (KST)
+- AX Agent 공통 탭의 운영 모드 선택을 기본 ComboBox에서 사내/사외 카드형 선택으로 교체하고, 비밀번호 확인 뒤 즉시 저장과 화면 동기화가 되도록 경로를 정리했다.
+- AX Agent 공통 런타임의 최대 컨텍스트 토큰과 대화 보관 기간을 카드형/칩형 선택으로 바꿔 서비스/권한/고급 탭과 같은 선택 UI 언어로 통일했다.
+- AX Agent 고급 탭의 실행 이력 상세도도 간략/상세/디버그 카드형 선택으로 전환해 남아 있던 기본 ComboBox 흔적을 줄였다.
+- Git 브랜치 패널에는 최근 전환 브랜치 섹션을 추가해 자주 오가는 브랜치를 검색 전에 우선 노출하도록 보강했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-05 추가 진행 기록 (연속 실행 72차: DraftQueue 기본 전송 승격과 작업 위치 패널 정리)
+- 업데이트: 2026-04-05 00:10 (KST)
+- Enter 입력은 기본적으로 DraftQueue에 추가되고, Ctrl+Enter와 전송 버튼도 같은 대기열 경로를 타도록 정리해 전송 흐름이 즉시 실행과 대기열 실행으로 갈라지지 않게 맞췄다.
+- 초기 메시지 전송, 재실행, 드래그드롭 자동 전송, 후속 작업 생성도 같은 큐 경로를 사용하도록 정리해 대화 실행 진입점이 하나의 구조로 모이게 했다.
+- DraftQueueItem에 kind(message/command/direct/followup/steering)를 추가하고, 카드 헤더에 상태·우선순위·종류가 함께 보이도록 보강했다.
+- Code 탭 작업 위치 패널은 현재 작업 위치 / 워크트리·복사본 / 새 작업 위치 섹션으로 재구성해 브랜치/워크스페이스 패널과 같은 설명형 row 언어로 통일했다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-05 추가 진행 기록 (연속 실행 73차: 큐 카드·composer·작업 위치 패널 시각 언어 정리)
+- 업데이트: 2026-04-05 00:28 (KST)
+- DraftQueue 패널을 실행 대기 / 최근 결과 섹션형으로 다시 묶고, 각 카드 헤더에 종류·상태·우선순위 배지를 넣어 큐 상태를 더 빠르게 읽을 수 있게 정리했다.
+- 워크스페이스 선택 패널은 기존 독립 카드형 행을 공통 Popup row 생성 규칙으로 맞춰 브랜치/워크트리/워크스페이스가 같은 리스트 문법으로 보이도록 통일했다.
+- composer 영역은 최대 폭을 넓히고, 하단 FolderBar 외곽 박스를 제거한 뒤 로컬/워크트리/데이터/권한/Git 버튼을 칩형 리듬으로 정리해 claw-code 계열처럼 더 가볍게 보이도록 조정했다.
+- 모델 표시 문구는 `서비스 ... · 모델 ...` 형식에서 `서비스 · 모델명` 형식으로 줄여 하단 빠른 선택 라벨이 더 짧고 읽기 쉽게 보이도록 맞췄다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
+
+### 2026-04-05 추가 진행 기록 (연속 실행 74차: 큐 상태 요약 강화와 gitignore 정리)
+- 업데이트: 2026-04-05 00:38 (KST)
+- DraftQueue 패널 상단에 실행 중 / 다음 / 보류 / 완료 / 실패 상태 요약 pill을 추가해 현재 대기열 상태를 카드 목록을 읽기 전에 먼저 파악할 수 있게 했다.
+- composer 상단의 모델/컨텍스트/프리셋 줄은 버튼 높이와 패딩을 더 낮추고 토큰 카드 밀도도 줄여 Codex·claude-code 계열처럼 더 평평한 리듬으로 정리했다.
+- 브랜치/워크트리 패널에는 공통 요약 strip을 추가해 현재 브랜치, 파일 상태, 최근 브랜치 수, 로컬/워크트리 모드, 변형 개수를 같은 시각 언어로 보여주도록 맞췄다.
+- 저장소 루트 `.gitignore`에는 빌드 산출물(bin/obj/publish), IDE 파일(.vs, *.user, *.suo), 운영체제 잡파일(Thumbs.db, Desktop.ini, .DS_Store), 비밀정보 패턴(*.env, credentials.json)을 추가해 불필요한 추적을 줄였다.
+- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
diff --git a/publish/Assets/icon.ico b/publish/Assets/icon.ico
deleted file mode 100644
index d51c1a5..0000000
Binary files a/publish/Assets/icon.ico and /dev/null differ
diff --git a/publish/Assets/mascot.png b/publish/Assets/mascot.png
deleted file mode 100644
index 5514d0a..0000000
Binary files a/publish/Assets/mascot.png and /dev/null differ
diff --git a/publish/AxCommander.SDK.pdb b/publish/AxCommander.SDK.pdb
deleted file mode 100644
index ccdfac2..0000000
Binary files a/publish/AxCommander.SDK.pdb and /dev/null differ
diff --git a/publish/AxCommander.exe b/publish/AxCommander.exe
deleted file mode 100644
index 588681b..0000000
Binary files a/publish/AxCommander.exe and /dev/null differ
diff --git a/publish/AxCommander.pdb b/publish/AxCommander.pdb
deleted file mode 100644
index d71326b..0000000
Binary files a/publish/AxCommander.pdb and /dev/null differ
diff --git a/publish/D3DCompiler_47_cor3.dll b/publish/D3DCompiler_47_cor3.dll
deleted file mode 100644
index ef8ac8c..0000000
Binary files a/publish/D3DCompiler_47_cor3.dll and /dev/null differ
diff --git a/publish/PenImc_cor3.dll b/publish/PenImc_cor3.dll
deleted file mode 100644
index 9490687..0000000
Binary files a/publish/PenImc_cor3.dll and /dev/null differ
diff --git a/publish/PresentationNative_cor3.dll b/publish/PresentationNative_cor3.dll
deleted file mode 100644
index 589a8ee..0000000
Binary files a/publish/PresentationNative_cor3.dll and /dev/null differ
diff --git a/publish/vcruntime140_cor3.dll b/publish/vcruntime140_cor3.dll
deleted file mode 100644
index 5786e93..0000000
Binary files a/publish/vcruntime140_cor3.dll and /dev/null differ
diff --git a/publish/wpfgfx_cor3.dll b/publish/wpfgfx_cor3.dll
deleted file mode 100644
index aa7d287..0000000
Binary files a/publish/wpfgfx_cor3.dll and /dev/null differ
diff --git a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe
deleted file mode 100644
index 4f66a6b..0000000
Binary files a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe and /dev/null differ
diff --git a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe.config b/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe.config
deleted file mode 100644
index 8e342a9..0000000
--- a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.exe.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.pdb
deleted file mode 100644
index 9e7f725..0000000
Binary files a/src/AxCopilot.Installer/bin/Debug/net48/AxCopilot_Setup.pdb and /dev/null differ
diff --git a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe
deleted file mode 100644
index 1cb80b6..0000000
Binary files a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe and /dev/null differ
diff --git a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe.config b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe.config
deleted file mode 100644
index 8e342a9..0000000
--- a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.exe.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb
deleted file mode 100644
index 3ec61a2..0000000
Binary files a/src/AxCopilot.Installer/bin/Release/net48/AxCopilot_Setup.pdb and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json b/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json
deleted file mode 100644
index 3a136cd..0000000
--- a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.dgspec.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "format": 1,
- "restore": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": {}
- },
- "projects": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj": {
- "version": "0.7.3",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj",
- "projectName": "AxCopilot_Setup",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net48"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net48": {
- "targetAlias": "net48",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net48": {
- "targetAlias": "net48",
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201\\RuntimeIdentifierGraph.json"
- }
- },
- "runtimes": {
- "win-x86": {
- "#import": []
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.props b/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.props
deleted file mode 100644
index e97f99c..0000000
--- a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.props
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- True
- NuGet
- $(MSBuildThisFileDirectory)project.assets.json
- $(UserProfile)\.nuget\packages\
- C:\Users\admin\.nuget\packages\
- PackageReference
- 7.0.0
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.targets b/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.targets
deleted file mode 100644
index 3dc06ef..0000000
--- a/src/AxCopilot.Installer/obj/AxCopilot.Installer.csproj.nuget.g.targets
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/src/AxCopilot.Installer/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs
deleted file mode 100644
index 15efebf..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfo.cs b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfo.cs
deleted file mode 100644
index 7d15180..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.7.1.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.7.1")]
-[assembly: System.Reflection.AssemblyProductAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.7.1.0")]
-
-// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
-
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfoInputs.cache b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfoInputs.cache
deleted file mode 100644
index b739ab2..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-b0ecaa163a313d5af7b0a607fb1d375c818edd550a5facb1dcab54e47d4ef5ba
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
deleted file mode 100644
index 331daa3..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-is_global = true
-build_property.ApplicationManifest = app.manifest
-build_property.StartupObject =
-build_property.ApplicationDefaultFont =
-build_property.ApplicationHighDpiMode =
-build_property.ApplicationUseCompatibleTextRendering =
-build_property.ApplicationVisualStyles =
-build_property.RootNamespace = AxCopilot.Installer
-build_property.ProjectDir = E:\AX Copilot\src\AxCopilot.Installer\
-build_property.EnableComHosting =
-build_property.EnableGeneratedComInterfaceComImportInterop =
-build_property.CsWinRTUseWindowsUIXamlProjections = false
-build_property.EffectiveAnalysisLevelStyle =
-build_property.EnableCodeStyleSeverity =
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.assets.cache b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.assets.cache
deleted file mode 100644
index 9c7440d..0000000
Binary files a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.assets.cache and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.AssemblyReference.cache b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.AssemblyReference.cache
deleted file mode 100644
index 8fd1a50..0000000
Binary files a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.AssemblyReference.cache and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache
deleted file mode 100644
index 9ad5e21..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-cdeb201644c87f7c493d903f57cc22b1f80777359a33a9d6401d43e2b0005fa8
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt
deleted file mode 100644
index ed50576..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-E:\AX Commander\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.exe.config
-E:\AX Commander\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.exe
-E:\AX Commander\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.pdb
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.csproj.AssemblyReference.cache
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.AssemblyInfoInputs.cache
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.AssemblyInfo.cs
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot_Setup.exe
-E:\AX Commander\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot_Setup.pdb
-E:\AX Copilot\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.exe.config
-E:\AX Copilot\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.exe
-E:\AX Copilot\src\AxCopilot.Installer\bin\Debug\net48\AxCopilot_Setup.pdb
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.csproj.AssemblyReference.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.AssemblyInfoInputs.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.AssemblyInfo.cs
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot_Setup.exe
-E:\AX Copilot\src\AxCopilot.Installer\obj\Debug\net48\AxCopilot_Setup.pdb
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe
deleted file mode 100644
index 4f66a6b..0000000
Binary files a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe.withSupportedRuntime.config b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe.withSupportedRuntime.config
deleted file mode 100644
index 8e342a9..0000000
--- a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.exe.withSupportedRuntime.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.pdb
deleted file mode 100644
index 9e7f725..0000000
Binary files a/src/AxCopilot.Installer/obj/Debug/net48/AxCopilot_Setup.pdb and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Release/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/src/AxCopilot.Installer/obj/Release/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs
deleted file mode 100644
index 15efebf..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/.NETFramework,Version=v4.8.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs
deleted file mode 100644
index 2c92e8b..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("0.7.3.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("0.7.3+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")]
-[assembly: System.Reflection.AssemblyProductAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot_Setup")]
-[assembly: System.Reflection.AssemblyVersionAttribute("0.7.3.0")]
-
-// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
-
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache
deleted file mode 100644
index ff7bdd5..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-8c3c9e0cfb9d88f32c6ea168c4f5fa33f33d90f240b1e012d903f5d9e3fb23a7
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
deleted file mode 100644
index a8c4e49..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-is_global = true
-build_property.ApplicationManifest = app.manifest
-build_property.StartupObject =
-build_property.ApplicationDefaultFont =
-build_property.ApplicationHighDpiMode =
-build_property.ApplicationUseCompatibleTextRendering =
-build_property.ApplicationVisualStyles =
-build_property.RootNamespace = AxCopilot.Installer
-build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.Installer\
-build_property.EnableComHosting =
-build_property.EnableGeneratedComInterfaceComImportInterop =
-build_property.CsWinRTUseWindowsUIXamlProjections = false
-build_property.EffectiveAnalysisLevelStyle =
-build_property.EnableCodeStyleSeverity =
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache
deleted file mode 100644
index 0f1aad1..0000000
Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.assets.cache and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.AssemblyReference.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.AssemblyReference.cache
deleted file mode 100644
index 8fd1a50..0000000
Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.AssemblyReference.cache and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache
deleted file mode 100644
index a0b5bb9..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-d0902e3a45ac1669ecad6c4a76499ce8c92ddecaaca00815b0d092f937f62404
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt
deleted file mode 100644
index b4e6b44..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot.Installer.csproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-E:\AX Copilot\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe.config
-E:\AX Copilot\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe
-E:\AX Copilot\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.pdb
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.AssemblyReference.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfoInputs.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfo.cs
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.exe
-E:\AX Copilot\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe.config
-E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe
-E:\AX Copilot - Codex\src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.AssemblyReference.cache
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfoInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.AssemblyInfo.cs
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot.Installer.csproj.CoreCompileInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.exe
-E:\AX Copilot - Codex\src\AxCopilot.Installer\obj\Release\net48\AxCopilot_Setup.pdb
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe
deleted file mode 100644
index 1cb80b6..0000000
Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe.withSupportedRuntime.config b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe.withSupportedRuntime.config
deleted file mode 100644
index 8e342a9..0000000
--- a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.exe.withSupportedRuntime.config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb b/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb
deleted file mode 100644
index 3ec61a2..0000000
Binary files a/src/AxCopilot.Installer/obj/Release/net48/AxCopilot_Setup.pdb and /dev/null differ
diff --git a/src/AxCopilot.Installer/obj/project.assets.json b/src/AxCopilot.Installer/obj/project.assets.json
deleted file mode 100644
index ec2ae74..0000000
--- a/src/AxCopilot.Installer/obj/project.assets.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
- "version": 3,
- "targets": {
- ".NETFramework,Version=v4.8": {},
- ".NETFramework,Version=v4.8/win-x86": {}
- },
- "libraries": {},
- "projectFileDependencyGroups": {
- ".NETFramework,Version=v4.8": []
- },
- "packageFolders": {
- "C:\\Users\\admin\\.nuget\\packages\\": {}
- },
- "project": {
- "version": "0.7.3",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj",
- "projectName": "AxCopilot_Setup",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net48"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net48": {
- "targetAlias": "net48",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net48": {
- "targetAlias": "net48",
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201\\RuntimeIdentifierGraph.json"
- }
- },
- "runtimes": {
- "win-x86": {
- "#import": []
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Installer/obj/project.nuget.cache b/src/AxCopilot.Installer/obj/project.nuget.cache
deleted file mode 100644
index 4466a34..0000000
--- a/src/AxCopilot.Installer/obj/project.nuget.cache
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "version": 2,
- "dgSpecHash": "v+ANqQ5yVSI=",
- "success": true,
- "projectFilePath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Installer\\AxCopilot.Installer.csproj",
- "expectedPackageFiles": [],
- "logs": []
-}
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.deps.json b/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.deps.json
deleted file mode 100644
index 7c2fbe4..0000000
--- a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.deps.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {
- "AxCopilot.SDK/1.0.0": {
- "runtime": {
- "AxCopilot.SDK.dll": {}
- }
- }
- }
- },
- "libraries": {
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll
deleted file mode 100644
index 7ad0153..0000000
Binary files a/src/AxCopilot.SDK/bin/Debug/net8.0-windows/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.deps.json b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.deps.json
deleted file mode 100644
index 7c2fbe4..0000000
--- a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.deps.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {
- "AxCopilot.SDK/1.0.0": {
- "runtime": {
- "AxCopilot.SDK.dll": {}
- }
- }
- }
- },
- "libraries": {
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll
deleted file mode 100644
index bb039f0..0000000
Binary files a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb
deleted file mode 100644
index d9fd03d..0000000
Binary files a/src/AxCopilot.SDK/bin/Release/net8.0-windows/AxCopilot.SDK.pdb and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.dgspec.json b/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.dgspec.json
deleted file mode 100644
index d0ddd74..0000000
--- a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.dgspec.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "format": 1,
- "restore": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj": {}
- },
- "projects": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "projectName": "AxCopilot.SDK",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.props b/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.props
deleted file mode 100644
index e97f99c..0000000
--- a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.props
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- True
- NuGet
- $(MSBuildThisFileDirectory)project.assets.json
- $(UserProfile)\.nuget\packages\
- C:\Users\admin\.nuget\packages\
- PackageReference
- 7.0.0
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.targets b/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.targets
deleted file mode 100644
index 3dc06ef..0000000
--- a/src/AxCopilot.SDK/obj/AxCopilot.SDK.csproj.nuget.g.targets
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
deleted file mode 100644
index 2217181..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs
deleted file mode 100644
index 9377840..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("AX Copilot")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
-[assembly: System.Reflection.AssemblyDescriptionAttribute("SDK for building AX Copilot plugins")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")]
-[assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.SDK")]
-[assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.SDK")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
-[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
-[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
-
-// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
-
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache
deleted file mode 100644
index 6349f16..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-fe643baa0b3aa63a4c30d8f3720ddc6ee1e3efafce544cdedde148ae30c8d136
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
deleted file mode 100644
index 992e655..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-is_global = true
-build_property.TargetFramework = net8.0-windows
-build_property.TargetFrameworkIdentifier = .NETCoreApp
-build_property.TargetFrameworkVersion = v8.0
-build_property.TargetPlatformMinVersion = 7.0
-build_property.UsingMicrosoftNETSdkWeb =
-build_property.ProjectTypeGuids =
-build_property.InvariantGlobalization =
-build_property.PlatformNeutralAssembly =
-build_property.EnforceExtendedAnalyzerRules =
-build_property._SupportedPlatformList = Linux,macOS,Windows
-build_property.RootNamespace = AxCopilot.SDK
-build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.SDK\
-build_property.EnableComHosting =
-build_property.EnableGeneratedComInterfaceComImportInterop =
-build_property.CsWinRTUseWindowsUIXamlProjections = false
-build_property.EffectiveAnalysisLevelStyle = 8.0
-build_property.EnableCodeStyleSeverity =
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs
deleted file mode 100644
index d12bcbc..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-global using System;
-global using System.Collections.Generic;
-global using System.IO;
-global using System.Linq;
-global using System.Net.Http;
-global using System.Threading;
-global using System.Threading.Tasks;
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.assets.cache b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.assets.cache
deleted file mode 100644
index 3e4de9b..0000000
Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.assets.cache and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache
deleted file mode 100644
index 709acf9..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-f858a9c01dc195df406d6ab52031704c14e8ab236b899706a36768fde27b8d52
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt
deleted file mode 100644
index 2e1b538..0000000
--- a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.deps.json
-E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Debug\net8.0-windows\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\refint\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Debug\net8.0-windows\ref\AxCopilot.SDK.dll
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll
deleted file mode 100644
index 7ad0153..0000000
Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll
deleted file mode 100644
index f0466c2..0000000
Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/ref/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll
deleted file mode 100644
index f0466c2..0000000
Binary files a/src/AxCopilot.SDK/obj/Debug/net8.0-windows/refint/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/src/AxCopilot.SDK/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
deleted file mode 100644
index 2217181..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs
deleted file mode 100644
index f709918..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfo.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("AX Copilot")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
-[assembly: System.Reflection.AssemblyDescriptionAttribute("SDK for building AX Copilot plugins")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90c2f15e96cd44446ccbe1d9aa4a63ef4c3fb7e4")]
-[assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.SDK")]
-[assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.SDK")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
-[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
-[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
-
-// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
-
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache
deleted file mode 100644
index 2367151..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-3270a1d476961f60157dc72350e3c53e996f81f7e5f98afda878cf1fcd866ab1
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
deleted file mode 100644
index 992e655..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-is_global = true
-build_property.TargetFramework = net8.0-windows
-build_property.TargetFrameworkIdentifier = .NETCoreApp
-build_property.TargetFrameworkVersion = v8.0
-build_property.TargetPlatformMinVersion = 7.0
-build_property.UsingMicrosoftNETSdkWeb =
-build_property.ProjectTypeGuids =
-build_property.InvariantGlobalization =
-build_property.PlatformNeutralAssembly =
-build_property.EnforceExtendedAnalyzerRules =
-build_property._SupportedPlatformList = Linux,macOS,Windows
-build_property.RootNamespace = AxCopilot.SDK
-build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.SDK\
-build_property.EnableComHosting =
-build_property.EnableGeneratedComInterfaceComImportInterop =
-build_property.CsWinRTUseWindowsUIXamlProjections = false
-build_property.EffectiveAnalysisLevelStyle = 8.0
-build_property.EnableCodeStyleSeverity =
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs
deleted file mode 100644
index d12bcbc..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.GlobalUsings.g.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-global using System;
-global using System.Collections.Generic;
-global using System.IO;
-global using System.Linq;
-global using System.Net.Http;
-global using System.Threading;
-global using System.Threading.Tasks;
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache
deleted file mode 100644
index 086695a..0000000
Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.assets.cache and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache
deleted file mode 100644
index 60e0323..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-27f07c411e7cf633b2b3fae7a3b844fbef6553c99925e60eb5463ef14cc382c0
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt
deleted file mode 100644
index 44f0072..0000000
--- a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.csproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.deps.json
-E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\bin\Release\net8.0-windows\AxCopilot.SDK.pdb
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfoInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.AssemblyInfo.cs
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.csproj.CoreCompileInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\refint\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\AxCopilot.SDK.pdb
-E:\AX Copilot - Codex\src\AxCopilot.SDK\obj\Release\net8.0-windows\ref\AxCopilot.SDK.dll
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll
deleted file mode 100644
index bb039f0..0000000
Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb
deleted file mode 100644
index d9fd03d..0000000
Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/AxCopilot.SDK.pdb and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll
deleted file mode 100644
index 099d50c..0000000
Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/ref/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll b/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll
deleted file mode 100644
index 099d50c..0000000
Binary files a/src/AxCopilot.SDK/obj/Release/net8.0-windows/refint/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.SDK/obj/project.assets.json b/src/AxCopilot.SDK/obj/project.assets.json
deleted file mode 100644
index c968aad..0000000
--- a/src/AxCopilot.SDK/obj/project.assets.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "version": 3,
- "targets": {
- "net8.0-windows7.0": {}
- },
- "libraries": {},
- "projectFileDependencyGroups": {
- "net8.0-windows7.0": []
- },
- "packageFolders": {
- "C:\\Users\\admin\\.nuget\\packages\\": {}
- },
- "project": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "projectName": "AxCopilot.SDK",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.SDK/obj/project.nuget.cache b/src/AxCopilot.SDK/obj/project.nuget.cache
deleted file mode 100644
index f5c2f88..0000000
--- a/src/AxCopilot.SDK/obj/project.nuget.cache
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "version": 2,
- "dgSpecHash": "zGrazGhGdDA=",
- "success": true,
- "projectFilePath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "expectedPackageFiles": [],
- "logs": []
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/.msCoverageSourceRootsMapping_AxCopilot.Tests b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/.msCoverageSourceRootsMapping_AxCopilot.Tests
deleted file mode 100644
index f2cf367..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/.msCoverageSourceRootsMapping_AxCopilot.Tests and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/duckduckgo.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/duckduckgo.png
deleted file mode 100644
index 64ee943..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/duckduckgo.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/github.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/github.png
deleted file mode 100644
index 52126e0..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/github.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/google.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/google.png
deleted file mode 100644
index 8642fc1..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/google.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/namuwiki.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/namuwiki.png
deleted file mode 100644
index 5423adf..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/namuwiki.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/naver.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/naver.png
deleted file mode 100644
index 020e16d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/naver.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/navermap.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/navermap.png
deleted file mode 100644
index 9e0bfaf..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/navermap.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/wikipedia.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/wikipedia.png
deleted file mode 100644
index 4405b8d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/wikipedia.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/youtube.png b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/youtube.png
deleted file mode 100644
index c20e1d3..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/SearchEngines/youtube.png and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc
deleted file mode 100644
index 86e411f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_dev.enc and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc
deleted file mode 100644
index 1f3f25b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/guide_user.enc and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/icon.ico b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/icon.ico
deleted file mode 100644
index 273db74..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Assets/icon.ico and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll
deleted file mode 100644
index a8ddeae..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb
deleted file mode 100644
index d27307d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.SDK.pdb and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json
deleted file mode 100644
index e826ea0..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.deps.json
+++ /dev/null
@@ -1,941 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {
- "AxCopilot.Tests/1.0.0": {
- "dependencies": {
- "AxCopilot": "0.7.3",
- "FluentAssertions": "6.12.0",
- "Microsoft.NET.Test.Sdk": "17.11.0",
- "xunit": "2.9.0",
- "Microsoft.Web.WebView2.Core": "1.0.2903.40",
- "Microsoft.Web.WebView2.WinForms": "1.0.2903.40",
- "Microsoft.Web.WebView2.Wpf": "1.0.2903.40"
- },
- "runtime": {
- "AxCopilot.Tests.dll": {}
- }
- },
- "DocumentFormat.OpenXml/3.2.0": {
- "dependencies": {
- "DocumentFormat.OpenXml.Framework": "3.2.0"
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.dll": {
- "assemblyVersion": "3.2.0.0",
- "fileVersion": "3.2.0.0"
- }
- }
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "dependencies": {
- "System.IO.Packaging": "8.0.1"
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.Framework.dll": {
- "assemblyVersion": "3.2.0.0",
- "fileVersion": "3.2.0.0"
- }
- }
- },
- "FluentAssertions/6.12.0": {
- "runtime": {
- "lib/net6.0/FluentAssertions.dll": {
- "assemblyVersion": "6.12.0.0",
- "fileVersion": "6.12.0.0"
- }
- }
- },
- "Markdig/0.37.0": {
- "runtime": {
- "lib/net8.0/Markdig.dll": {
- "assemblyVersion": "0.37.0.0",
- "fileVersion": "0.37.0.0"
- }
- }
- },
- "Microsoft.CodeCoverage/17.11.0": {
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.424.36701"
- }
- }
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "8.0.0",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
- }
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Data.Sqlite.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.NET.Test.Sdk/17.11.0": {
- "dependencies": {
- "Microsoft.CodeCoverage": "17.11.0",
- "Microsoft.TestPlatform.TestHost": "17.11.0"
- }
- },
- "Microsoft.TestPlatform.ObjectModel/17.11.0": {
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- }
- },
- "resources": {
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "zh-Hant"
- }
- }
- },
- "Microsoft.TestPlatform.TestHost/17.11.0": {
- "dependencies": {
- "Microsoft.TestPlatform.ObjectModel": "17.11.0",
- "Newtonsoft.Json": "13.0.1"
- },
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- },
- "lib/netcoreapp3.1/testhost.dll": {
- "assemblyVersion": "15.0.0.0",
- "fileVersion": "17.1100.24.41901"
- }
- },
- "resources": {
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "zh-Hant"
- }
- }
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "runtimeTargets": {
- "runtimes/win-arm64/native/WebView2Loader.dll": {
- "rid": "win-arm64",
- "assetType": "native",
- "fileVersion": "1.0.2903.40"
- },
- "runtimes/win-x64/native/WebView2Loader.dll": {
- "rid": "win-x64",
- "assetType": "native",
- "fileVersion": "1.0.2903.40"
- },
- "runtimes/win-x86/native/WebView2Loader.dll": {
- "rid": "win-x86",
- "assetType": "native",
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "Newtonsoft.Json/13.0.1": {
- "runtime": {
- "lib/netstandard2.0/Newtonsoft.Json.dll": {
- "assemblyVersion": "13.0.0.0",
- "fileVersion": "13.0.1.25517"
- }
- }
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "dependencies": {
- "SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
- "SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
- },
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "SQLitePCLRaw.core/2.1.6": {
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.core.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "runtimeTargets": {
- "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": {
- "rid": "browser-wasm",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-arm/native/libe_sqlite3.so": {
- "rid": "linux-arm",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-arm64/native/libe_sqlite3.so": {
- "rid": "linux-arm64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-armel/native/libe_sqlite3.so": {
- "rid": "linux-armel",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-mips64/native/libe_sqlite3.so": {
- "rid": "linux-mips64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-musl-arm/native/libe_sqlite3.so": {
- "rid": "linux-musl-arm",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-musl-arm64/native/libe_sqlite3.so": {
- "rid": "linux-musl-arm64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-musl-x64/native/libe_sqlite3.so": {
- "rid": "linux-musl-x64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-ppc64le/native/libe_sqlite3.so": {
- "rid": "linux-ppc64le",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-s390x/native/libe_sqlite3.so": {
- "rid": "linux-s390x",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-x64/native/libe_sqlite3.so": {
- "rid": "linux-x64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/linux-x86/native/libe_sqlite3.so": {
- "rid": "linux-x86",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": {
- "rid": "maccatalyst-arm64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": {
- "rid": "maccatalyst-x64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/osx-arm64/native/libe_sqlite3.dylib": {
- "rid": "osx-arm64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/osx-x64/native/libe_sqlite3.dylib": {
- "rid": "osx-x64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/win-arm/native/e_sqlite3.dll": {
- "rid": "win-arm",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/win-arm64/native/e_sqlite3.dll": {
- "rid": "win-arm64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/win-x64/native/e_sqlite3.dll": {
- "rid": "win-x64",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- },
- "runtimes/win-x86/native/e_sqlite3.dll": {
- "rid": "win-x86",
- "assetType": "native",
- "fileVersion": "0.0.0.0"
- }
- }
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "runtime": {
- "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "runtime": {
- "lib/net8.0/System.Diagnostics.EventLog.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- },
- "runtimeTargets": {
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
- "rid": "win",
- "assetType": "runtime",
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.IO.Packaging/8.0.1": {
- "runtime": {
- "lib/net8.0/System.IO.Packaging.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "dependencies": {
- "System.Diagnostics.EventLog": "8.0.1"
- },
- "runtime": {
- "lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "assemblyVersion": "8.0.0.1",
- "fileVersion": "8.0.1024.46610"
- }
- },
- "runtimeTargets": {
- "runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "rid": "win",
- "assetType": "runtime",
- "assemblyVersion": "8.0.0.1",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Fonts": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Core.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Fonts.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokenization.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokens.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "xunit/2.9.0": {
- "dependencies": {
- "xunit.assert": "2.9.0",
- "xunit.core": "2.9.0"
- }
- },
- "xunit.abstractions/2.0.3": {
- "runtime": {
- "lib/netstandard2.0/xunit.abstractions.dll": {
- "assemblyVersion": "2.0.0.0",
- "fileVersion": "2.0.0.0"
- }
- }
- },
- "xunit.assert/2.9.0": {
- "runtime": {
- "lib/net6.0/xunit.assert.dll": {
- "assemblyVersion": "2.9.0.0",
- "fileVersion": "2.9.0.0"
- }
- }
- },
- "xunit.core/2.9.0": {
- "dependencies": {
- "xunit.extensibility.core": "2.9.0",
- "xunit.extensibility.execution": "2.9.0"
- }
- },
- "xunit.extensibility.core/2.9.0": {
- "dependencies": {
- "xunit.abstractions": "2.0.3"
- },
- "runtime": {
- "lib/netstandard1.1/xunit.core.dll": {
- "assemblyVersion": "2.9.0.0",
- "fileVersion": "2.9.0.0"
- }
- }
- },
- "xunit.extensibility.execution/2.9.0": {
- "dependencies": {
- "xunit.extensibility.core": "2.9.0"
- },
- "runtime": {
- "lib/netstandard1.1/xunit.execution.dotnet.dll": {
- "assemblyVersion": "2.9.0.0",
- "fileVersion": "2.9.0.0"
- }
- }
- },
- "AxCopilot/0.7.3": {
- "dependencies": {
- "AxCopilot.SDK": "1.0.0",
- "DocumentFormat.OpenXml": "3.2.0",
- "Markdig": "0.37.0",
- "Microsoft.Data.Sqlite": "8.0.0",
- "Microsoft.Web.WebView2": "1.0.2903.40",
- "System.ServiceProcess.ServiceController": "8.0.1",
- "UglyToad.PdfPig": "1.7.0-custom-5"
- },
- "runtime": {
- "AxCopilot.dll": {
- "assemblyVersion": "0.7.3.0",
- "fileVersion": "0.7.3.0"
- }
- }
- },
- "AxCopilot.SDK/1.0.0": {
- "runtime": {
- "AxCopilot.SDK.dll": {
- "assemblyVersion": "1.0.0.0",
- "fileVersion": "1.0.0.0"
- }
- }
- },
- "Microsoft.Web.WebView2.Core/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.Core.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "Microsoft.Web.WebView2.WinForms/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.WinForms.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "Microsoft.Web.WebView2.Wpf/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.Wpf.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- }
- }
- },
- "libraries": {
- "AxCopilot.Tests/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "DocumentFormat.OpenXml/3.2.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-eDBT9G0sAWUvjgE8l8E5bGCFXgxCZXIecQ8dqUnj2PyxyMR5eBmLahqRRw3Q7uSKM3cKbysaL2mEY0JJbEEOEA==",
- "path": "documentformat.openxml/3.2.0",
- "hashPath": "documentformat.openxml.3.2.0.nupkg.sha512"
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-e1neOKqRnSHUom4JQEorAoZ67aiJOp6+Xzsu0fc6IYfFcgQn6roo+w6i2w//N2u/5ilEfvLr35bNO9zaIN7r7g==",
- "path": "documentformat.openxml.framework/3.2.0",
- "hashPath": "documentformat.openxml.framework.3.2.0.nupkg.sha512"
- },
- "FluentAssertions/6.12.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ZXhHT2YwP9lajrwSKbLlFqsmCCvFJMoRSK9t7sImfnCyd0OB3MhgxdoMcVqxbq1iyxD6mD2fiackWmBb7ayiXQ==",
- "path": "fluentassertions/6.12.0",
- "hashPath": "fluentassertions.6.12.0.nupkg.sha512"
- },
- "Markdig/0.37.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-biiu4MTPFjW55qw6v5Aphtj0MjDLJ14x8ndZwkJUHIeqvaSGKeqhLY7S7Vu/S3k7/c9KwhhnaCDP9hdFNUhcNA==",
- "path": "markdig/0.37.0",
- "hashPath": "markdig.0.37.0.nupkg.sha512"
- },
- "Microsoft.CodeCoverage/17.11.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-QKcOSuw7MZG4XiQ+pCj+Ib6amOwoRDEO7e3DbxqXeOPXSnfyGXYoZQI8I140s1mKQVn1Vh+c5WlKvCvlgMovpg==",
- "path": "microsoft.codecoverage/17.11.0",
- "hashPath": "microsoft.codecoverage.17.11.0.nupkg.sha512"
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-H+iC5IvkCCKSNHXzL3JARvDn7VpkvuJM91KVB89sKjeTF/KX/BocNNh93ZJtX5MCQKb/z4yVKgkU2sVIq+xKfg==",
- "path": "microsoft.data.sqlite/8.0.0",
- "hashPath": "microsoft.data.sqlite.8.0.0.nupkg.sha512"
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-pujbzfszX7jAl7oTbHhqx7pxd9jibeyHHl8zy1gd55XMaKWjDtc5XhhNYwQnrwWYCInNdVoArbaaAvLgW7TwuA==",
- "path": "microsoft.data.sqlite.core/8.0.0",
- "hashPath": "microsoft.data.sqlite.core.8.0.0.nupkg.sha512"
- },
- "Microsoft.NET.Test.Sdk/17.11.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-fH7P0LihMXgnlNLtrXGetHd30aQcD+YrSbWXbCPBnrypdRApPgNqd/TgncTlSVY1bbLYdnvpBgts2dcnK37GzA==",
- "path": "microsoft.net.test.sdk/17.11.0",
- "hashPath": "microsoft.net.test.sdk.17.11.0.nupkg.sha512"
- },
- "Microsoft.TestPlatform.ObjectModel/17.11.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PU+CC1yRzbR0IllrtdILaeep7WP5OIrvmWrvCMqG3jB1h4F6Ur7CYHl6ENbDVXPzEvygXh0GWbTyrbjfvgTpAg==",
- "path": "microsoft.testplatform.objectmodel/17.11.0",
- "hashPath": "microsoft.testplatform.objectmodel.17.11.0.nupkg.sha512"
- },
- "Microsoft.TestPlatform.TestHost/17.11.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KMzJO3dm3+9W8JRQ3IDviu0v7uXP5Lgii6TuxMc5m8ynaqcGnn7Y18cMb5AsP2xp59uUHO474WZrssxBdb8ZxQ==",
- "path": "microsoft.testplatform.testhost/17.11.0",
- "hashPath": "microsoft.testplatform.testhost.17.11.0.nupkg.sha512"
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==",
- "path": "microsoft.web.webview2/1.0.2903.40",
- "hashPath": "microsoft.web.webview2.1.0.2903.40.nupkg.sha512"
- },
- "Newtonsoft.Json/13.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
- "path": "newtonsoft.json/13.0.1",
- "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
- "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.core/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
- "path": "sqlitepclraw.core/2.1.6",
- "hashPath": "sqlitepclraw.core.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==",
- "path": "sqlitepclraw.lib.e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
- "path": "sqlitepclraw.provider.e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512"
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==",
- "path": "system.diagnostics.eventlog/8.0.1",
- "hashPath": "system.diagnostics.eventlog.8.0.1.nupkg.sha512"
- },
- "System.IO.Packaging/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KYkIOAvPexQOLDxPO2g0BVoWInnQhPpkFzRqvNrNrMhVT6kqhVr0zEb6KCHlptLFukxnZrjuMVAnxK7pOGUYrw==",
- "path": "system.io.packaging/8.0.1",
- "hashPath": "system.io.packaging.8.0.1.nupkg.sha512"
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-02I0BXo1kmMBgw03E8Hu4K6nTqur4wpQdcDZrndczPzY2fEoGvlinE35AWbyzLZ2h2IksEZ6an4tVt3hi9j1oA==",
- "path": "system.serviceprocess.servicecontroller/8.0.1",
- "hashPath": "system.serviceprocess.servicecontroller.8.0.1.nupkg.sha512"
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-mddnoBg+XV5YZJg+lp/LlXQ9NY9/oV/MoNjLbbLHw0uTymfyuinVePQB4ff/ELRv3s6n0G7h8q3Ycb3KYg+hgQ==",
- "path": "uglytoad.pdfpig/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-bChQUAYApM6/vgBis0+fBTZyAVqjXdqshjZDCgI3dgwUplfLJxXRrnkCOdNj0a6JNcF32R4aLpnGpTc9QmmVmg==",
- "path": "uglytoad.pdfpig.core/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.core.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Z6SBBAIL8wRkJNhXGYaz0CrHnNrNeuNtmwRbBtQUA1b3TDhRQppOmHCIuhjb6Vu/Rirp6FIOtzAU1lXsGik90w==",
- "path": "uglytoad.pdfpig.fonts/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.fonts.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-U8VVH7VJjv6czP7qWyzDq6CRaiJQe7/sESUCL8H3kiEa3zi0l9TonIKlD/YidQ5DlgTumracii6zjLyKPEFKwA==",
- "path": "uglytoad.pdfpig.tokenization/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.tokenization.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-m/j5RVfL4eF/OwX6ASprzK+yzD3l7xdgQ7zQPgENhjxfuXD+hj6FSeZlmxSTt9ywvWcTCjGKAILl9XTK9iQgCQ==",
- "path": "uglytoad.pdfpig.tokens/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.tokens.1.7.0-custom-5.nupkg.sha512"
- },
- "xunit/2.9.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==",
- "path": "xunit/2.9.0",
- "hashPath": "xunit.2.9.0.nupkg.sha512"
- },
- "xunit.abstractions/2.0.3": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==",
- "path": "xunit.abstractions/2.0.3",
- "hashPath": "xunit.abstractions.2.0.3.nupkg.sha512"
- },
- "xunit.assert/2.9.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==",
- "path": "xunit.assert/2.9.0",
- "hashPath": "xunit.assert.2.9.0.nupkg.sha512"
- },
- "xunit.core/2.9.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==",
- "path": "xunit.core/2.9.0",
- "hashPath": "xunit.core.2.9.0.nupkg.sha512"
- },
- "xunit.extensibility.core/2.9.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==",
- "path": "xunit.extensibility.core/2.9.0",
- "hashPath": "xunit.extensibility.core.2.9.0.nupkg.sha512"
- },
- "xunit.extensibility.execution/2.9.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==",
- "path": "xunit.extensibility.execution/2.9.0",
- "hashPath": "xunit.extensibility.execution.2.9.0.nupkg.sha512"
- },
- "AxCopilot/0.7.3": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.Core/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.WinForms/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.Wpf/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll
deleted file mode 100644
index dfcb18d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb
deleted file mode 100644
index 56175a0..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.pdb and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.runtimeconfig.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.runtimeconfig.json
deleted file mode 100644
index c7a4117..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.Tests.runtimeconfig.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net8.0",
- "frameworks": [
- {
- "name": "Microsoft.NETCore.App",
- "version": "8.0.0"
- },
- {
- "name": "Microsoft.WindowsDesktop.App",
- "version": "8.0.0"
- }
- ],
- "configProperties": {
- "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json
deleted file mode 100644
index ce0b9d7..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.deps.json
+++ /dev/null
@@ -1,391 +0,0 @@
-{
- "runtimeTarget": {
- "name": ".NETCoreApp,Version=v8.0/win-x64",
- "signature": ""
- },
- "compilationOptions": {},
- "targets": {
- ".NETCoreApp,Version=v8.0": {},
- ".NETCoreApp,Version=v8.0/win-x64": {
- "AxCopilot/0.7.3": {
- "dependencies": {
- "AxCopilot.SDK": "1.0.0",
- "DocumentFormat.OpenXml": "3.2.0",
- "Markdig": "0.37.0",
- "Microsoft.Data.Sqlite": "8.0.0",
- "Microsoft.Web.WebView2": "1.0.2903.40",
- "System.ServiceProcess.ServiceController": "8.0.1",
- "UglyToad.PdfPig": "1.7.0-custom-5",
- "Microsoft.Web.WebView2.Core": "1.0.2903.40",
- "Microsoft.Web.WebView2.WinForms": "1.0.2903.40",
- "Microsoft.Web.WebView2.Wpf": "1.0.2903.40"
- },
- "runtime": {
- "AxCopilot.dll": {}
- }
- },
- "DocumentFormat.OpenXml/3.2.0": {
- "dependencies": {
- "DocumentFormat.OpenXml.Framework": "3.2.0"
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.dll": {
- "assemblyVersion": "3.2.0.0",
- "fileVersion": "3.2.0.0"
- }
- }
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "dependencies": {
- "System.IO.Packaging": "8.0.1"
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.Framework.dll": {
- "assemblyVersion": "3.2.0.0",
- "fileVersion": "3.2.0.0"
- }
- }
- },
- "Markdig/0.37.0": {
- "runtime": {
- "lib/net8.0/Markdig.dll": {
- "assemblyVersion": "0.37.0.0",
- "fileVersion": "0.37.0.0"
- }
- }
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "8.0.0",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
- }
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "runtime": {
- "lib/net8.0/Microsoft.Data.Sqlite.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.23.53103"
- }
- }
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "native": {
- "runtimes/win-x64/native/WebView2Loader.dll": {
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "dependencies": {
- "SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
- "SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
- },
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "SQLitePCLRaw.core/2.1.6": {
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.core.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "native": {
- "runtimes/win-x64/native/e_sqlite3.dll": {
- "fileVersion": "0.0.0.0"
- }
- }
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "runtime": {
- "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {
- "assemblyVersion": "2.1.6.2060",
- "fileVersion": "2.1.6.2060"
- }
- }
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "runtime": {
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.IO.Packaging/8.0.1": {
- "runtime": {
- "lib/net8.0/System.IO.Packaging.dll": {
- "assemblyVersion": "8.0.0.0",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "dependencies": {
- "System.Diagnostics.EventLog": "8.0.1"
- },
- "runtime": {
- "runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "assemblyVersion": "8.0.0.1",
- "fileVersion": "8.0.1024.46610"
- }
- }
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Fonts": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Core.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Fonts.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokenization.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5"
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokens.dll": {
- "assemblyVersion": "0.1.8.0",
- "fileVersion": "0.1.8.0"
- }
- }
- },
- "AxCopilot.SDK/1.0.0": {
- "runtime": {
- "AxCopilot.SDK.dll": {
- "assemblyVersion": "1.0.0.0",
- "fileVersion": "1.0.0.0"
- }
- }
- },
- "Microsoft.Web.WebView2.Core/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.Core.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "Microsoft.Web.WebView2.WinForms/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.WinForms.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- },
- "Microsoft.Web.WebView2.Wpf/1.0.2903.40": {
- "runtime": {
- "Microsoft.Web.WebView2.Wpf.dll": {
- "assemblyVersion": "1.0.2903.40",
- "fileVersion": "1.0.2903.40"
- }
- }
- }
- }
- },
- "libraries": {
- "AxCopilot/0.7.3": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "DocumentFormat.OpenXml/3.2.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-eDBT9G0sAWUvjgE8l8E5bGCFXgxCZXIecQ8dqUnj2PyxyMR5eBmLahqRRw3Q7uSKM3cKbysaL2mEY0JJbEEOEA==",
- "path": "documentformat.openxml/3.2.0",
- "hashPath": "documentformat.openxml.3.2.0.nupkg.sha512"
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-e1neOKqRnSHUom4JQEorAoZ67aiJOp6+Xzsu0fc6IYfFcgQn6roo+w6i2w//N2u/5ilEfvLr35bNO9zaIN7r7g==",
- "path": "documentformat.openxml.framework/3.2.0",
- "hashPath": "documentformat.openxml.framework.3.2.0.nupkg.sha512"
- },
- "Markdig/0.37.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-biiu4MTPFjW55qw6v5Aphtj0MjDLJ14x8ndZwkJUHIeqvaSGKeqhLY7S7Vu/S3k7/c9KwhhnaCDP9hdFNUhcNA==",
- "path": "markdig/0.37.0",
- "hashPath": "markdig.0.37.0.nupkg.sha512"
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-H+iC5IvkCCKSNHXzL3JARvDn7VpkvuJM91KVB89sKjeTF/KX/BocNNh93ZJtX5MCQKb/z4yVKgkU2sVIq+xKfg==",
- "path": "microsoft.data.sqlite/8.0.0",
- "hashPath": "microsoft.data.sqlite.8.0.0.nupkg.sha512"
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-pujbzfszX7jAl7oTbHhqx7pxd9jibeyHHl8zy1gd55XMaKWjDtc5XhhNYwQnrwWYCInNdVoArbaaAvLgW7TwuA==",
- "path": "microsoft.data.sqlite.core/8.0.0",
- "hashPath": "microsoft.data.sqlite.core.8.0.0.nupkg.sha512"
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==",
- "path": "microsoft.web.webview2/1.0.2903.40",
- "hashPath": "microsoft.web.webview2.1.0.2903.40.nupkg.sha512"
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
- "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.core/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
- "path": "sqlitepclraw.core/2.1.6",
- "hashPath": "sqlitepclraw.core.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==",
- "path": "sqlitepclraw.lib.e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512"
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
- "path": "sqlitepclraw.provider.e_sqlite3/2.1.6",
- "hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512"
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==",
- "path": "system.diagnostics.eventlog/8.0.1",
- "hashPath": "system.diagnostics.eventlog.8.0.1.nupkg.sha512"
- },
- "System.IO.Packaging/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-KYkIOAvPexQOLDxPO2g0BVoWInnQhPpkFzRqvNrNrMhVT6kqhVr0zEb6KCHlptLFukxnZrjuMVAnxK7pOGUYrw==",
- "path": "system.io.packaging/8.0.1",
- "hashPath": "system.io.packaging.8.0.1.nupkg.sha512"
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-02I0BXo1kmMBgw03E8Hu4K6nTqur4wpQdcDZrndczPzY2fEoGvlinE35AWbyzLZ2h2IksEZ6an4tVt3hi9j1oA==",
- "path": "system.serviceprocess.servicecontroller/8.0.1",
- "hashPath": "system.serviceprocess.servicecontroller.8.0.1.nupkg.sha512"
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-mddnoBg+XV5YZJg+lp/LlXQ9NY9/oV/MoNjLbbLHw0uTymfyuinVePQB4ff/ELRv3s6n0G7h8q3Ycb3KYg+hgQ==",
- "path": "uglytoad.pdfpig/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-bChQUAYApM6/vgBis0+fBTZyAVqjXdqshjZDCgI3dgwUplfLJxXRrnkCOdNj0a6JNcF32R4aLpnGpTc9QmmVmg==",
- "path": "uglytoad.pdfpig.core/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.core.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-Z6SBBAIL8wRkJNhXGYaz0CrHnNrNeuNtmwRbBtQUA1b3TDhRQppOmHCIuhjb6Vu/Rirp6FIOtzAU1lXsGik90w==",
- "path": "uglytoad.pdfpig.fonts/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.fonts.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-U8VVH7VJjv6czP7qWyzDq6CRaiJQe7/sESUCL8H3kiEa3zi0l9TonIKlD/YidQ5DlgTumracii6zjLyKPEFKwA==",
- "path": "uglytoad.pdfpig.tokenization/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.tokenization.1.7.0-custom-5.nupkg.sha512"
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "type": "package",
- "serviceable": true,
- "sha512": "sha512-m/j5RVfL4eF/OwX6ASprzK+yzD3l7xdgQ7zQPgENhjxfuXD+hj6FSeZlmxSTt9ywvWcTCjGKAILl9XTK9iQgCQ==",
- "path": "uglytoad.pdfpig.tokens/1.7.0-custom-5",
- "hashPath": "uglytoad.pdfpig.tokens.1.7.0-custom-5.nupkg.sha512"
- },
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.Core/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.WinForms/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- },
- "Microsoft.Web.WebView2.Wpf/1.0.2903.40": {
- "type": "reference",
- "serviceable": false,
- "sha512": ""
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll
deleted file mode 100644
index 04e4942..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe
deleted file mode 100644
index bc5dd83..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.exe and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb
deleted file mode 100644
index 7b608b3..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.pdb and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.runtimeconfig.json b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.runtimeconfig.json
deleted file mode 100644
index c7a4117..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/AxCopilot.runtimeconfig.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net8.0",
- "frameworks": [
- {
- "name": "Microsoft.NETCore.App",
- "version": "8.0.0"
- },
- {
- "name": "Microsoft.WindowsDesktop.App",
- "version": "8.0.0"
- }
- ],
- "configProperties": {
- "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.Framework.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.Framework.dll
deleted file mode 100644
index f9f3da9..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.Framework.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.dll
deleted file mode 100644
index fc7bada..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/DocumentFormat.OpenXml.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/FluentAssertions.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/FluentAssertions.dll
deleted file mode 100644
index b5f479e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/FluentAssertions.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Markdig.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Markdig.dll
deleted file mode 100644
index 4931e93..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Markdig.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Data.Sqlite.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Data.Sqlite.dll
deleted file mode 100644
index c5fef6d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Data.Sqlite.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CommunicationUtilities.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CommunicationUtilities.dll
deleted file mode 100644
index ca100f8..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CommunicationUtilities.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CoreUtilities.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CoreUtilities.dll
deleted file mode 100644
index 43bc3a3..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CoreUtilities.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CrossPlatEngine.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CrossPlatEngine.dll
deleted file mode 100644
index 4aadbfb..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.CrossPlatEngine.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.PlatformAbstractions.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.PlatformAbstractions.dll
deleted file mode 100644
index c341b20..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.PlatformAbstractions.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.Utilities.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.Utilities.dll
deleted file mode 100644
index e60d498..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.TestPlatform.Utilities.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.CodeCoverage.Shim.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.CodeCoverage.Shim.dll
deleted file mode 100644
index da18989..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.CodeCoverage.Shim.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.Common.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.Common.dll
deleted file mode 100644
index eb02e05..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.Common.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
deleted file mode 100644
index 0e03b13..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.dll
deleted file mode 100644
index 4a27877..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.xml b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.xml
deleted file mode 100644
index d9d574c..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Core.xml
+++ /dev/null
@@ -1,8879 +0,0 @@
-
-
-
- Microsoft.Web.WebView2.Core
-
-
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
- WebView2 enables you to host web content using the latest Microsoft Edge browser and web technology.
-
-
-
-
- Creates a CoreWebView2 object that wraps an existing COM ICoreWebView2 object.
- This allows interacting with the CoreWebView2 using .NET, even if it was originally created using COM.
-
- Pointer to a COM object that implements the ICoreWebView2 COM interface.
- Returns a .NET CoreWebView2 object that wraps the COM object.
- Thrown when the provided COM pointer is null.
- Thrown when the value is not an ICoreWebView2 COM object and cannot be wrapped.
-
-
-
- Returns the existing COM ICoreWebView2 object underlying this .NET CoreWebView2 object.
- This allows interacting with the WebView2 control using COM APIs,
- even if the control was originally created using .NET.
-
- Pointer to a COM object that implements the ICoreWebView2 COM interface.
-
-
-
- Print the current page to PDF asynchronously with the provided settings.
-
-
- See for description of settings. Passing null for printSettings results in default print settings used.
-
- Use resultFilePath to specify the path to the PDF file. The host should provide an absolute path, including file name. If the path points to an existing file, the file will be overwritten. If the path is not valid, the method fails.
-
- The async PrintToPdf operation completes when the data has been written to the PDF file. If the application exits before printing is complete, the file is not saved. Only one `Printing` operation can be in progress at a time.
- If PrintToPdf is called while a `PrintToPdf` or `PrintToPdfStream` or `Print` operation is in progress, the operation completes and returns false.
-
-
-
-
- Adds a URI and resource context filter for corresponding request sources for the event.
-
- A URI to be added to the event.
- A resource context filter to be added to the event.
- A request source filter to be added to the event.
-
-
-
- Removes a matching WebResource filter that was previously added for the event.
-
- An URI to be added to the event.
- A resource context filter to be added to the event.
- A request source filter to be added to the event.
-
-
-
- Same as , but also has support for posting DOM
- objects to page content.
-
- The web message to be posted to the top level document in
- this WebView.
- Additional DOM objects posted to the content.
-
- The event args is an instance of MessageEvent. The setting must be true or the message
- will not be sent. The event arg's data property of the event arg is the
- webMessageAsJson string parameter parsed as a JSON string into a JavaScript object.
- The event arg's source property of the event arg is a reference to the
- window.chrome.webview object. For information about sending messages from the HTML
- document in the WebView to the host, navigate to . The message is sent asynchronously. If a
- navigation occurs before the message is posted to the page, the message is not be sent.
- This additionalObjects is retrieved in web content via the DOM MessageEvent additionalObjects
- property as an array-like list of DOM objects. Currently these type of objects can be
- posted:
-
-
- .NET / WinRT
- DOM type
-
-
-
- [FileSystemHandle](https://developer.mozilla.org/docs/Web/API/FileSystemHandle)
-
-
- null
- null
-
-
- The objects are posted to web content, following the
- [structured-clone](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
- semantics, meaning only objects that can be cloned can be posted. They will also behave as
- if they had been created by the web content they are posted to. For example, if a
- FileSystemFileHandle is posted to a web content it can only be re-transferred via
- postMessage to other web content [with the same
- origin](https://fs.spec.whatwg.org/#filesystemhandle).
- Warning: An app needs to be mindful when using this API to post DOM objects as this API
- provides the web content with unusual access to sensitive Web Platform features such as
- filesystem access! Similar to PostWebMessageAsJson, the app should check the property right before posting the message to ensure the message
- and objects will only be sent to the target web content that it expects to receive the DOM
- objects. Additionally, the order of messages that are posted between PostWebMessageAsJson
- and PostWebMessageAsJsonWithAdditionalObjects may not be preserved.
-
-
-
-
-
-
- Opens the browser print preview dialog to print the current web page
-
-
-
-
- Gets the object contains various modifiable settings for the running WebView.
-
-
-
-
- Gets the URI of the current top level document.
-
-
- This value potentially changes as a part of the event raised for some cases such as navigating to a different site or fragment navigations. It remains the same for other types of navigations such as page refreshes or history.pushState with the same URL as the current page.
-
-
-
-
-
- Gets the process ID of the browser process that hosts the WebView.
-
-
-
-
- true if the WebView is able to navigate to a previous page in the navigation history.
-
-
- If CanGoBack changes value, the event is raised.
-
-
-
-
-
- true if the WebView is able to navigate to a next page in the navigation history.
-
-
- If CanGoForward changes value, the event is raised.
-
-
-
-
-
- Gets the title for the current top-level document.
-
-
- If the document has no explicit title or is otherwise empty, a default that may or may not match the URI of the document is used.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DocumentTitle":::
-
-
-
-
- Indicates if the WebView contains a fullscreen HTML element.
-
-
-
-
- NavigationStarting is raised when the WebView main frame is requesting permission to navigate to a different URI.
-
-
- Redirects raise this event as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigationStarting":::
-
-
-
-
- ContentLoading is raised before any content is loaded, including scripts added with . ContentLoading is not raised if a same page navigation occurs (such as through fragment navigations or history.pushState navigations).
-
-
- This operation follows the and events and precedes the and events.
-
-
-
-
-
-
-
-
- SourceChanged is raised when the property changes.
-
-
- SourceChanged is raised when navigating to a different site or fragment navigations. It is not raised for other types of navigations such as page refreshes or history.pushState with the same URL as the current page. This event is raised before for navigation to a new document.
-
-
-
-
-
-
- HistoryChanged is raised for changes to joint session history, which consists of top-level and manual frame navigations.
-
-
- Use HistoryChanged to verify that the or value has changed. HistoryChanged is also raised for using or . HistoryChanged is raised after and . CanGoBack is false for navigations initiated through CoreWebView2Frame APIs if there has not yet been a user gesture.
-
-
-
-
-
-
-
-
- NavigationCompleted is raised when the WebView has completely loaded (body.onload has been raised) or loading stopped with error.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigationCompleted":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DOMContentLoaded":::
-
-
-
-
- FrameNavigationStarting is raised when a child frame in the WebView requests permission to navigate to a different URI.
-
-
- Redirects raise this operation as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns.
-
-
-
-
- FrameNavigationCompleted is raised when a child frame has completely loaded (body.onload has been raised) or loading stopped with error.
-
-
-
-
- ScriptDialogOpening is raised when a JavaScript dialog (alert, confirm, prompt, or beforeunload) displays for the WebView.
-
-
- This event only is raised if the property is set to false. This event suppresses dialogs or replaces default dialogs with custom dialogs.
-
- If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed.
-
-
-
-
-
- PermissionRequested is raised when content in a WebView requests permission to access some privileged resources.
-
-
- If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed.
-
-
-
-
- ProcessFailed is raised when a WebView process ends unexpectedly or becomes unresponsive.
-
-
- ProcessFailed is raised when any of the processes in the WebView2 Process Group encounters one of the following conditions:
-
-
-
- Condition
- Details
-
-
- Unexpected exit
-
- The process indicated by the event args has exited unexpectedly (usually due to a crash). The failure might or might not be recoverable, and some failures are auto-recoverable.
-
-
-
- Unresponsiveness
-
- The process indicated by the event args has become unresponsive to user input. This is only reported for renderer processes, and will run every few seconds until the process becomes responsive again.
-
-
-
-
- Note: When the failing process is the browser process, a event will run too.
-
- Your application can use to identify which condition and process the event is for, and to collect diagnostics and handle recovery if necessary. For more details about which cases need to be handled by your application, see .
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ProcessFailed":::
-
-
-
-
- WebMessageReceived is raised when the setting is set and the top-level document of the WebView runs window.chrome.webview.postMessage or window.chrome.webview.postMessageWithAdditionalObjects.
-
-
- The postMessage function is void postMessage(object) where object is any object supported by JSON conversion.
- When postMessage is called, the handler's Invoke method will be called with the object parameter postMessage converted to a JSON string.
- If the same page calls postMessage multiple times, the corresponding WebMessageReceived events are guaranteed to be fired in the same order. However, if multiple frames call postMessage, there is no guaranteed order. In addition, WebMessageReceived events caused by calls to postMessage are not guaranteed to be sequenced with events caused by DOM APIs. For example, if the page runs
-
- chrome.webview.postMessage("message");
- window.open();
-
- then the event might be fired before the WebMessageReceived event. If you need the WebMessageReceived event to happen before anything else, then in the WebMessageReceived handler you can post a message back to the page and have the page wait until it receives that message before continuing.
-
-
-
-
- NewWindowRequested is raised when content inside the WebView requests to open a new window, such as through window.open().
-
-
- The app can pass a target WebView that is considered the opened window or mark the event as , in which case WebView2 does not open a window.
- If either Handled or properties are not set, the target content will be opened on a popup window.
- If a deferral is not taken on the event args, scripts that resulted in the new window that are requested are blocked until the event handler returns. If a deferral is taken, then scripts are blocked until the deferral is completed.
-
- On Hololens 2, if the property is not set and the property is not set to true, the WebView2 will navigate to the .
- If either of these properties are set, the WebView2 will not navigate to the and the the event will continue as normal.
-
-
-
-
- DocumentTitleChanged is raised when the property changes and may be raised before or after the event.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DocumentTitleChanged":::
-
-
-
-
-
- ContainsFullScreenElementChanged is raised when the property changes.
-
-
- An HTML element inside the WebView may enter fullscreen to the size of the WebView or leave fullscreen. This event is useful when, for example, a video element requests to go fullscreen. The listener of this event may resize the WebView in response.
-
-
-
-
-
- WebResourceRequested is raised when the WebView is performing a URL request to a matching URL and resource context filter that was added with .
-
-
- At least one filter must be added for the event to be raised.
- The web resource requested may be blocked until the event handler returns if a deferral is not taken on the event args. If a deferral is taken, then the web resource requested is blocked until the deferral is completed.
-
- If this event is subscribed in the handler it should be called after the new window is set. For more details see .
-
- This event is by default raised for file, http, and https URI schemes. This is also raised for registered custome URI schemes. See for more details.
-
-
-
-
-
- WindowCloseRequested is raised when content inside the WebView requested to close the window, such as after window.close() is run.
-
-
- The app should close the WebView and related app window if that makes sense to the app.
- After the first window.close() call, this event may not fire for any immediate back to back window.close() calls.
-
-
-
-
- Causes a navigation of the top level document to the specified URI.
-
- The URI to navigate to.
-
- For more information, navigate to [Navigation event](/microsoft-edge/webview2/concepts/navigation-events). Note that this operation starts a navigation and the corresponding event is raised sometime after Navigate runs.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Navigate":::
-
-
-
-
-
-
- Initiates a navigation to htmlContent as source HTML of a new document.
-
- A source HTML of a new document.
-
- The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank.
-
-
-
- webView.CoreWebView2.SetVirtualHostNameToFolderMapping(
- "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors);
- string htmlContent =
- @"
-
-
-
-
-
- ";
- webview.NavigateToString(htmlContent);
-
-
-
-
-
-
-
-
- Adds the provided JavaScript to a list of scripts that should be run after the global object has been created, but before the HTML document has been parsed and before any other script included by the HTML document is run.
-
- The JavaScript code to be run.
- A script ID that may be passed when calling .
-
- The injected script will apply to all future top level document and child frame navigations until removed with .
- This is applied asynchronously and you must wait for the returned to complete before you can be sure that the script is ready to execute on future navigations.
- If the method is run in handler, it should be called before the new window is set. For more details see .
-
- Note that if an HTML document has sandboxing of some kind via [sandbox](https://developer.mozilla.org/docs/Web/HTML/Element/iframe#attr-sandbox) properties or the [Content-Security-Policy HTTP header](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy) this will affect the script run here. So, for example, if the allow-modals keyword is not set then calls to the alert function will be ignored.
-
-
-
-
-
- Removes the corresponding JavaScript added via with the specified script ID.
-
- The ID corresponds to the JavaScript code to be removed from the list of scripts.
- Both use and this method in handler at the same time sometimes causes trouble. Since invalid scripts will be ignored, the script IDs you got may not be valid anymore.
-
-
-
- Runs JavaScript code from the javaScript parameter in the current top-level document rendered in the WebView.
-
- The JavaScript code to be run in the current top-level document rendered in the WebView.
- A JSON encoded string that represents the result of running the provided JavaScript.
-
- If the result is undefined, contains a reference cycle, or otherwise is not able to be encoded into JSON, the JSON null value is returned as the "null" string.
-
- A function that has no explicit return value returns undefined. If the script that was run throws an unhandled exception, then the result is also null. This method is applied asynchronously. If the method is run after the event during a navigation, the script runs in the new document when loading it, around the time is run. This operation works even if is set to false.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ExecuteScript":::
-
-
-
-
-
- Captures an image of what WebView is displaying.
-
- The format of the image to be captured.
- The stream to which the resulting image binary data is written.
-
- When CapturePreviewAsync finishes writing to the stream, the Invoke method on the provided handler parameter is called. This method fails if called before the first event. For example if this is called in the event for the first navigation it will fail. For subsequent navigations, the method may not fail, but will not capture an image of a given webpage until the event has been fired for it. Any call to this method prior to that will result in a capture of the page being navigated away from.
-
-
-
-
-
- Reloads the current page.
-
-
- This is similar to navigating to the URI of current top level document including all navigation events firing and respecting any entries in the HTTP cache. But, the back or forward history will not be modified.
-
-
-
-
- Posts the specified webMessageAsJson to the top level document in this WebView.
-
- The web message to be posted to the top level document in this WebView.
-
- The event args is an instance of MessageEvent. The setting must be true or the message will not be sent. The event arg's data property of the event arg is the webMessageAsJson string parameter parsed as a JSON string into a JavaScript object. The event arg's source property of the event arg is a reference to the window.chrome.webview object. For information about sending messages from the HTML document in the WebView to the host, navigate to . The message is sent asynchronously. If a navigation occurs before the message is posted to the page, the message is not be sent.
-
-
- Runs the message event of the window.chrome.webview of the top-level document. JavaScript in that document may subscribe and unsubscribe to the event using the following code:
-
- window.chrome.webview.addEventListener('message', handler)
- window.chrome.webview.removeEventListener('message', handler)
-
-
-
-
-
-
-
-
- Posts a message that is a simple string rather than a JSON string representation of a JavaScript object.
-
- The web message to be posted to the top level document in this WebView.
-
- This behaves in exactly the same manner as , but the data property of the event arg of the window.chrome.webview message is a string with the same value as webMessageAsString. Use this instead of if you want to communicate using simple strings rather than JSON objects.
-
-
-
-
-
-
- Runs an asynchronous DevToolsProtocol method.
-
- The full name of the method in the format {domain}.{method}.
- A JSON formatted string containing the parameters for the corresponding method.
- A JSON string that represents the method's return object.
-
- For more information about available methods, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs). The returned task is completed when the method asynchronously completes and will return the method's return object as a JSON string. Note even though WebView2 dispatches the CDP messages in the order called, CDP method calls may be processed out of order. If you require CDP methods to run in a particular order, you should await for the previous method call.
-
- If the method is to run in handler it should be called
- before the new window is set if the cdp messages should affect the initial navigation. If
- called after setting the NewWindow property, the cdp messages
- may or may not apply to the initial navigation and may only apply to the subsequent navigation.
- For more details .
-
-
-
-
- Navigates the WebView to the previous page in the navigation history.
-
-
-
-
- Navigates the WebView to the next page in the navigation history.
-
-
-
-
- Gets a DevTools Protocol event receiver that allows you to subscribe to a DevToolsProtocol event.
-
- The full name of the event in the format {domain}.{event}.
- A Devtools Protocol event receiver.
-
- For more information about DevToolsProtocol events description and event args, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs).
-
-
-
-
- Stops all navigations and pending resource fetches.
-
-
- Does not stop scripts.
-
-
-
-
- Adds the provided host object to script running in the WebView with the specified name.
-
- The name of the host object.
- The host object to be added to script.
-
- Host objects are exposed as host object proxies via window.chrome.webview.hostObjects.{name}. Host object proxies are promises and will resolve to an object representing the host object. Only the COM visible objects/properties/methods can be accessed from script.
- The app can control which part of .NET objects are exposed using .
-
- JavaScript code in the WebView will be able to access appObject as following and then access attributes and methods of appObject.
-
- Note that while simple types, IDispatch and array are supported, and IUnknown objects that also implement IDispatch are treated as IDispatch, generic IUnknown, VT_DECIMAL, or VT_RECORD variant is not supported. Remote JavaScript objects like callback functions are represented as an VT_DISPATCH VARIANT with the object implementing IDispatch. The JavaScript callback method may be invoked using DISPID_VALUE for the DISPID. Such callback method invocations will return immediately and will not wait for the JavaScript function to run and so will not provide the return value of the JavaScript function. Nested arrays are supported up to a depth of 3. Arrays of by reference types are not supported. VT_EMPTY and VT_NULL are mapped into JavaScript as null. In JavaScript null and undefined are mapped to VT_EMPTY.
-
- Additionally, all host objects are exposed as window.chrome.webview.hostObjects.sync.{name}. Here the host objects are exposed as synchronous host object proxies. These are not promises and calls to functions or property access synchronously block running script waiting to communicate cross process for the host code to run. Accordingly this can result in reliability issues and it is recommended that you use the promise based asynchronous window.chrome.webview.hostObjects.{name} API described above.
-
- Synchronous host object proxies and asynchronous host object proxies can both proxy the same host object. Remote changes made by one proxy will be reflected in any other proxy of that same host object whether the other proxies and synchronous or asynchronous.
-
- While JavaScript is blocked on a synchronous call to native code, that native code is unable to call back to JavaScript. Attempts to do so will fail with HRESULT_FROM_WIN32(ERROR_POSSIBLE_DEADLOCK).
-
- Host object proxies are JavaScript Proxy objects that intercept all property get, property set, and method invocations. Properties or methods that are a part of the Function or Object prototype are run locally. Additionally any property or method in the array chrome.webview.hostObjects.options.forceLocalProperties will also be run locally. This defaults to including optional methods that have meaning in JavaScript like toJSON and Symbol.toPrimitive. You can add more to this array as required.
-
- There's a method chrome.webview.hostObjects.cleanupSome that will best effort garbage collect host object proxies.
-
- The chrome.webview.hostObjects.options object provides the ability to change some functionality of host objects.
-
-
-
- Options property
- Details
-
-
- forceLocalProperties
-
- This is an array of host object property names that will be run locally, instead of being called on the native host object. This defaults to then, toJSON, Symbol.toString, and Symbol.toPrimitive. You can add other properties to specify that they should be run locally on the JavaScript host object proxy.
-
-
-
- log
-
- This is a callback that will be called with debug information. For example, you can set this to console.log.bind(console) to have it print debug information to the console to help when troubleshooting host object usage. By default this is null.
-
-
-
- shouldSerializeDates
-
- By default this is false, and JavaScript Date objects will be sent to host objects as a string using JSON.stringify. You can set this property to true to have Date objects properly serialize as a System.DateTime when sending to the .NET host object, and have System.DateTime properties and return values create a JavaScript Date object.
-
-
-
- defaultSyncProxy
-
- When calling a method on a synchronous proxy, the result should also be a synchronous proxy. But in some cases, the sync/async context is lost (for example, when providing to native code a reference to a function, and then calling that function in native code). In these cases, the proxy will be asynchronous, unless this property is set.
-
-
-
- forceAsyncMethodMatches
-
- This is an array of regular expressions. When calling a method on a synchronous proxy, the method call will be performed asynchronously if the method name matches a string or regular expression in this array. Setting this value to Async will make any method that ends with Async be an asynchronous method call. If an async method doesn't match here and isn't forced to be asynchronous, the method will be invoked synchronously, blocking execution of the calling JavaScript and then returning the resolution of the promise, rather than returning a promise.
-
-
-
- ignoreMemberNotFoundError
-
- By default, an exception is thrown when attempting to get the value of a proxy property that doesn't exist on the corresponding native class. Setting this property to true switches the behavior to match Chakra WinRT projection (and general JavaScript) behavior of returning undefined with no error.
-
-
-
- shouldPassTypedArraysAsArrays
-
- By default, typed arrays are passed to the host as IDispatch. To instead pass typed arrays to the host as array, set this to true.
-
-
-
-
- Host object proxies additionally have the following methods:
-
-
-
- Method name
- Details
-
-
- applyHostFunction, getHostProperty, setHostProperty
-
- Perform a method invocation, property get, or property set on the host object. You can use these to explicitly force a method or property to run remotely if there is a conflicting local method or property. For instance, proxy.toString() will run the local toString method on the proxy object. But proxy.applyHostFunction('toString') runs toString on the host proxied object instead.
-
-
-
- getLocalProperty, setLocalProperty
-
- Perform property get, or property set locally. You can use these methods to force getting or setting a property on the host object proxy itself rather than on the host object it represents. For instance, proxy.unknownProperty will get the property named unknownProperty from the host proxied object. But proxy.getLocalProperty('unknownProperty') will get the value of the property unknownProperty on the proxy object itself.
-
-
-
- addEventListener
-
- This method only exists on proxies for .NET objects. Bind the JavaScript handler to the C# event, so that the JavaScript handler can be called through the C# event. For example, chrome.webview.hostObjects.sample.addEventListener('TestEvent', () => { alert('Invoked from remote');}); bind an anonymous JavaScript function to a C# event called 'TestEvent'. When calling TestEvent?.Invoke() on C# side, the JavaScript function that was just bound will be called asynchronously. It allows adding more than one handler for an event, but if the handler is already in the list of event handler, it will not be added a second time. If the host object cannot find the event with the name passed in by the addEventListener function or it is no public or its return type is not void, an exception will be thrown. If the count and type of C# event's parameters do not match the count and type of JavaScript handler, invoke addEventListener will be successful but an exception will be passed to JavaScript when invoke the event on C# side. If the host object has defined addEventListener function, use the defined function rather than the additionally addEventListener function.
-
-
-
- removeEventListener
-
- This method only exists on proxies for .NET objects. Removes a handler previously bound with addEventListener(). If the handler does not exist in the list of event handler, nothing will happen. If the host object cannot find the event with the name passed in by the removeEventListener function or it is no public, an exception will be thrown. If the host object has defined removeEventListener function, use the defined function rather than the additionally removeEventListener function.
-
-
-
- sync
-
- Asynchronous host object proxies expose a sync method which returns a promise for a synchronous host object proxy for the same host object. For example, chrome.webview.hostObjects.sample.methodCall() returns an asynchronous host object proxy. You can use the sync method to obtain a synchronous host object proxy instead:
- const syncProxy = await chrome.webview.hostObjects.sample.methodCall().sync()
-
-
-
- async
-
- Synchronous host object proxies expose an async method which blocks and returns an asynchronous host object proxy for the same host object. For example, chrome.webview.hostObjects.sync.sample.methodCall() returns a synchronous host object proxy. Calling the async method on this blocks and then returns an asynchronous host object proxy for the same host object: const asyncProxy = chrome.webview.hostObjects.sync.sample.methodCall().async()
-
-
-
- then
-
- Asynchronous host object proxies have a then method. This allows them to be awaitable. then will return a promise that resolves with a representation of the host object. If the proxy represents a JavaScript literal then a copy of that is returned locally. If the proxy represents a function then a non-awaitable proxy is returned. If the proxy represents a JavaScript object with a mix of literal properties and function properties, then the a copy of the object is returned with some properties as host object proxies.
-
-
-
- cancelPromise
-
- This method attempts to cancel the fulfillment of a promised value. If the promise hasn't already been fulfilled and cancelation is supported, the promise will get rejected. cancelPromise supports cancelation of IAsyncOperation and IAsyncAction methods. If the promise is successfully canceled, then calling await on the promise will throw. For example, chrome.webview.hostObjects.cancelPromise(promise); await promise; will throw with "Promise Canceled". Once a promise has been canceled, a subsequent cancel on the same promise will throw an exception as well.
-
-
-
-
- All other property and method invocations (other than the above Remote object proxy methods, forceLocalProperties list, and properties on Function and Object prototypes) are run remotely. Asynchronous host object proxies return a promise representing asynchronous completion of remotely invoking the method, or getting the property. The promise resolves after the remote operations complete and the promises resolve to the resulting value of the operation. Synchronous host object proxies work similarly but block JavaScript execution and wait for the remote operation to complete.
-
- Setting a property on an asynchronous host object proxy works slightly differently. The set returns immediately and the return value is the value that will be set. This is a requirement of the JavaScript Proxy object. If you need to asynchronously wait for the property set to complete, use the setHostProperty method which returns a promise as described above. Synchronous object property set property synchronously blocks until the property is set.
-
- Exposing host objects to script has security risk. Please follow [best practices](/microsoft-edge/webview2/concepts/security).
-
-
- To create a [IDispatch](/windows/win32/api/oaidl/nn-oaidl-idispatch) implementing class in C# use the following attributes on each class you intend to expose.
-
- // Bridge and BridgeAnotherClass are C# classes that implement IDispatch and works with AddHostObjectToScript.
- [ClassInterface(ClassInterfaceType.AutoDual)]
- [ComVisible(true)]
- public class BridgeAnotherClass
- {
- // Sample property.
- public string Prop { get; set; } = "Example";
- }
-
- [ClassInterface(ClassInterfaceType.AutoDual)]
- [ComVisible(true)]
- public class Bridge
- {
- public string Func(string param)
- {
- return "Example: " + param;
- }
-
- public BridgeAnotherClass AnotherObject { get; set; } = new BridgeAnotherClass();
-
- // Sample indexed property.
- [System.Runtime.CompilerServices.IndexerName("Items")]
- public string this[int index]
- {
- get { return m_dictionary[index]; }
- set { m_dictionary[index] = value; }
- }
- private Dictionary<int, string> m_dictionary = new Dictionary<int, string>();
- }
-
- Then add instances of those classes via :
-
- webView.CoreWebView2.AddHostObjectToScript("bridge", new Bridge());
-
- And then in script you can call the methods, and access those properties of the objects added via .
- Note that `CoreWebView2.AddHostObjectToScript` only applies to the top-level document and not to frames. To add host objects to frames use `CoreWebView2Frame.AddHostObjectToScript`.
-
- // Find added objects on the hostObjects property
- const bridge = chrome.webview.hostObjects.bridge;
-
- // Call a method and pass in a parameter.
- // The result is another proxy promise so you must await to get the result.
- console.log(await bridge.Func("testing..."));
-
- // A property may be another object as long as its class also implements
- // IDispatch.
- // Getting a property also gets a proxy promise you must await.
- const propValue = await bridge.AnotherObject.Prop;
- console.log(propValue);
-
- // Indexed properties
- let index = 123;
- bridge[index] = "test";
- let result = await bridge[index];
- console.log(result);
-
-
-
-
-
-
- Removes the host object specified by the name so that it is no longer accessible from JavaScript code in the WebView.
-
- The name of the host object to be removed.
-
- While new access attempts are denied, if the object is already obtained by JavaScript code in the WebView, the JavaScript code continues to have access to that object. Running this method for a name that is already removed or never added fails.
-
-
-
-
- Opens the DevTools window for the current document in the WebView.
-
-
- Does nothing if run when the DevTools window is already open.
-
-
-
-
-
-
-
- Warning: This method and are deprecated.
-
- Removes a matching WebResource filter that was previously added for the event.
- An URI to at which a web resource filter was added.
- A previously added resource context filter to be removed.
- A filter that was never added.
-
- If the same filter was added multiple times, then it must need to be removed as many times as it was added for the removal to be effective.
-
-
-
-
-
- Gets the object associated with this .
-
-
-
-
-
- Exposes the used to create this .
-
-
-
-
- WebResourceResponseReceived is raised when the WebView receives the response for a request for a web resource (any URI resolution performed by the WebView; such as HTTP/HTTPS, file and data requests from redirects, navigations, declarations in HTML, implicit Favicon lookups, and fetch API usage in the document).
-
-
- The host app can use this event to view the actual request and response for a web resource. There is no guarantee about the order in which the WebView processes the response and the host app's handler runs. The app's handler will not block the WebView from processing the response.
- The event args include the as sent by the wire and received, including any additional headers added by the network stack that were not be included as part of the associated event, such as Authentication headers.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebResourceResponseReceived":::
-
-
-
-
- DOMContentLoaded is raised when the initial HTML document has been parsed.
-
-
- This aligns with the the document's DOMContentLoaded event in HTML.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DOMContentLoaded":::
-
-
-
-
- Navigates using a constructed object.
-
- The constructed web resource object to provide post data or additional request headers during navigation.
-
- The headers in the override headers added by WebView2 runtime except for Cookie headers. Method can only be either GET or POST. Provided post data will only be sent only if the method is POST and the uri scheme is HTTP(S).
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NavigateWithWebResourceRequest":::
-
-
-
-
- Whether WebView is suspended.
-
-
- True when WebView is suspended, from the time when has completed successfully until WebView is resumed.
-
-
-
-
- An app may call this API to have the WebView2 consume less memory.
-
-
- This is useful when a Win32 app becomes invisible, or when a Universal Windows Platform app is being suspended, during the suspended event handler before completing the suspended event.
-
- The property must be false when the API is called. Otherwise, the API throws COMException with error code of HRESULT_FROM_WIN32(ERROR_INVALID_STATE).
-
- Suspending is similar to putting a tab to sleep in the Edge browser. Suspending pauses WebView script timers and animations, minimizes CPU usage for the associated browser renderer process and allows the operating system to reuse the memory that was used by the renderer process for other processes.
-
- Note that Suspend is best effort and considered completed successfully once the request is sent to browser renderer process. If there is a running script, the script will continue to run and the renderer process will be suspended after that script is done.
-
- See [Sleeping Tabs FAQ](https://techcommunity.microsoft.com/t5/articles/sleeping-tabs-faq/m-p/1705434) for conditions that might prevent WebView from being suspended. In those situations, the result of the async task is false.
-
- The WebView will be automatically resumed when it becomes visible. Therefore, the app normally does not have to call explicitly.
-
- The app can call and then periodically for an invisible WebView so that the invisible WebView can sync up with latest data and the page ready to show fresh content when it becomes visible.
-
- All WebView APIs can still be accessed when a WebView is suspended. Some APIs like Navigate will auto resume the WebView. To avoid unexpected auto resume, check property before calling APIs that might change WebView state.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="TrySuspend":::
-
-
-
-
- Resumes the WebView so that it resumes activities on the web page.
-
-
- This API can be called while the WebView2 controller is invisible.
-
- The app can interact with the WebView immediately after .
-
- WebView will be automatically resumed when it becomes visible.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Resume":::
-
-
-
-
- Sets a mapping between a virtual host name and a folder path to make available to web sites via that host name.
-
- A virtual host name.
- A folder path name to be mapped to the virtual host name. The length must not exceed the Windows MAX_PATH limit.
- The level of access to resources under the virtual host from other sites.
-
-
- After setting the mapping, documents loaded in the WebView can use HTTP or HTTPS URLs at the specified host name specified by hostName to access files in the local folder specified by folderPath.
- This mapping applies to both top-level document and iframe navigations as well as subresource references from a document. This also applies to dedicated and shared worker scripts but does not apply to service worker scripts.
-
- Due to a current implementation limitation, media files accessed using virtual host name can be very slow to load.
-
- As the resource loaders for the current page might have already been created and running, changes to the mapping might not be applied to the current page and a reload of the page is needed to apply the new mapping.
-
- Both absolute and relative paths are supported for folderPath. Relative paths are interpreted as relative to the folder where the exe of the app is in.
-
-
- For example, after calling SetVirtualHostNameToFolderMapping("appassets.example", "assets", CoreWebView2HostResourceAccessKind.Deny);, navigating to https://appassets.example/my-local-file.html will show content from my-local-file.html in the assets subfolder located on disk under the same path as the app's executable file.
-
- DOM elements that want to reference local files will have their host reference virtual host in the source. If there are multiple folders being used, define one unique virtual host per folder.
-
-
- You should typically choose virtual host names that are never used by real sites.
- If you own a domain such as example.com, another option is to use a subdomain reserved for the app (like my-app.example.com).
-
-
- [RFC 6761](https://tools.ietf.org/html/rfc6761) has reserved several special-use domain names that are guaranteed to not be used by real sites (for example, .example, .test, and .invalid).
-
-
- Note that using .local as the top-level domain name will work but can cause a delay during navigations. You should avoid using .local if you can.
-
-
- Apps should use distinct domain names when mapping folder from different sources that should be isolated from each other. For instance, the app might use app-file.example for files that ship as part of the app, and book1.example might be used for files containing books from a less trusted source that were previously downloaded and saved to the disk by the app.
-
-
- The host name used in the APIs is canonicalized using Chromium's host name parsing logic before being used internally.
- For more information see [HTML5 2.6 URLs](https://dev.w3.org/html5/spec-LC/urls.html).
-
-
- All host names that are canonicalized to the same string are considered identical.
- For example, EXAMPLE.COM and example.com are treated as the same host name.
- An international host name and its Punycode-encoded host name are considered the same host name. There is no DNS resolution for host name and the trailing '.' is not normalized as part of canonicalization.
-
-
- Therefore example.com and example.com. are treated as different host names. Similarly, virtual-host-name and virtual-host-name.example.com are treated as different host names even if the machine has a DNS suffix of example.com.
-
-
- Specify the minimal cross-origin access necessary to run the app. If there is not a need to access local resources from other origins, use .
-
-
-
-
- webView.CoreWebView2.SetVirtualHostNameToFolderMapping(
- "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors);
- webView.Source = new Uri("https://appassets.example/index.html");
-
-
- This in an example on how to embed a local image. For more information see .
-
- webView.CoreWebView2.SetVirtualHostNameToFolderMapping(
- "appassets.example", "assets", CoreWebView2HostResourceAccessKind.DenyCors);
- string c_navString = "";
- webview.NavigateToString(c_navString);
-
-
-
-
-
-
- Clears a host name mapping for local folder that was added by .
-
- The host name to be removed from the mapping.
-
-
-
-
- FrameCreated is raised when a new iframe is created. Handle this event to get access to objects.
-
-
-
- Use the to listen for when this iframe goes away.
-
-
-
-
- DownloadStarting is raised when a download has begun, blocking the default download dialog, but not blocking the progress of the download.
-
-
- The host can choose to cancel a download, change the result file path, and hide the default download dialog. If download is not handled or canceled, the download is saved to the default path after the event completes with default download dialog shown.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DownloadStarting":::
-
-
-
-
- ClientCertificateRequested is raised when WebView2 is making a request to an HTTP server that needs a client certificate for HTTP authentication. Read more about HTTP client certificates at [RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3](https://tools.ietf.org/html/rfc8446).
-
-
- The host have several options for responding to client certificate requests:
-
-
-
- Scenario
- Handled
- Cancel
- SelectedCertificate
-
-
- Respond to server with a certificate
- True
- False
- MutuallyTrustedCertificate value
-
-
- Respond to server without certificate
- True
- False
- null
-
-
- Display default client certificate selection dialog prompt
- False
- False
- n/a
-
-
- Cancel the request
- n/a
- True
- n/a
-
-
-
- If the host don't handle the event, WebView2 will show the default client certificate selection dialog prompt to the user.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClientCertificateRequested1":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClientCertificateRequested2":::
-
-
-
-
- Opens the Browser Task Manager view as a new window in the foreground.
-
-
- If the Browser Task Manager is already open, this will bring it into the foreground. WebView2 currently blocks the Shift+Esc shortcut for opening the task manager. An end user can open the browser task manager manually via the Browser task manager entry of the DevTools window's title bar's context menu.
-
-
-
-
- Indicates whether all audio output from this CoreWebView2 is muted or not. Set to true will mute this CoreWebView2, and set to false will unmute this CoreWebView2. true if audio is muted.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleIsMuted":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="UpdateTitleWithMuteState":::
-
-
-
-
- Indicates whether any audio output from this CoreWebView2 is playing. true if audio is playing even if is true.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="UpdateTitleWithMuteState":::
-
-
-
-
- IsMutedChanged is raised when the mute state changes.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="IsMutedChanged":::
-
-
-
-
- IsDocumentPlayingAudioChanged is raised when document starts or stops playing audio.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="IsDocumentPlayingAudioChanged":::
-
-
-
-
- True if the default download dialog is currently open.
-
-
- The value of this property changes only when the default download dialog is explicitly opened or closed. Hiding the WebView implicitly hides the dialog, but does not change the value of this property.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleDefaultDownloadDialog":::
-
-
-
-
- The default download dialog corner alignment.
-
-
- The dialog can be aligned to any of the WebView corners (see ). When the WebView or dialog changes size, the dialog keeps it position relative to the corner. The dialog may become partially or completely outside of the WebView bounds if the WebView is small enough. Set the margin from the corner with the property. The corner alignment and margin should be set during initialization to ensure that they are correctly applied when the layout is first computed, otherwise they will not take effect until the next time the WebView position or size is updated.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SetDefaultDownloadDialogPosition":::
-
-
-
-
- The default download dialog margin relative to the WebView corner specified by .
-
-
- The margin is a point that describes the vertical and horizontal distances between the chosen WebView corner and the default download dialog corner nearest to it. Positive values move the dialog towards the center of the WebView from the chosen WebView corner, and negative values move the dialog away from it. Use (0, 0) to align the dialog to the WebView corner with no margin. The corner alignment and margin should be set during initialization to ensure that they are correctly applied when the layout is first computed, otherwise they will not take effect until the next time the WebView position or size is updated.
-
-
-
-
- Raised when the property changes.
-
-
- This event comes after the event. Setting the property disables the default download dialog and ensures that this event is never raised.
-
-
-
-
- Open the default download dialog.
-
-
- If the dialog is opened before there are recent downloads, the dialog shows all past downloads for the current profile. Otherwise, the dialog shows only the recent downloads with a "See more" button for past downloads. Calling this method raises the event if the dialog was closed. No effect if the dialog is already open.
-
-
-
-
- Close the default download dialog.
-
-
- Calling this method raises the event if the dialog was open. No effect if the dialog is already closed.
-
-
-
-
- BasicAuthenticationRequested event is raised when WebView encounters a Basic HTTP Authentication request as described in https://developer.mozilla.org/docs/Web/HTTP/Authentication, a Digest HTTP Authentication request as described in https://developer.mozilla.org/docs/Web/HTTP/Headers/Authorization#digest, an NTLM authentication or a Proxy Authentication request.
-
-
- The host can provide a response with credentials for the authentication or cancel the request. If the host sets the Cancel property to false but does not provide either UserName or Password properties on the Response property, then WebView2 will show the default authentication challenge dialog prompt to the user.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BasicAuthenticationRequested":::
-
-
-
-
- ContextMenuRequested is raised when a context menu is requested by the user and the content inside WebView hasn't disabled context menus.
-
-
- The host has the option to create their own context menu with the information provided in the event or can add items to or remove items from WebView context menu. If the host doesn't handle the event, WebView will display the default context menu.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="CustomContextMenu":::
-
-
-
-
- Runs an asynchronous DevToolsProtocol method for a specific session of an attached target.
-
- The sessionId for an attached target. null or empty string is treated as the session for the default target for the top page.
- The full name of the method in the format {domain}.{method}.
- A JSON formatted string containing the parameters for the corresponding method.
- A JSON string that represents the method's return object.
-
- There could be multiple DevToolsProtocol targets in a WebView.
- Besides the top level page, iframes from different origin and web workers are also separate targets.
- Attaching to these targets allows interaction with them.
- When the DevToolsProtocol is attached to a target, the connection is identified by a sessionId.
-
- To use this API, you must set the flatten parameter to true when calling Target.attachToTarget or Target.setAutoAttachDevToolsProtocol method.
- Using Target.setAutoAttach is recommended as that would allow you to attach to dedicated worker targets, which are not discoverable via other APIs like Target.getTargets.
- For more information about targets and sessions, navigate to [Chrome DevTools Protocol - Target domain]( https://chromedevtools.github.io/devtools-protocol/tot/Target).
-
- For more information about available methods, navigate to [DevTools Protocol Viewer](https://aka.ms/DevToolsProtocolDocs). The handler's Invoke method will be called when the method asynchronously completes. Invoke will be called with the method's return object as a JSON string.
-
-
-
-
- The current text of the statusbar as defined by [Window.statusbar](https://developer.mozilla.org/docs/Web/API/Window/statusbar).
-
-
-
-
- StatusBarTextChanged event is raised when the text in the [Window.statusbar](https://developer.mozilla.org/docs/Web/API/Window/statusbar) changes. When the event is fired use the property to get the current statusbar text.
-
-
- Events which cause causes can be anything from hover, url events, and others. There is not a finite list on how to cause the statusbar to change.
- The developer must create the status bar and set the text.
-
-
-
-
- The associated object of .
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="Profile":::
-
-
-
-
- The ServerCertificateErrorDetected event is raised when the WebView2 cannot verify server's digital certificate while loading a web page.
-
-
- This event will raise for all web resources and follows the event.
-
- If you don't handle the event, WebView2 will show the default TLS interstitial error page to the user for navigations, and for non-navigations the web request is cancelled.
-
- Note that WebView2 before raising `ServerCertificateErrorDetected` raises a event with as FALSE and any of the below WebErrorStatuses that indicate a certificate failure.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- For more details see and handle ServerCertificateErrorDetected event or show the default TLS interstitial error page to the user according to the app needs.
-
- WebView2 caches the response when action is for the RequestUri's host and the server certificate in the session and the event won't be raised again.
-
- To raise the event again you must clear the cache using .
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ServerCertificateErrorDetected":::
-
-
-
-
- Clears all cached decisions to proceed with TLS certificate errors from the event for all WebView2's sharing the same session.
-
-
-
-
- Get the Uri as a string of the current Favicon. This will be an empty string if the page does not have a Favicon.
-
-
-
-
- Raised when the Favicon has changed. This can include when a new page is loaded and thus by default no icon is set or the icon is set for the page by DOM or JavaScript.
-
-
- The first argument is the Webview2 which saw the changed Favicon and the second is null.
-
-
-
-
- Get the downloaded Favicon image for the current page and copy it to the image stream.
-
- The format to retrieve the Favicon in.
-
- An IStream populated with the downloaded Favicon.
-
-
-
-
- Print the current web page asynchronously to the specified printer with the provided settings.
-
-
- See for description of settings. Passing null for printSettings results in default print settings used.
-
- The method will return as if printerName doesn't match with the name of any installed printers on the user OS.
- The method will throw ArgumentException if the caller provides invalid settings for a given printer.
-
- The async Print operation completes when it finishes printing to the printer. Only one Printing operation can be in progress at a time. If Print is called while a or or job is in progress, throws exception. This is only for printing operation on one webview.
-
-
-
- Error
- PrintStatus
- Notes
-
-
- No
-
- Print operation succeeded.
-
-
- No
-
- If specified printer is not found or printer status is not available, offline or error state.
-
-
- No
-
- Print operation is failed.
-
-
- ArgumentException
-
- If the caller provides invalid settings for the specified printer.
-
-
- Exception
-
- Print operation is failed as printing job already in progress.
-
-
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PrintToPrinter":::
-
-
-
-
- Opens the print dialog to print the current web page.
-
-
- See for descriptions of print dialog kinds.
-
- Invoking browser or system print dialog doesn't open new print dialog if it is already open.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ShowPrintUI":::
-
-
-
-
- Provides the Pdf data of current web page asynchronously for the provided settings.
-
-
- Stream will be rewound to the start of the pdf data.
-
- See for description of settings. Passing null for printSettings results in default print settings used.
-
- The async PrintToPdfStream operation completes when it finishes writing to the stream. Only one Printing operation can be in progress at a time. If is called while a or or job is in progress, the throws an exception. This is only for printing operation on one webview.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PrintToPdfStream":::
-
-
-
-
- Share a shared buffer object with script of the main frame in the WebView.
-
- The object to be shared with script.
- The desired given to script.
- Additional data to be send to script. If it is not null or empty string, and it is not a valid JSON string, will be thrown.
-
- The script will receive a sharedbufferreceived event from chrome.webview.
- The event arg for that event will have the following methods and properties.
-
-
-
- Property
- Description
-
-
- getBuffer()
- A method that returns an ArrayBuffer object with the backing content from the shared buffer.
-
-
- additionalData
- An object as the result of parsing additionalDataAsJson as JSON string. This property will be undefined if additionalDataAsJson is nullptr or empty string.
-
-
- source
- With a value set as chrome.webview object.
-
-
-
- If access is , the script will only have read access to the buffer.
- If the script tries to modify the content in a read only buffer, it will cause an access violation in WebView renderer process and crash the renderer process.
-
- If the shared buffer is already closed, the API throws with error code of RO_E_CLOSED.
- The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access to the shared buffer any more.
-
- The application can post the same shared buffer object to multiple web pages or iframes, or post to the same web page or iframe multiple times.
- Each PostSharedBufferToScript will create a separate ArrayBuffer object with its own view of the memory and is separately released.
- The underlying shared memory will be released when all the views are released.
-
- Sharing a buffer to script has security risk. You should only share buffer with trusted site.
- If a buffer is shared to a untrusted site, possible sensitive information could be leaked.
- If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way, it could result in corrupted data that might even crash the application.
-
- The example code shows how to send data to script for one time read only consumption.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="OneTimeShareBuffer":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_1":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_2":::
-
-
-
-
- LaunchingExternalUriScheme is raised when a navigation request is made to a URI scheme that is registered with the OS.
-
-
- The event handler may suppress the default dialog or replace the default dialog with a custom dialog.
- If a is not taken on the event args, the external URI scheme launch is blocked until the event handler returns.
- If a deferral is taken, the external URI scheme launch is blocked until the is completed.
- The host also has the option to cancel the URI scheme launch.
-
- The and events will be raised, regardless of whether the property is set to true or false.
- The event will be raised with the property set to false and the property set to regardless of whether the host sets the property.
- The , and events will not be raised for this navigation to the external URI scheme regardless of the property.
- The event will be raised after the event and before the event.
-
- The default will also be updated upon navigation to an external URI scheme.
- If a setting on the interface has been changed, navigating to an external URI scheme will trigger the to update.
-
- The WebView2 may not display the default dialog based on user settings, browser settings, and whether the origin is determined as a [trustworthy origin](https://w3c.github.io/webappsec-secure-contexts#potentially-trustworthy-origin); however, the event will still be raised.
- If the request is initiated by a cross-origin frame without a user gesture, the request will be blocked and the `LaunchingExternalUriScheme` event will not be raised. A URI scheme may be blocked for safety reasons. In this case the `LaunchingExternalUriScheme` event will not be raised. The default dialog may show an "always allow" checkbox which allows the user to opt-in to relaxed security (i.e. skipping future default dialogs) for the combination of the URI scheme and the origin of the page initiating this external URI scheme launch. The checkbox is offered so long as the group policy to show the checkbox is not explicitly disabled and there is a trustworthy initiating origin. If the user has checked this box, future attempts to launch this URI scheme will still raise the event.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="LaunchingExternalUriScheme":::
-
-
-
-
- Desired of a WebView.
-
-
- An app may set to indicate desired memory consumption level of WebView.
- Scripts will not be impacted and continue to run.
- This is useful for inactive apps that still want to run scripts and/or keep network connections alive and therefore could not call and to reduce memory consumption.
- These apps can set memory usage target level to when the app becomes inactive, and set back to when the app becomes active.
-
- It is not necessary to set CoreWebView2Controller's IsVisible property to false when setting the property.
-
- It is a best effort operation to change memory usage level, and the API will return before the operation completes.
-
- Setting the level to could potentially cause memory for some WebView browser processes to be swapped out to disk in some circumstances. It is a best effort to reduce memory usage as much as possible.
- If a script runs after its related memory has been swapped out, the memory will be swapped back in to ensure the script can still run, but performance might be impacted.
- Therefore, the app should set the level back to when the app becomes active again. Setting memory usage target level back to normal will not happen automatically.
-
- An app should choose to use either the combination of and or the combination of setting MemoryUsageTargetLevel to and . It is not advisable to mix them.
- Trying to set while suspended will be ignored.
- The and methods will change the .
- will automatically set to while on suspended WebView will automatically set to .
- Calling when the WebView is not suspended would not change .
-
-
-
-
- The unique identifier of the main frame. It's the same kind of ID as with the and .
-
-
- FrameId may not be valid if has not done any navigation. It's safe to get this value during or after the first event. Otherwise, it could return the invalid frame Id 0.
-
-
-
-
- Runs JavaScript code from the javaScript parameter in the current top-level document rendered in the WebView, The result of the execution is returned asynchronously in the object which has methods and properties to obtain the successful result of script execution as well as any unhandled JavaScript exceptions.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ExecuteScriptWithResult":::
-
-
-
-
- NotificationReceived is raised when a non-persistent notification is received.
-
-
-
-
- SaveAsUIShowing is raised when browser trys to open a save as dialog. It includes opening dialog manually from context menu or programmatically from .
-
-
-
-
-
- Async method to programmatically trigger a Save As action for the currently loaded document.
-
- It opens a system modal dialog by default. If the property is `TRUE`, the system dialog is not opened. This method can return .
-
-
-
-
-
- This event will be raised during system FileTypePolicy checking the dangerous file extension list.
-
-
- Developers can specify their own logic for determining whether to allow a particular type of file to be saved from the document origin URI. Developers can also determine the save decision based on other criteria. Here are two properties in to manage the decision, and .
- Table of Properties' value and result:
-
-
-
- CancelSave
- SuppressDefaultPolicy
- Result
-
-
- False
- False
- Perform the default policy check. It may show the security warning UI if the file extension is dangerous.
-
-
- False
- True
- Skip the default policy check and the possible security warning. Start saving or downloading.
-
-
- True
- Any
- Skip the default policy check and the possible security warning. Abort save or download.
-
-
-
-
-
-
- ScreenCaptureStarting event is raised when the [Screen Capture API](https://www.w3.org/TR/screen-capture/) is requested by the user using getDisplayMedia().
-
-
- If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed.
-
-
-
-
- Represents a certificate. Gives access to a certificate's metadata.
-
-
-
-
- Converts this to a X509Certificate2.
-
-
- An object created using PEM encoded data from
- this object.
-
-
-
-
-
- The valid date and time for the certificate since the UNIX epoc.
-
-
-
-
- The valid date and time for the certificate since the UNIX epoc.
-
-
-
-
- Subject of the certificate.
-
-
-
-
- Name of the certificate authority that issued the certificate.
-
-
-
-
- Base64 encoding of DER encoded serial number of the certificate. Read more about DER at [RFC 7468 DER](https://tools.ietf.org/html/rfc7468#appendix-B).
-
-
-
-
- Display name for a certificate.
-
-
-
-
- Returns list of PEM encoded certificate issuer chain. In this list first element is the current certificate followed by intermediate1, intermediate2...intermediateN-1. Root certificate is the last element in the list.
-
-
-
-
- PEM encoded data for the certificate. Returns Base64 encoding of DER encoded certificate. Read more about PEM at [RFC 1421 Privacy Enhanced Mail](https://tools.ietf.org/html/rfc1421).
-
-
-
-
- Represents a client certificate. Gives access to a certificate's metadata.
-
-
-
-
- Converts this to a X509Certificate2.
-
-
- An object created using PEM encoded data from
- this object.
-
-
-
-
-
- The valid date and time for the certificate since the UNIX epoc.
-
-
-
-
- The valid date and time for the certificate since the UNIX epoc.
-
-
-
-
- Subject of the certificate.
-
-
-
-
- Name of the certificate authority that issued the certificate.
-
-
-
-
- Base64 encoding of DER encoded serial number of the certificate. Read more about DER at [RFC 7468 DER](https://tools.ietf.org/html/rfc7468#appendix-B).
-
-
-
-
- Display name for a certificate.
-
-
-
-
- Returns list of PEM encoded client certificate issuer chain. In this list first element is the current certificate followed by intermediate1, intermediate2...intermediateN-1. Root certificate is the last element in the list.
-
-
-
-
- Kind of a certificate. See for descriptions.
-
-
-
-
- PEM encoded data for the certificate. Returns Base64 encoding of DER encoded certificate. Read more about PEM at [RFC 1421 Privacy Enhanced Mail](https://tools.ietf.org/html/rfc1421).
-
-
-
-
- This class is the owner of the object, and
- provides support for resizing, showing and hiding, focusing, and other
- functionality related to windowing and composition.
-
-
- The owns the , and if all references to the go away, the WebView will be closed.
-
-
- The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition.
-
-
- The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed.
-
-
- The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition.
-
-
- The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed.
-
-
- The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition.
-
-
- The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed.
-
-
- The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition.
-
-
- The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed.
-
-
- The owner of the object that provides support for resizing, showing and hiding, focusing, and other functionality related to windowing and composition.
-
-
- The CoreWebView2Controller owns the , and if all references to the go away, the WebView is closed.
-
-
-
-
- Gets the associated with this .
-
-
-
-
-
- Moves focus into WebView.
-
- The reason for moving focus.
-
- WebView will get focus and focus will be set to correspondent element in the page hosted in the WebView. For reason, focus is set to previously focused element or the default element if no previously focused element exists. For reason, focus is set to the first element. For reason, focus is set to the last element. WebView changes focus through user interaction including selecting into a WebView or Tab into it. For tabbing, the app runs MoveFocus with or to align with Tab and Shift+Tab respectively when it decides the WebView is the next tabbable element.
-
-
-
-
- Determines whether to show or hide the WebView.
-
-
- If IsVisible is set to false, the WebView is transparent and is not rendered. However, this does not affect the window containing the WebView (the ParentWindow parameter that was passed to or ).
- If you want that window to disappear too, run the corresponding Hide method from the UI framework on it directly in addition to modifying this.
- WebView as a child window does not get window messages when the top window is minimized or restored. For performance reasons, developers should set the IsVisible property of the WebView to false when the app window is minimized and back to true when the app window is restored. The app window does this by handling SIZE_MINIMIZED and SIZE_RESTORED command upon receiving WM_SIZE message. There are CPU and memory benefits when the page is hidden. For instance Chromium has code that throttles activities on the page like animations and some tasks are run less frequently. Similarly, WebView2 will purge some caches to reduce memory usage.
-
-
-
-
-
- Gets or sets the WebView bounds.
-
-
- Bounds are relative to the . The app has two ways to position a WebView:
-
-
- Create a child HWND that is the WebView parent HWND. Position the window where the WebView should be. Use (0, 0) for the top-left corner (the offset) of the Bounds of the WebView.
-
-
- Use the top-most window of the app as the WebView parent HWND. For example, to position ebView correctly in the app, set the top-left corner of the Bounds of the WebView.
-
-
-
- The values of Bounds are limited by the coordinate space of the host.
-
-
-
-
- Gets or sets the zoom factor for the WebView.
-
-
- Note that changing zoom factor may cause window.innerWidth or window.innerHeight and page layout to change. A zoom factor that is applied by the host by setting this ZoomFactor property becomes the new default zoom for the WebView. This zoom factor applies across navigations and is the zoom factor WebView is returned to when the user presses Ctrl+0. When the zoom factor is changed by the user (resulting in the app receiving ), that zoom applies only for the current page. Any user applied zoom is only for the current page and is reset on a navigation. Specifying a ZoomFactor less than or equal to 0 is not allowed. WebView also has an internal supported zoom factor range. When a specified zoom factor is out of that range, it is normalized to be within the range, and a event is raised for the real applied zoom factor. When this range normalization happens, this reports the zoom factor specified during the previous modification of the ZoomFactor property until the event is received after WebView applies the normalized zoom factor.
-
-
-
-
- Gets the parent window provided by the app or sets the parent window that this WebView is using to render content.
-
-
- It initially returns the ParentWindow passed into or . Setting the property causes the WebView to re-parent the main WebView window to the newly provided window.
-
-
-
-
- ZoomFactorChanged is raised when the property changes.
-
-
- The event may be raised because the property was modified, or due to the user manually modifying the zoom. When it is modified using the property, the internal zoom factor is updated immediately and no ZoomFactorChanged event is raised. WebView associates the last used zoom factor for each site. It is possible for the zoom factor to change when navigating to a different page. When the zoom factor changes due to a navigation change, the ZoomFactorChanged event is raised right after the event.
-
-
-
-
-
- MoveFocusRequested is raised when user tries to tab out of the WebView.
-
-
- The focus of the WebView has not changed when this event is raised.
-
-
-
-
- GotFocus is raised when WebView gets focus.
-
-
-
-
- LostFocus is raised when WebView loses focus.
-
-
- In the case where event is raised, the focus is still on WebView when event is raised. LostFocus is only raised afterwards when code of the app or default action of event sets focus away from WebView.
-
-
-
-
- AcceleratorKeyPressed is raised when an accelerator key or key combo is pressed or released while the WebView is focused.
-
-
- A key is considered an accelerator if either of the following conditions are true:
-
-
-
- Ctrl or Alt is currently being held.
-
-
- The pressed key does not map to a character.
-
-
-
- A few specific keys are never considered accelerators, such as Shift. The Escape key is always considered an accelerator.
-
- Autorepeated key events caused by holding the key down will also raise this event. Filter out the auto-repeated key events by verifying or .
-
- In windowed mode, this event is synchronous. Until you set to true or the event handler returns, the browser process is blocked and outgoing cross-process COM calls will fail with RPC_E_CANTCALLOUT_ININPUTSYNCCALL. All methods work, however.
-
- In windowless mode, the event is asynchronous. Further input do not reach the browser until the event handler returns or is set to true, but the browser process is not blocked, and outgoing COM calls work normally.
-
- It is recommended to set to true as early as you are able to know that you want to handle the accelerator key.
-
-
-
-
- Updates and properties at the same time.
-
- The bounds to be updated.
- The zoom factor to be updated.
-
- This operation is atomic from the perspective of the host. After returning from this function, the and properties are both updated if the function is successful, or neither is updated if the function fails. If and are both updated by the same scale (for example, and are both doubled), then the page does not display a change in window.innerWidth or window.innerHeight and the WebView renders the content at the new size and zoom without intermediate renderings. This function also updates just one of or by passing in the new value for one and the current value for the other.
-
-
-
-
- Tells WebView that the main WebView parent (or any ancestor) HWND moved.
-
-
- This is a notification separate from . This is needed for accessibility and certain dialogs in WebView to work correctly.
-
-
-
-
- Closes the WebView and cleans up the underlying browser instance.
-
-
- Cleaning up the browser instance releases the resources powering the WebView. The browser instance is shut down if no other WebViews are using it.
-
- After running Close, all methods fail and event handlers stop running. Specifically, the WebView releases the associated references to any associated event handlers when Close is run.
-
- Close is implicitly run when the loses the final reference and is destructed. But it is best practice to explicitly run Close to avoid any accidental cycle of references between the WebView and the app code. Specifically, if you capture a reference to the WebView in an event handler you create a reference cycle between the WebView and the event handler. Run Close to break the cycle by releasing all event handlers. But to avoid the situation, it is best to both explicitly run Close on the WebView and to not capture a reference to the WebView to ensure the WebView is cleaned up correctly. Close is synchronous and won't trigger the beforeunload event.
-
-
-
-
- Gets or sets the WebView default background color.
-
-
- The `DefaultBackgroundColor` is the color that renders underneath all web content. This means WebView renders this color when there is no web content loaded such as before the initial navigation or between navigations. This also means web pages with undefined css background properties or background properties containing transparent pixels will render their contents over this color. Web pages with defined and opaque background properties that span the page will obscure the `DefaultBackgroundColor` and display normally. The default value for this property is white to resemble the native browser experience. Currently this API only supports opaque colors and transparency. It will fail for colors with alpha values that don't equal 0 or 255 ie. translucent colors are not supported. It also does not support transparency on Windows 7. On Windows 7, setting DefaultBackgroundColor to a Color with an Alpha value other than 255 will result in failure. On any OS above Win7, choosing a transparent color will result in showing hosting app content. This means webpages without explicit background properties defined will render web content over hosting app content.
- This property may also be set via the `WEBVIEW2_DEFAULT_BACKGROUND_COLOR` environment variable. There is a known issue with background color where just setting the color by property can still leave the app with a white flicker before the `DefaultBackgroundColor` property takes effect. Setting the color via environment variable solves this issue. The value must be a hex value that can optionally prepend a 0x. The value must account for the alpha value which is represented by the first 2 digits. So any hex value fewer than 8 digits will assume a prepended 00 to the hex value and result in a transparent color. `DefaultBackgroundColor` will return the result of this environment variable even if it has not been set directly. This environment variable can only set the `DefaultBackgroundColor` once. Subsequent updates to background color must be done by setting the property.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="DefaultBackgroundColor":::
-
-
-
-
- Gets or sets the WebView rasterization scale.
-
-
- The rasterization scale is the combination of the monitor DPI scale and text scaling set by the user. This value should be updated when the DPI scale of the app's top level window changes (i.e. monitor DPI scale changes or the window changes monitor) or when the text scale factor of the system changes.
- Rasterization scale applies to the WebView content, as well as popups, context menus, scroll bars, and so on. Normal app scaling scenarios should use the property or method.
-
-
-
-
- Determines whether the WebView will detect monitor scale changes.
-
-
- ShouldDetectMonitorScaleChanges property determines whether the WebView attempts to track monitor DPI scale changes. When true, the WebView will track monitor DPI scale changes, update the property, and fire event. When false, the WebView will not track monitor DPI scale changes, and the app must update the property itself. event will never raise when ShouldDetectMonitorScaleChanges is false. Apps that want to set their own rasterization scale should set this property to false to avoid the WebView2 updating the property to match the monitor DPI scale.
-
-
-
-
- Gets or sets the WebView bounds mode.
-
-
- BoundsMode affects how setting the and properties work. Bounds mode can either be in mode or mode.
-
-
-
-
- RasterizationScaleChanged is raised when the property changes.
-
-
- The event is raised when the Webview detects that the monitor DPI scale has changed, is true, and the Webview has changed the property.
-
-
-
-
-
- Gets or sets the WebView allow external drop property.
-
-
- The AllowExternalDrop is to configure the capability that dropping files into webview2 is allowed or permitted. The default value is true.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleAllowExternalDrop":::
-
-
-
-
- Used to manage profile options that created by .
-
-
- Used to manage profile options that created by .
-
-
-
-
- Manages the value of the controller's script locale.
-
-
- The ScriptLocale property is to specify the default script
- locale. It sets the default locale for all Intl JavaScript APIs and
- other JavaScript APIs that depend on it, namely
- Intl.DateTimeFormat() which affects string formatting like in
- the time/date formats.The intended locale value is in the format of
- BCP 47 Language Tags. More information can be found from [IETF
- BCP47](https://www.ietf.org/rfc/bcp/bcp47.html ). The default value
- for ScriptLocale will be depend on the WebView2 language and OS
- region. If the language portions of the WebView2 language and OS
- region match, then it will use the OS region. Otherwise, it will use
- the WebView2 language.
-
-
- OS Region
- WebView2 Language
- Default WebView2 ScriptLocale
-
-
- en-GB
- en-US
- en-GB
-
-
- es-MX
- en-US
- en-US
-
-
- en-US
- en-GB
- en-US
-
-
- You can set the ScriptLocale to the empty string to get the default ScriptLocale value.
- Use OS specific APIs to determine the OS region to use with this property if you always want to match with the OS
- region. For example:
-
- CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
- return cultureInfo.Name
-
-
-
-
-
- Manage the name of the controller's profile.
-
-
- The ProfileName property is to specify a profile name, which is only allowed to contain the following ASCII characters. It has a maximum length of 64 characters excluding the null-terminator. It is ASCII case insensitive.
-
- * alphabet characters: a-z and A-Z
- * digit characters: 0-9
- * and '#', '@', '$', '(', ')', '+', '-', '_', '~', '.', ' ' (space).
-
- Note: the text must not end with a period '.' or ' ' (space). And, although upper-case letters are allowed, they're treated just as lower-case counterparts because the profile name will be mapped to the real profile directory path on disk and Windows file system handles path names in a case-insensitive way.
-
-
-
-
- Manage the controller's InPrivate mode.
-
-
-
-
- Provides a set of properties that are used to manage a .
-
-
-
-
- Converts this to a System.Net.Cookie.
-
-
- An object whose , , , , , , and , matches
- those , , ,
- , , , and of this object.
-
-
- The values of the properties other than those
- specified above remain their default values.
-
-
-
-
-
- The expiration date and time for the cookie since the UNIX epoch.
-
-
- Setting the Expires property to
- makes this a session cookie, which is its default value.
-
-
-
-
- Get or sets the cookie name.
-
-
-
-
- Gets or sets the cookie value.
-
-
-
-
- Gets the domain for which the cookie is valid.
-
-
- The default value is the host that this cookie has been received from. Note that, for instance, .bing.com, bing.com, and www.bing.com are considered different domains.
-
-
-
-
- Gets the path for which the cookie is valid.
-
-
- The default value is "/", which means this cookie will be sent to all pages on the .
-
-
-
-
- Determines whether this cookie is http-only.
-
-
-
-
- Determines the SameSite status of the cookie which represents the enforcement mode of the cookie.
-
-
- The default value is .
-
-
-
-
- Gets or sets the security level of this cookie.
-
-
-
-
- Determines whether this is a session cookie. The default value is false.
-
-
-
-
- Creates, adds or updates, gets, or or view the cookies.
-
-
- The changes would apply to the context of the user profile. That is, other WebViews under the same user profile could be affected.
-
-
-
-
- Creates a CoreWebView2Cookie object whose params matches those of the given System.Net.Cookie.
-
-
- A System.Net.Cookie whose params to be used to create a CoreWebView2Cookie.
-
-
- An object whose , , , , , , and , matches those , , , , , , and of the given object.
-
-
- The default value for the
- property of the returned object is
- .
-
-
-
-
-
- Creates a cookie object with a specified name, value, domain, and path.
-
-
- One can set other optional properties after cookie creation. This only creates a cookie object and it is not added to the cookie manager until you call . name that starts with whitespace(s) is not allowed.
-
- The name for the to be created. It cannot start with whitespace(s).
-
-
-
-
-
-
- Creates a cookie whose params matches those of the specified cookie.
-
-
-
-
- Gets a list of cookies matching the specific URI.
-
-
- You can modify the cookie objects by calling , and the changes will be applied to the webview.
-
- If uri is empty string or null, all cookies under the same profile are returned.
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetCookies":::
-
-
-
-
- Adds or updates a cookie with the given cookie data; may overwrite cookies with matching name, domain, and path if they exist.
-
- The to be added or updated.
-
- This method will fail if the domain of the given cookie is not specified.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="AddOrUpdateCookie":::
-
-
-
-
- Deletes a cookie whose name and domain/path pair match those of the specified cookie.
-
-
-
-
- Deletes cookies with matching name and uri.
-
- The name for the cookies to be deleted is required.
- If uri is specified, deletes all cookies with the given name where domain and path match provided URI.
-
-
-
- Deletes cookies with matching name and domain/path pair.
-
- The name for the cookies to be deleted is required.
- If domain is specified, deletes only cookies with the exact domain.
- If path is specified, deletes only cookies with the exact path.
-
-
-
- Deletes all cookies under the same profile.
-
-
- This could affect other WebViews under the same user profile.
-
-
-
-
- Represents the registration of a custom scheme with the .
-
-
- This allows the WebView2 app to be able to handle event for requests with the
- specified scheme and be able to navigate the WebView2 to the custom
- scheme. Once the environment is created, the registrations are valid and
- immutable throughout the lifetime of the associated WebView2s' browser
- process and any WebView2 environments sharing the browser process must be
- created with identical custom scheme registrations, otherwise the
- environment creation will fail. Any further attempts to register the same
- scheme will fail during environment creation. The URIs of registered
- custom schemes will be treated similar to http URIs for their origins.
- They will have tuple origins for URIs with host and opaque origins for
- URIs without host as specified in [7.5 Origin - HTML Living Standard](https://html.spec.whatwg.org/multipage/origin.html) For event, the cases of request
- URIs and filter URIs with custom schemes will be normalized according to
- generic URI syntax rules. Any non-ASCII characters will be preserved. The
- registered custom schemes also participate in [CORS](https://developer.mozilla.org/docs/Web/HTTP/CORS) and adheres to
- [CSP](https://developer.mozilla.org/docs/Web/HTTP/CSP). The app needs to
- set the appropriate access headers in its event handler to allow CORS
- requests.
-
-
- custom-scheme-with-host://hostname/path/to/resource has origin of
- custom-scheme-with-host://hostname.
- custom-scheme-without-host:path/to/resource has origin of
- custom-scheme-without-host:path/to/resource.
-
-
-
-
- The name of the custom scheme to register.
-
-
-
-
- Whether the sites with this scheme will be treated as a [Secure
- Context](https://developer.mozilla.org/docs/Web/Security/Secure_Contexts)
- like an HTTPS site.
-
-
-
-
- Set this property to true if the URIs with this custom scheme
- will have an authority component (a host for custom schemes).
- Specifically, if you have a URI of the following form you should set the
- HasAuthorityComponent value as listed.
-
-
-
- URI
- Recommended HasAuthorityComponent value
-
-
- custom-scheme-with-authority://host/path
- true
-
-
- custom-scheme-without-authority:path
- false
-
-
-
-
- When this property is set to true, the URIs with this scheme will
- be interpreted as having a [scheme and
- host](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-tuple)
- origin similar to an http URI. Note that the port and user information
- are never included in the computation of origins for custom schemes. If
- this property is set to false, URIs with this scheme will have an
- [opaque
- origin](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-opaque)
- similar to a data URI. This property is false by default. Note:
- For custom schemes registered as having authority component, navigations
- to URIs without authority of such custom schemes will fail. However, if
- the content inside WebView2 references a subresource with a URI that
- does not have an authority component, but of a custom scheme that is
- registered as having authority component, the URI will be interpreted as
- a relative path as specified in
- [RFC3986](https://www.rfc-editor.org/rfc/rfc3986). For example,
- custom-scheme-with-authority:path will be interpreted as
- custom-scheme-with-authority://host/path. However, this behavior
- cannot be guaranteed to remain in future releases so it is recommended
- not to rely on this behavior.
-
-
-
-
- List of origins that are allowed to issue requests with the custom
- scheme, such as XHRs and subresource requests that have an Origin
- header.
-
-
- The origin of any request (requests that have the [Origin
- header](https://developer.mozilla.org/docs/Web/HTTP/Headers/Origin)) to
- the custom scheme URI needs to be in this list. No-origin requests are
- requests that do not have an Origin header, such as link navigations,
- embedded images and are always allowed. Note that cross-origin
- restrictions still apply. From any opaque origin (Origin header is
- null), no cross-origin requests are allowed. If the list is empty, no
- cross-origin request to this scheme is allowed. Origins are specified as
- a string in the format of scheme://host:port. The origins are
- string pattern matched with * (matches 0 or more characters) and
- ? (matches 0 or 1 character) wildcards just like the URI matching
- in the
- API. For example, http://*.example.com:80.
-
- Here's a set of examples of what is allowed or not:
-
-
-
- Request URI
- Originating URL
- AllowedOrigins
- Allowed
-
-
- custom-scheme:request
- https://www.example.com
- {"https://www.example.com"}
- Yes
-
-
- custom-scheme:request
- https://www.example.com
- {"https://*.example.com"}
- Yes
-
-
- custom-scheme:request
- https://www.example.com
- {"https://www.example2.com"}
- No
-
-
- custom-scheme-with-authority://host/path
- custom-scheme-with-authority://host2
- {""}
- No
-
-
- custom-scheme-with-authority://host/path
- custom-scheme-with-authority2://host
- {"custom-scheme-with-authority2://*"}
- Yes
-
-
- custom-scheme-without-authority:path
- custom-scheme-without-authority:path2
- {"custom-scheme-without-authority:*"}
- No
-
-
- custom-scheme-without-authority:path
- custom-scheme-without-authority:path2
- {"*"}
- Yes
-
-
-
-
-
-
- Initializes a new instance of the CoreWebView2CustomSchemeRegistration
- class.
-
-
- The name of the custom scheme to register.
-
-
-
-
- Represents a download operation. Gives access to a download's metadata and supports a user canceling, pausing, or resuming a download.
-
-
-
-
- The estimated end time of the download.
-
-
-
-
- The total bytes to receive count.
-
-
-
-
- The URI of the download.
-
-
-
-
- The Content-Disposition header value from the download's HTTP response. If none, the value is an empty string.
-
-
-
-
- MIME type of the downloaded content.
-
-
-
-
- The number of bytes that have been written to the download file.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BytesReceivedChanged":::
-
-
-
-
- The absolute path to the download file, including file name.
-
-
- Host can change this from .
-
-
-
-
- The state of the download. A download can be in progress, interrupted, or completed.
-
-
- See for descriptions of states.
-
-
-
-
- The reason why connection with file host was broken.
-
-
- See for descriptions of reasons.
-
-
-
-
- Returns true if an interrupted download can be resumed.
-
-
- Downloads with the following interrupt reasons may automatically resume without you calling any methods: , , . In these cases progress may be restarted with set to 0.
-
-
-
-
- Event raised when the bytes received count is updated.
-
-
-
-
- Event raised when the estimated end time changes.
-
-
-
-
- Event raised when the state of the download changes.
-
-
- Use to get the current state, and to get the reason if the download is interrupted.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="StateChanged":::
-
-
-
-
- Cancels the download.
-
-
- If canceled, the default download dialog shows that the download was canceled. Host should use if download should be canceled without displaying the default download dialog.
-
-
-
-
- Pauses the download.
-
-
- If paused, the default download dialog shows that the download is paused. No effect if download is already paused. Pausing a download changes the state from in progress to interrupted, with interrupt reason set to .
-
-
-
-
- Resumes a paused download. May also resume a download that was interrupted for another reason if returns true.
-
-
- Resuming a download changes the state from interrupted to in progress.
-
-
-
-
- This represents the WebView2 Environment.
-
-
- WebViews created from an environment run on the Browser process specified with environment parameters and objects created from an environment should be used in the same environment. Using it in different environments are not guaranteed to be compatible and may fail.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a WebView2 Environment using the installed or a custom WebView2 Runtime version.
-
-
- The relative path to the folder that contains a custom version of WebView2 Runtime.
-
- To use a fixed version of the WebView2 Runtime, pass the
- folder path that contains the fixed version of the WebView2 Runtime
- to browserExecutableFolder. BrowserExecutableFolder supports both relative
- (to the application's executable) and absolute file paths. To create WebView2 controls
- that use the installed version of the WebView2 Runtime that exists on
- user machines, pass a null or empty string to
- browserExecutableFolder. In this scenario, the API tries to
- find a compatible version of the WebView2 Runtime that is installed
- on the user machine (first at the machine level, and then per user)
- using the selected channel preference. The path of fixed version of
- the WebView2 Runtime should not contain \Edge\Application\. When
- such a path is used, the API fails with ERROR_NOT_SUPPORTED.
-
-
-
- The user data folder location for WebView2.
-
- The path is either an absolute file path or a relative file path
- that is interpreted as relative to the compiled code for the
- current process. The default user data folder {Executable File
- Name}.WebView2 is created in the same directory next to the
- compiled code for the app. WebView2 creation fails if the compiled
- code is running in a directory in which the process does not have
- permission to create a new directory. The app is responsible to
- clean up the associated user data folder when it is done.
-
-
-
- Options used to create WebView2 Environment.
-
- As a browser process may be shared among WebViews, WebView creation
- fails if the specified options does not match the options of
- the WebViews that are currently running in the shared browser
- process.
-
-
-
-
- The default channel search order is the WebView2 Runtime, Beta, Dev, and
- Canary. When an override WEBVIEW2_RELEASE_CHANNEL_PREFERENCE environment
- variable or applicable releaseChannelPreference registry value is set to
- 1, the channel search order is reversed.
-
-
- To use a fixed version of the WebView2 Runtime, pass the relative
- folder path that contains the fixed version of the WebView2 Runtime
- to browserExecutableFolder. To create WebView2 controls that
- use the installed version of the WebView2 Runtime that exists on
- user machines, pass a null or empty string to
- browserExecutableFolder. In this scenario, the API tries to
- find a compatible version of the WebView2 Runtime that is installed
- on the user machine (first at the machine level, and then per user)
- using the selected channel preference. The path of fixed version of
- the WebView2 Runtime should not contain \Edge\Application\. When
- such a path is used, the API fails with the following error.
-
-
- The , , and may be
- overridden by values either specified in environment variables or in
- the registry.
-
-
- When creating a the following environment variables are verified.
-
-
-
- WEBVIEW2_BROWSER_EXECUTABLE_FOLDER
-
-
- WEBVIEW2_USER_DATA_FOLDER
-
-
- WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS
-
-
- WEBVIEW2_RELEASE_CHANNEL_PREFERENCE
-
-
-
- If browser executable folder or user data folder is specified in an
- environment variable or in the registry, the specified or values are overridden. If additional browser
- arguments are specified in an environment variable or in the
- registry, it is appended to the corresponding value in the specified
- .
-
-
- While not strictly overrides, additional environment variables may be set.
-
-
-
- Value
- Description
-
-
- WEBVIEW2_WAIT_FOR_SCRIPT_DEBUGGER
-
- When found with a non-empty value, this indicates that the WebView
- is being launched under a script debugger. In this case, the WebView
- issues a Page.waitForDebugger CDP command that runs the
- script inside the WebView to pause on launch, until a debugger
- issues a corresponding Runtime.runIfWaitingForDebugger CDP
- command to resume the runtime.
- Note that this environment variable does not have a registry key equivalent.
-
-
-
- WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER
-
- When found with a non-empty value, it indicates that the WebView is
- being launched under a script debugger that also supports host apps
- that use multiple WebViews. The value is used as the identifier for
- a named pipe that is opened and written to when a new WebView is
- created by the host app. The payload should match the payload of the
- remote-debugging-port JSON target and an external debugger
- may use it to attach to a specific WebView instance. The format of
- the pipe created by the debugger should be
- \\.\pipe\WebView2\Debugger\{app_name}\{pipe_name}, where the
- following are true.
-
-
- {app_name} is the host app exe file name, for example, WebView2Example.exe
- {pipe_name} is the value set for WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER
-
-
- To enable debugging of the targets identified by the JSON, you must
- set the WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS environment
- variable to send --remote-debugging-port={port_num}, where
- the following is true.
-
-
- {port_num} is the port on which the CDP server binds.
-
-
- If both WEBVIEW2_PIPE_FOR_SCRIPT_DEBUGGER and
- WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS environment variables,
- the WebViews hosted in your app and associated contents may exposed
- to 3rd party apps such as debuggers. Note that this environment
- variable does not have a registry key equivalent.
-
-
-
-
- If none of those environment variables exist, then the registry is examined
- next.
-
-
-
- [{Root}]\Software\Policies\Microsoft\Edge\WebView2\BrowserExecutableFolder "{AppId}"=""
-
-
- [{Root}]\Software\Policies\Microsoft\Edge\WebView2\ReleaseChannelPreference "{AppId}"=""
-
-
- [{Root}]\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments "{AppId}"=""
-
-
- [{Root}]\Software\Policies\Microsoft\Edge\WebView2\UserDataFolder "{AppId}"=""
-
-
-
- Use a group policy under Administrative Templates >
- Microsoft Edge WebView2 to configure browser executable folder
- and release channel preference.
-
-
-
- Value
- Description
-
-
- ERROR_DISK_FULL
-
- In the unlikely scenario where some instances of WebView are open during a
- browser update, the deletion of the previous WebView2 Runtime may be
- blocked. To avoid running out of disk space, a new WebView creation fails
- with this error if it detects that too many previous WebView2
- Runtime versions exist.
-
-
-
- COREWEBVIEW2_MAX_INSTANCES
-
- The default maximum number of WebView2 Runtime versions allowed is 20.
- To override the maximum number of the previous WebView2 Runtime versions
- allowed, set the value of the following environment variable.
-
-
-
- ERROR_PRODUCT_UNINSTALLED
-
- If the Webview depends upon an installed WebView2 Runtime version and it is
- uninstalled, any subsequent creation fails with this error.
-
-
-
-
- First verify with Root as HKLM and then HKCU. AppId is first set to
- the Application User Model ID of the process, then if no corresponding
- registry key, the AppId is set to the compiled code name of the process,
- or if that is not a registry key then *. If an override registry key is
- found, use the browserExecutableFolder and userDataFolder registry
- values as replacements and append additionalBrowserArguments registry
- values for the corresponding values in the provided .
-
-
-
-
-
- Gets the browser version info including channel name if it is not the stable channel or WebView2 Runtime.
-
-
- The relative path to the folder that contains the WebView2 Runtime.
-
-
- WebView2 Runtime installation is missing.
-
-
-
-
- Gets the browser version info including channel name if it is not the stable channel or WebView2 Runtime.
-
-
- The relative path to the folder that contains the WebView2 Runtime.
-
-
- The environment options used to create the environment.
-
-
- WebView2 Runtime installation is missing.
-
-
- Browser version info includes channel name if it is not the WebView2 Runtime.
- Channel names are Beta, Dev, and Canary. The format of the return string
- matches the format of .
- If an override exists for BrowserExecutableFolder, ReleaseChannels,
- or ChannelSearchKind, the override is used. The presence of an override
- can result in a different channel used than the one expected based on the environment
- options object. BrowserExecutableFolder takes precedence over the
- other options. See
- for more details on overrides. If an override is not specified, then the
- parameters passed to GetAvailableBrowserVersionString are used.
- The method fails if the loader is unable to find an installed WebView2
- Runtime or non-stable Microsoft Edge installation.
-
-
-
-
- Compares two instances of browser versions correctly and returns an integer that indicates whether the first instance is older, the same as, or newer than the second instance.
-
-
- One of the version strings to compare.
-
-
- The other version string to compare.
-
-
- An integer that indicates whether the first instance is older, the same as, or newer than the second instance.
-
-
- Value Type
- Condition
-
-
- Less than zero
- version1 is older than version2.
-
-
- Zero
- version1 is the same as version2.
-
-
- Greater than zero
- version1 is newer than version2.
-
-
-
-
-
-
- Creates a new object.
-
- The request URI.
- The HTTP request method.
-
- The raw request header string delimited by CRLF (optional in last header).
-
- uri parameter must be absolute URI. It's also possible to create this object with null headers string and then use the to construct the headers line by line.
-
-
-
-
-
- Creates a new object,
- which can be passed as a parameter in and function for multiple profiles
- support.
-
-
- A that can be
- passed when calling and .
-
-
- The options is a settable property while the default for profile
- name is an empty string and the default value for is
- false. The profile will be created on disk or opened when calling
- CreateCoreWebView2ControllerWithOptions no matter InPrivate mode is
- enabled or not, and it will be released in memory when the
- corresponding is closed but
- still remain on disk. As WebView2 is built on top of Edge browser,
- it follows Edge's behavior pattern. To create an InPrivate WebView,
- we get an off-the-record profile (an InPrivate profile) from a
- regular profile, then create the WebView with the off-the-record
- profile. Also the profile name can be reused.
-
-
-
-
- Asynchronously creates a new object.
-
- The HWND in which the WebView should be displayed and from which receive input.
-
- The options contains profileName and inPrivate parameters that could be used to create CoreWebView2Profile, and it can be used to create multiple WebViews with multiple profiles under a single user data directory.
-
-
- Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc.
-
-
-
-
- Asynchronously creates a new object.
-
- The HWND in which the WebView should be displayed and from which receive input.
-
- The options contains profileName and inPrivate parameters that could be used to create CoreWebView2Profile, and it can be used to create multiple WebViews with multiple profiles under a single user data directory.
-
-
- Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc.
-
-
-
-
- Set the path of the folder containing the `WebView2Loader.dll`.
-
- The path of the folder containing the `WebView2Loader.dll`.
-
- Thrown when `WebView2Loader.dll` has been successfully loaded.
-
-
- This function allows you to set the path of the folder containing the `WebView2Loader.dll`. This should be the path of a folder containing `WebView2Loader.dll` and not a path to the `WebView2Loader.dll` file itself.
- Note that the WebView2 SDK contains multiple `WebView2Loader.dll` files for different CPU architectures. When specifying folder path, you must specify one containing a `WebView2Loader.dll` module with a CPU architecture matching the current process CPU architecture.
- This function is used to load the `WebView2Loader.dll` module during calls to any other static methods on `CoreWebView2Environment`. So, the path should be specified before any other API is called in `CoreWebView2Environment` class. Once `WebView2Loader.dll` is successfully loaded this function will throw an InvalidOperationException exception.
- The path can be relative or absolute. Relative paths are relative to the path of the `Microsoft.Web.WebView2.Core.dll` module.
- If the `WebView2Loader.dll` file does not exist in that path or LoadLibrary cannot load the file, or LoadLibrary fails for any other reason, an exception corresponding to the LoadLibrary failure is thrown when any other API is called in `CoreWebView2Environment` class. For instance, if the file cannot be found a `DllNotFoundException` exception will be thrown.
-
-
-
-
- Gets the browser version info of the current , including channel name if it is not the stable channel.
-
-
- It matches the format of the method. Channel names are beta, dev, and canary.
-
-
-
-
- NewBrowserVersionAvailable is raised when a newer version of the WebView2 Runtime is installed and available using WebView2.
-
-
- To use the newer version of the browser you must create a new environment and WebView. The event is only raised for new version from the same WebView2 Runtime from which the code is running. When not running with installed WebView2 Runtime, no event is raised.
-
- Because a user data folder is only able to be used by one browser process at a time, if you want to use the same user data folder in the WebViews using the new version of the browser, you must close the environment and instance of WebView that are using the older version of the browser first. Or simply prompt the user to restart the app.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SubscribeToNewBrowserVersionAvailable":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="NewBrowserVersionAvailable":::
-
-
-
-
- Asynchronously creates a new WebView.
-
- The HWND in which the WebView should be displayed and from which receive input.
-
- The WebView adds a child window to the provided window during WebView creation. Z-order and other things impacted by sibling window order are affected accordingly.
-
-
- HWND_MESSAGE is a valid parameter for ParentWindow for an invisible WebView for Windows 8 and above. In this case the window will never become visible. You are not able to reparent the window after you have created the WebView. This is not supported in Windows 7 or below. Passing this parameter in Windows 7 or below will return ERROR_INVALID_WINDOW_HANDLE in the controller callback.
-
-
-
- It can also accept a which is created by as the second parameter for multiple profiles support. As WebView2 is built on top of Edge browser, it follows Edge's behavior pattern. To create an InPrivate WebView, we gets an off-the-record profile (an InPrivate profile) from a regular profile, then create the WebView with the off-the-record profile. Multiple profiles under single user data directory can share some system resources including memory, CPU footprint, disk space (such as compiled shaders and safebrowsing data) etc.
-
-
-
- It is recommended that the application set Application User Model ID for the process or the application window. If none is set, during WebView creation a generated Application User Model ID is set to root window of ParentWindow.
-
-
-
- It is recommended that the app handles restart manager messages, to gracefully restart it in the case when the app is using the WebView2 Runtime from a certain installation and that installation is being uninstalled. For example, if a user installs a version of the WebView2 Runtime and opts to use another version of the WebView2 Runtime for testing the app, and then uninstalls the 1st version of the WebView2 Runtime without closing the app, the app restarts to allow un-installation to succeed.
-
-
-
- When the app retries CreateCoreWebView2ControllerAsync upon failure, it is recommended that the app restarts from creating a new WebView2 Environment. If a WebView2 Runtime update happens, the version associated with a WebView2 Environment may have been removed and causing the object to no longer work. Creating a new WebView2 Environment works since it uses the latest version.
-
-
-
- WebView creation fails if a running instance using the same user data folder exists, and the Environment objects have different . For example, if a WebView was created with one , an attempt to create a WebView with a different using the same user data folder fails.
-
-
-
- WebView creation can fail with `E_UNEXPECTED` if runtime does not have permissions to the user data folder.
-
-
-
-
-
- Creates a new object.
-
- HTTP response content as stream.
- The HTTP response status code.
- The HTTP response reason phrase.
- The raw response header string delimited by newline.
-
- It is also possible to create this object with empty headers string and then use the to construct the headers line by line.
-
-
-
-
-
- Asynchronously creates a new WebView for use with visual hosting.
-
- The HWND in which the app will connect the visual tree of the WebView.
-
- ParentWindow will be the HWND that the app will receive pointer/mouse input meant for the WebView (and will need to use or to forward). If the app moves the WebView visual tree to underneath a different window, then it needs to set to update the new parent HWND of the visual tree.
-
- Set property on the created to provide a visual to host the browser's visual tree.
-
- It is recommended that the application set Application User Model ID for the process or the application window. If none is set, during WebView creation a generated Application User Model ID is set to root window of ParentWindow.
-
- It can also accept a which is created by as the second parameter for multiple profiles support.
-
- CreateCoreWebView2CompositionController is supported in the following versions of Windows:
-
-
- Windows 11
-
-
- Windows 10
-
-
- Windows Server 2019
-
-
- Windows Server 2016
-
-
-
-
-
-
- Creates an empty .
-
-
- The returned needs to be populated with all of the relevant info before calling .
-
-
-
-
- BrowserProcessExited is raised when the collection of WebView2 Runtime processes for the browser process of this terminate due to browser process failure or normal shutdown (for example, when all associated WebViews are closed), after all resources have been released (including the user data folder).
-
-
- Multiple app processes can share a browser process by creating their webviews from a with the same user data folder. When the entire collection of WebView2Runtime processes for the browser process exit, all associated objects receive the BrowserProcessExited event. Multiple processes sharing the same browser process need to coordinate their use of the shared user data folder to avoid race conditions and unnecessary waits. For example, one process should not clear the user data folder at the same time that another process recovers from a crash by recreating its WebView controls; one process should not block waiting for the event if other app processes are using the same browser process (the browser process will not exit until those other processes have closed their webviews too).
-
- Note this is an event from , not . The difference between BrowserProcessExited and is that BrowserProcessExited is raised for any browser process exit (expected or unexpected, after all associated processes have exited too), while is raised for unexpected process exits of any kind (browser, render, GPU, and all other types), or for main frame render process unresponsiveness. To learn more about the WebView2 Process Model, go to [Process model](/microsoft-edge/webview2/concepts/process-model).
-
- In the case the browser process crashes, both BrowserProcessExited and events are raised, but the order is not guaranteed. These events are intended for different scenarios. It is up to the app to coordinate the handlers so they do not try to perform reliability recovery while also trying to move to a new WebView2 Runtime version or remove the user data folder.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SubscribeToBrowserProcessExited":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="BrowserProcessExited":::
-
-
-
-
- Creates the used by the method.
-
-
-
-
- Gets the user data folder that all CoreWebView2s created from this environment are using.
-
-
- This could be either the value passed in by the developer when creating the environment object or the calculated one for default handling. And will always be an absolute path.
-
-
-
-
- ProcessInfosChanged is raised when a collection of WebView2 Runtime processes changed due to new process being detected or when a existing process gone away.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ProcessInfosChanged":::
-
-
-
-
- Returns the list of all using same user data folder except for crashpad process.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetProcessInfos":::
-
-
-
-
- Create a custom object to insert into the WebView context menu.
-
-
- CoreWebView2 will rewind the icon stream before decoding.
- There is a limit of 1000 active custom context menu items at a given time per . Attempting to create more before deleting existing ones will fail with ERROR_NOT_ENOUGH_QUOTA. It is recommended to reuse custom ContextMenuItems across CoreWebView2ContextMenuRequested events for performance. The created object's property will default to true and property will default to false. A will be assigned that's unique across active custom context menu items, but command ID values of deleted custom ContextMenuItems can be reassigned.
-
-
-
-
- Gets the failure report folder that all CoreWebView2s created from this environment are using.
-
-
-
-
- Create a shared memory based buffer with the specified size in bytes.
-
-
- The buffer can be shared with web contents in WebView by calling or .
- Once shared, the same content of the buffer will be accessible from both the app process and script in WebView.
- Modification to the content will be visible to all parties that have access to the buffer.
- The shared buffer is presented to the script as ArrayBuffer. All JavaScript APIs that work for ArrayBuffer including Atomics APIs can be used on it.
- There is currently a limitation that only size less than 2GB is supported.
-
-
-
-
- Returns a snapshot collection of corresponding to all currently running processes associated with this excludes crashpad process. This provides the same list of as what's provided in , but additionally provides a list of associated which are actively running (showing or hiding UI elements) in the renderer process. See for more information.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetProcessExtendedInfos":::
-
-
-
-
- Creates a object from a path that represents a Web [FileSystemFileHandle](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle).
-
- The path pointed by the file.
- This must be a syntactically correct fully qualified path, but it is not checked here whether it currently points to a file. If an invalid path is passed, an `InvalidArgumentException` will be thrown. Any other state validation will be done when this handle is accessed from web content and will cause the DOM exceptions described in [FileSystemFileHandle methods](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle#instance_methods) if access operations fail
-
-
- This is used to specify whether the Handle should be created with a Read-only or Read-and-write web permission.
- For the `permission` value specified here, the DOM [PermissionStatus](https://developer.mozilla.org/docs/Web/API/PermissionStatus) property will be `[granted](https://developer.mozilla.org/docs/Web/API/PermissionStatus/state)` and the unspecified permission will be `[prompt](https://developer.mozilla.org/docs/Web/API/PermissionStatus/state)`. Therefore, the web content then does not need to call [requestPermission](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/requestPermission) for the permission that was specified before attempting the permitted operation, but if it does, the promise will immediately be resolved with 'granted' PermissionStatus without firing the event or prompting the user for permission. Otherwise, `requestPermission` will behave as the status of permission is currently `prompt`, which means the `PermissionRequested` event will fire or the user will be prompted.
- Note: An exception to this is, if there is a parent directory handle that has broader permissions in the same page context than specified in here, the handle will automatically inherit the most permissive permission of the parent handle when posted to that page context. i.e. If there is already a `FileSystemDirectoryHandle` to `C:\foo` that has write permission on a page, even though a to file `C:\example\file.txt` may be created with permission, when posted to that page, write permission will be automatically granted to the created handle.
- Additionally, the app must have the same OS permissions that have propagated to the [WebView2 browser process](/microsoft-edge/webview2/concepts/process-model) for the path it wishes to give the web content to read/write the file. Specifically, the WebView2 browser process will run in same user, package identity, and app container of the app, but other means such as security context impersonations do not get propagated, so such permissions that the app has, will not be effective in WebView2.
-
-
-
- An app needs to be mindful that this object, when posted to the web content, provides it with unusual access to OS file system via the Web FileSystem API! The app should therefore only post objects for paths that it wants to allow access to the web content and it is not recommended that the web content "asks" for this path. The app should also check the source property of the target to ensure that it is sending to the web content of intended origin. Once the object is passed to web content, if the content is attempting a read, the file must be existing and available to read similar to a file chosen by [open file picker](https://developer.mozilla.org/docs/Web/API/Window/showOpenFilePicker), otherwise the read operation will [throw a DOM exception](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile#exceptions). For write operations, the file does not need to exist as `FileSystemFileHandle` will behave as a file path chosen by [save file picker](https://developer.mozilla.org/docs/Web/API/Window/showSaveFilePicker) and will create or overwrite the file, but the parent directory structure pointed by the file must exist and an existing file must be available to write and delete or the write operation will [throw a DOM exception](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createWritable#exceptions).
-
-
-
-
- Creates a object from a path that represents a Web [FileSystemDirectoryHandle](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle).
-
- The path pointed by the directory.
-
- This must be a syntactically correct fully qualified path, but it is not checked here whether it currently points to a directory. Any other state validation will be done when this handle is accessed from web content and will cause DOM exceptions if access operations fail. If an invalid path is passed, an `InvalidArgumentException` will be thrown.
-
-
- This is used to specify whether the Handle should be created with a Read-only or Read-and-write web permission.
- For the permission value specified here, the Web [PermissionStatus](https://developer.mozilla.org/docs/Web/API/PermissionStatus) will be `[granted](https://developer.mozilla.org/docs/Web/API/PermissionStatus/state)` and the unspecified permission will be `[prompt](https://developer.mozilla.org/docs/Web/API/PermissionStatus/state)`. Therefore, the web content then does not need to call [requestPermission](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/requestPermission) for the permission that was specified before attempting the permitted operation, but if it does, the promise will immediately be resolved with 'granted' PermissionStatus without firing the WebView2 event or prompting the user for permission. Otherwise, `requestPermission` will behave as the status of permission is currently `Prompt`, which means the `PermissionRequested` event will fire or the user will be prompted.
- Note: An exception to this is, if there is a parent directory handle that has broader permissions in the same page context than specified in here, the handle will automatically inherit the most permissive permission of the parent handle when posted to that page context. i.e. If there is already a `FileSystemDirectoryHandle` to `C:\foo` that has write permission on a page, even though a to directory `C:\example\directory` may be created with permission, when posted to that page, write permission will be automatically granted to the created handle.
- Additionally, the app must have the same OS permissions that have propagated to the [WebView2 browser process](/microsoft-edge/webview2/concepts/process-model) for the path it wishes to give the web content to make any operations on the directory. Specifically, the WebView2 browser process will run in same user, package identity, and app container of the app, but other means such as security context impersonations do not get propagated, so such permissions that the app has, will not be effective in WebView2.
-
-
-
- An app needs to be mindful that this object, when posted to the web content, provides it with unusual access to OS file system via the Web FileSystem API! The app should therefore only post objects for paths that it wants to allow access to the web content and it is not recommended that the web content "asks" for this path. The app should also check the source property of the target to ensure that it is sending to the web content of intended origin. Once the object is passed to web content, the path must point to a directory as if it was chosen via [directory picker](https://developer.mozilla.org/docs/Web/API/Window/showDirectoryPicker) otherwise any IO operation done on the `FileSystemDirectoryHandle` will throw a DOM exception.
-
-
-
-
- Options used to create WebView2 Environment.
-
-
- Default values will use your defaulted Edge WebView2 Runtime binaries and
- user data folder.
-
-
-
-
-
-
-
-
-
-
-
-
- Initializes a new instance of the CoreWebView2EnvironmentOptions class.
-
-
- AdditionalBrowserArguments can be specified to change the behavior of
- the WebView.
-
-
- The default language that WebView will run with.
-
-
- The version of the Edge WebView2 Runtime binaries required to be
- compatible with the calling application.
-
-
- Set to true if single sign on be enabled using the end user's OS primary
- account. Defaults to false.
-
-
- List of custom scheme registrations to be applied to the .
-
-
-
-
- Initializes a new instance of the CoreWebView2EnvironmentOptions class.
-
-
- AdditionalBrowserArguments can be specified to change the behavior of
- the WebView.
-
-
- The default language that WebView will run with.
-
-
- The version of the Edge WebView2 Runtime binaries required to be
- compatible with the calling application.
-
-
- Set to true if single sign on be enabled using the end user's OS primary
- account. Defaults to false.
-
-
- List of custom scheme registrations to be applied to the .
-
-
- Set to CoreWebView2ChannelSearchKind.LeastStable so that environment
- creation searches for binaries from least to most stable:
- Canary -> Dev -> Beta -> WebView2 Runtime.
- Defaults to CoreWebView2RuntimeChannel.MostStable.
-
-
- The release channels that are searched for during environment creation.
-
-
-
-
- List of custom scheme registrations to be applied to the
-
-
-
-
- Gets or sets the additional browser arguments to change the behavior of the WebView.
-
-
-
- The arguments are passed to the browser process as part of the command. For more information about using command-line switches with Chromium browser processes, navigate to [Run Chromium with Flags](https://aka.ms/RunChromiumWithFlags). The value appended to a switch is appended to the browser process, for example, in --edge-webview-switches=xxx the value is xxx. If you specify a switch that is important to WebView functionality, it is ignored, for example, --user-data-dir. Specific features are disabled internally and blocked from being enabled. If a switch is specified multiple times, only the last instance is used.
-
-
-
- A merge of the different values of the same switch is not attempted, except for disabled and enabled features. The features specified by --enable-features and --disable-features will be merged with simple logic:
-
-
-
- The features are the union of the specified features and built-in features. If a feature is disabled, it is removed from the enabled features list.
-
-
-
-
- If you specify command-line switches and sets this property, the --edge-webview-switches value takes precedence and is processed last. If a switch fails to parse, the switch is ignored. The default state for the operation is to run the browser process with no extra flags.
-
-
- Please note that calling this API twice will replace the previous value rather than appending to it. If there are multiple switches, there should be a space in between them. The one exception is if multiple features are being enabled/disabled for a single switch, in which case the features should be comma-separated. Ex. "--disable-features=feature1,feature2 --some-other-switch --do-something"
-
-
-
-
-
- Gets or sets the default display language for WebView.
-
-
- It applies to browser UIs such as context menu and dialogs. It also applies to the accept-languages HTTP header that WebView sends to websites. The intended locale value is in the format of BCP 47 Language Tags. More information can be found from [IETF BCP47](https://www.ietf.org/rfc/bcp/bcp47.html).
-
-
-
-
- Gets or sets the version of the WebView2 Runtime binaries required to be compatible with your app.
-
-
- This defaults to the WebView2 Runtime version that corresponds with the version of the SDK the app is using. The format of this value is the same as the format of the property and other BrowserVersion values. Only the version part of the BrowserVersion value is respected. The channel suffix, if it exists, is ignored. The version of the WebView2 Runtime binaries actually used may be different from the specified TargetCompatibleBrowserVersion. The binaries are only guaranteed to be compatible. Verify the actual version on the property.
-
-
-
-
- Determines whether to enable single sign on with Azure Active Directory (AAD) resources inside WebView using the logged in Windows account and single sign on (SSO) with web sites using Microsoft account associated with the login in Windows account.
-
-
- The default value is false. Universal Windows Platform apps must also declare enterpriseCloudSSO [restricted capability](/windows/uwp/packaging/app-capability-declarations#restricted-capabilities) for the single sign on (SSO) to work.
-
-
-
-
- Determines whether other processes can create from created with the same user data folder and therefore sharing the same WebView browser process instance.
-
-
- The default value is false.
-
-
-
-
- When IsCustomCrashReportingEnabled is set to true, Windows won't send crash data to Microsoft endpoint.
-
-
- The default value is false. In this case, WebView will respect OS consent.
-
-
-
-
- The EnableTrackingPrevention property is used to enable/disable tracking prevention feature in WebView2. This property enable/disable tracking prevention for all the WebView2's created in the same environment. By default this feature is enabled to block potentially harmful trackers and trackers from sites that aren't visited before and set to or whatever value was last changed/persisted on the profile.
-
-
- You can set this property to false to disable the tracking prevention feature if the app only renders content in the WebView2 that is known to be safe. Disabling this feature when creating environment also improves runtime performance by skipping related code.
-
- You shouldn't disable this property if WebView2 is being used as a "full browser" with arbitrary navigation and should protect end user privacy.
-
- There is property to control levels of tracking prevention of the WebView2's associated with a same profile. However, you can also disable tracking prevention later using property and value but that doesn't improves runtime performance.
-
- See for more details.
-
- Tracking prevention protects users from online tracking by restricting the ability of trackers to access browser-based storage as well as the network. See [Tracking prevention](/microsoft-edge/web-platform/tracking-prevention).
-
-
-
-
- Enable/disable browser extensions.
-
-
- When AreBrowserExtensionsEnabled is set to true, new extensions can be added to user profile and used. AreBrowserExtensionsEnabled is default to be false, in this case, new extensions can't be installed, and already installed extension won't be available to use in user profile. If connecting to an already running environment with a different value for AreBrowserExtensionsEnabled property, it will fail with HRESULT_FROM_WIN32(ERROR_INVALID_STATE). See for Extensions API details.
-
-
-
-
- Set ChannelSearchKind to CoreWebView2ChannelSearchKind.LeastStable so that the WebView2 loader searches for binaries from least to most stable: Canary -> Dev -> Beta -> WebView2 Runtime.
-
-
- The ChannelSearchKind property is CoreWebView2ChannelSearchKind.MostStable by default and environment creation searches for a release channel on the machine from most to least stable using the first channel found. The default search order is: WebView2 Release -> Beta -> Dev -> Canary. Set ChannelSearchKind to CoreWebView2ChannelSearchKind.LeastStable to reverse the search order so that environment creation searches for a channel from least to most stable. If a ReleaseChannels has been provided, environment creation will only search for channels in the set. See for more details on channels. This property can be overridden by the corresponding registry key ChannelSearchKind or the environment variable WEBVIEW2_CHANNEL_SEARCH_KIND. Set the value to 1 to reverse the search order. See for more details on overrides.
-
-
-
-
- Sets the ReleaseChannels, which is a mask of one or more CoreWebView2ReleaseChannels indicating which channels environment creation should search for.
-
-
- OR operation(s) can be applied to multiple CoreWebView2ReleaseChannels to create a mask. The default value is a mask of all the channels. By default, environment creation searches for channels from most to least stable, using the first channel found on the device. When ReleaseChannels is provided, environment creation will only search for the channels specified in the set. Set ChannelSearchKind to CoreWebView2ChannelSearchKind.LeastStable to reverse the search order so that environment creation searches for the least stable build first. See for descriptions of each channel. Environment creation fails if it is unable to find any channel from the ReleaseChannels installed on the device. Use to verify which channel is used. If both a BrowserExecutableFolder and ReleaseChannels are provided, the BrowserExecutableFolder takes precedence. The ReleaseChannels can be overridden by the corresponding registry override ReleaseChannels or the environment variable WEBVIEW2_RELEASE_CHANNELS. Set the value to a comma-separated string of integers, which map to the following release channel values: Stable (0), Beta (1), Dev (2), and Canary (3). For example, the values "0,2" and "2,0" indicate that environment creation should only search for Dev channel and the WebView2 Runtime, using the order indicated by . Environment creation attempts to interpret each integer and treats any invalid entry as Stable channel.
-
-
-
- ReleaseChannels
- Channel Search Kind: Most Stable (default)
- Channel Search Kind: Least Stable
-
-
- CoreWebView2ReleaseChannels.Beta | CoreWebView2ReleaseChannels.Stable
- WebView2 Runtime -> Beta
- Beta -> WebView2 Runtime
-
-
- CoreWebView2ReleaseChannels.Canary | CoreWebView2ReleaseChannels.Dev | CoreWebView2ReleaseChannels.Beta | CoreWebView2ReleaseChannels.Stable
- WebView2 Runtime -> Beta -> Dev -> Canary
- Canary -> Dev -> Beta -> WebView2 Runtime
-
-
- CoreWebView2ReleaseChannels.Canary
- Canary
- Canary
-
-
- CoreWebView2ReleaseChannels.Beta | CoreWebView2ReleaseChannels.Canary | CoreWebView2ReleaseChannels.Stable
- WebView2 Runtime -> Beta -> Canary
- Canary -> Beta -> WebView2 Runtime
-
-
-
-
-
-
- Set ScrollBar style to be used.
-
-
- The default is CoreWebView2ScrollbarStyle.Default which specifies the default browser ScrollBar style. CSS styles that modify the ScrollBar applied on top of native ScrollBar styling that is selected with CoreWebView2ScrollbarStyle.
-
-
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
- CoreWebView2Frame provides direct access to the iframes information and handling. You can get a CoreWebView2Frame by handling the event.
-
-
-
-
- Adds the provided host object to script running in the WebViewFrame with the specified name for the list of the specified origins.
- The host object will be accessible for this iframe only if the iframe's origin during
- access matches one of the origins which are passed. The provided origins
- will be normalized before comparing to the origin of the document.
- So the scheme name is made lower case, the host will be punycode decoded
- as appropriate, default port values will be removed, and so on.
- This means the origin's host may be punycode encoded or not and will match
- regardless. If list contains malformed origin the call will fail.
- The method can be called multiple times in a row without calling
- RemoveHostObjectFromScript for the same object name. It will replace
- the previous object with the new object and new list of origins.
- List of origins will be treated as following:
- 1. empty list - call will succeed and object will be added for the iframe
- but it will not be exposed to any origin;
- 2. list with origins - during access to host object from iframe the
- origin will be checked that it belongs to this list;
- 3. list with "*" element - host object will be available for iframe for
- all origins. We suggest not to use this feature without understanding
- security implications of giving access to host object from from iframes
- with unknown origins.
- 4. list with "file://" element - host object will be available for iframes
- loaded via file protocol.
-
-
- The name of the host object.
-
-
- The host object to be added to script.
-
-
- The list of the iframe origins for which host object will be accessible.
-
-
-
-
-
- The value of iframe's window.name property. The default value equals to iframe html tag declaring it.
-
-
-
-
- NameChanged is raised when the iframe changes its window.name property.
-
-
-
-
-
- Destroyed event is raised when the iframe corresponding to this object is removed or the document containing that iframe is destroyed.
-
-
-
-
-
- Remove the host object specified by the name so that it is no longer accessible from JavaScript code in the iframe.
-
-
- While new access attempts are denied, if the object is already obtained by JavaScript code in the iframe, the JavaScript code continues to have access to that object. Calling this method for a name that is already removed or was never added fails. If the iframe is destroyed this method will return fail also.
-
-
-
-
- Check whether a frame is destroyed. Returns true during the event.
-
-
-
-
- NavigationStarting is raised when the current frame is requesting permission to navigate to a different URI.
-
-
- A frame navigation will raise a event and a event. All of the event handlers will be run before the event handlers. All of the event handlers share a common object. Whichever event handler is last to change the property will decide if the frame navigation will be cancelled.
- Redirects raise this event as well, and the navigation id is the same as the original one. You may block corresponding navigations until the event handler returns.
-
-
-
-
- ContentLoading is raised before any content is loaded, including scripts added with . ContentLoading is not raised if a same page navigation occurs.
-
-
- This operation follows the event and precedes the and events.
-
-
-
-
- NavigationCompleted is raised when the current frame has completely loaded (body.onload has been raised) or loading stopped with error.
-
-
-
-
- DOMContentLoaded is raised when the initial HTML document has been parsed.
-
-
- This aligns with the the document's DOMContentLoaded event in HTML.
-
-
-
-
- WebMessageReceived is raised when the setting is set and the iframe runs window.chrome.webview.postMessage.
-
-
- The postMessage function is void postMessage(object) where object is any object supported by JSON conversion.
- When postMessage is called, the handler's Invoke method will be called with the object parameter postMessage converted to a JSON string.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebMessageReceivedIFrame":::
-
-
-
-
- Runs JavaScript code from the javaScript parameter in the current frame.
-
- The JavaScript code to be run in the current frame.
- A JSON encoded string that represents the result of running the provided JavaScript.
-
- A function that has no explicit return value returns undefined. If the script that was run throws an unhandled exception, then the result is also null. This method is applied asynchronously.
- If the method is run before , the script will not be executed and the JSON null will be returned.
- This operation works even if is set to false.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ExecuteScriptFrame":::
-
-
-
-
- Posts the specified webMessageAsJson to the current frame.
-
- The web message to be posted to the iframe.
-
- The event args is an instance of MessageEvent. The setting must be true or the message will not be sent. The event arg's data property of the event arg is the webMessageAsJson string parameter parsed as a JSON string into a JavaScript object. The event arg's source property of the event arg is a reference to the window.chrome.webview object. For information about sending messages from the iframe to the host, navigate to . The message is sent asynchronously. If a navigation occurs before the message is posted to the iframe, the message is not be sent.
-
-
- Runs the message event of the window.chrome.webview of the iframe. JavaScript in that document may subscribe and unsubscribe to the event using the following code:
-
- window.chrome.webview.addEventListener('message', handler)
- window.chrome.webview.removeEventListener('message', handler)
-
-
-
-
-
-
-
-
- Posts a message that is a simple string rather than a JSON string representation of a JavaScript object.
-
- The web message to be posted to the iframe.
-
- This behaves in exactly the same manner as , but the data property of the event arg of the window.chrome.webview message is a string with the same value as webMessageAsString. Use this instead of if you want to communicate using simple strings rather than JSON objects.
-
-
-
-
-
-
- PermissionRequested is raised when content in an iframe or any of its descendant iframes requests permission to access some privileged resources.
-
-
- This relates to the PermissionRequested event on the CoreWebView2.
- Both these events will be raised in the case of an iframe requesting permission. The CoreWebView2Frame's event handlers will be invoked before the event handlers on the CoreWebView2. If the Handled property of the PermissionRequestedEventArgs is set to TRUE within the CoreWebView2Frame event handler, then the event will not be raised on the CoreWebView2, and it's event handlers will not be invoked.
- In the case of nested iframes, the PermissionRequested event will be raised from the top level iframe.
- If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed.
-
-
-
-
- Share a shared buffer object with script of the iframe in the WebView.
-
- The object to be shared with script.
- The desired given to script.
- Additional data to be send to script. If it is not null or empty string, and it is not a valid JSON string, will be thrown.
-
- The script will receive a sharedbufferreceived event from chrome.webview.
- The event arg for that event will have the following methods and properties.
-
-
-
- Property
- Description
-
-
- getBuffer()
- A method that returns an ArrayBuffer object with the backing content from the shared buffer.
-
-
- additionalData
- An object as the result of parsing additionalDataAsJson as JSON string. This property will be undefined if additionalDataAsJson is nullptr or empty string.
-
-
- source
- With a value set as chrome.webview object.
-
-
-
- If access is , the script will only have read access to the buffer.
- If the script tries to modify the content in a read only buffer, it will cause an access violation in WebView renderer process and crash the renderer process.
-
- If the shared buffer is already closed, the API throws with error code of RO_E_CLOSED.
- The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access to the shared buffer any more.
-
- The application can post the same shared buffer object to multiple web pages or iframes, or post to the same web page or iframe multiple times.
- Each PostSharedBufferToScript will create a separate ArrayBuffer object with its own view of the memory and is separately released.
- The underlying shared memory will be released when all the views are released.
-
- Sharing a buffer to script has security risk. You should only share buffer with trusted site.
- If a buffer is shared to a untrusted site, possible sensitive information could be leaked.
- If a buffer is shared as modifiable by the script and the script modifies it in an unexpected way, it could result in corrupted data that might even crash the application.
-
- The example code shows how to send data to script for one time read only consumption.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="OneTimeShareBuffer":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_1":::
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/assets/sharedBuffer.html" id="ShareBufferScriptCode_2":::
-
-
-
-
- The unique identifier of the current frame. It's the same kind of ID as with the and .
-
-
-
-
- ScreenCaptureStarting event is raised when the [Screen Capture API](https://www.w3.org/TR/screen-capture/) is requested by the user using getDisplayMedia().
-
-
- This relates to the ScreenCaptureStarting event on the CoreWebView2.
- Both these events will be raised in the case of an iframe requesting screen capture. The CoreWebView2Frame's event handlers will be invoked before the event handlers on the CoreWebView2. If the Handled property of the ScreenCaptureStartingEventArgs is set to TRUE within the CoreWebView2Frame event handler, then the event will not be raised on the CoreWebView2, and it's event handlers will not be invoked.
- In the case of nested iframes, the ScreenCaptureStarting event will be raised from the top level iframe.
- If a deferral is not taken on the event args, the subsequent scripts are blocked until the event handler returns. If a deferral is taken, the scripts are blocked until the deferral is completed.
-
-
-
-
-
- Iterator for a collection of HTTP headers.
-
-
-
-
-
-
-
-
-
- No COM support; throws instead.
-
-
- No COM support.
-
-
-
-
-
-
-
- Gets the header in the
- or collection at the
- current position of the enumerator.
-
-
-
-
-
- true when the iterator has not run out of headers.
-
-
- If the collection over which the iterator is iterating is empty or if the iterator has gone past the end of the collection then this is false.
-
-
-
-
- HTTP request headers.
-
-
- Used to inspect the HTTP request on event and event. It is possible to modify the HTTP request headers from a event, but not from a event.
-
-
-
-
-
-
-
-
-
-
-
-
- Returns an enumerator that iterates through the or collection.
-
-
-
-
- Gets the header value matching the name.
-
- The header value matching the name.
-
-
-
- Gets the header value matching the name using a .
-
- The header value matching the name.
-
-
-
- Checks whether the headers contain an entry that matches the header name.
-
- Whether the headers contain an entry that matches the header name.
-
-
-
- Adds or updates header that matches the name.
-
-
-
-
- Removes header that matches the name.
-
-
-
-
- Gets a over the collection of request headers.
-
-
-
-
- HTTP response headers.
-
-
- Used to construct a for the event.
-
-
-
-
-
-
-
-
-
-
- Returns an enumerator that iterates through the or collection.
-
-
-
-
- Appends header line with name and value.
-
- The header name to be appended.
- The header value to be appended.
-
-
-
- Checks whether this CoreWebView2HttpResponseHeaders contain entries matching the header name.
-
- The name of the header to seek.
-
-
-
- Gets the first header value in the collection matching the name.
-
- The header name.
- The first header value in the collection matching the name.
-
-
-
- Gets the header values matching the name.
-
- The header name.
-
-
-
- Gets a over the collection of entire .
-
-
-
-
- Event args for the CoreWebView2InitializationCompleted event.
-
-
-
-
- Initializes a new instance of the CoreWebView2InitializationCompletedEventArgs class.
-
-
- Exception that occurred during initialization, or null if initialization was successful.
-
-
-
-
- True if the init task completed successfully.
-
-
-
-
- The exception thrown from the init task. If the task completed successfully, this property is null.
-
-
-
-
- An object that represents a [HTML Notification object](https://developer.mozilla.org/docs/Web/API/Notification).
-
-
-
-
- Specifies the time at which a notification is created or applicable
- (past, present, or future).
-
-
-
-
- Gets the vibration pattern for devices with vibration hardware to emit.
-
-
- The vibration pattern can be represented by an array of 64-bit
- unsigned integers describing a pattern of vibrations and pauses. See
- [Vibration API](https://developer.mozilla.org/docs/Web/API/Vibration_API) for
- more information. This corresponds to
- [Notification.vibrate](https://developer.mozilla.org/docs/Web/API/Notification/vibrate)
- DOM API. An empty list is returned if no vibration patterns are
- specified.
-
-
-
-
- A string representing the body text of the notification.
-
-
- The default value is an empty string.
-
-
-
-
- The text direction in which to display the notification.
-
-
- This corresponds to [Notification.dir](https://developer.mozilla.org/docs/Web/API/Notification/dir) DOM API. The default value is .
-
-
-
-
- The notification's language, as intended to be specified using a string representing a language tag (such as en-US) according to [BCP47](https://datatracker.ietf.org/doc/html/rfc5646).
-
-
- Note that no validation is performed on this property and it can be any string the notification sender specifies. This corresponds to [Notification.lang](https://developer.mozilla.org/docs/Web/API/Notification/lang) DOM API. The default value is an empty string.
-
-
-
-
- A string representing an identifying tag for the notification.
-
-
- This corresponds to [Notification.tag](https://developer.mozilla.org/docs/Web/API/Notification/tag) DOM API. The default value is an empty string.
-
-
-
-
- A string containing the URI of an icon to be displayed in the notification.
-
-
- The default value is an empty string.
-
-
-
-
- The title of the notification.
-
-
-
-
- A string containing the URI of the image used to represent the notification when there isn't enough space to display the notification itself.
-
-
- The default value is an empty string.
-
-
-
-
- A string containing the URI of an image to be displayed in the notification.
-
-
- The default value is an empty string.
-
-
-
-
- Indicates whether the user should be notified after a new notification replaces an old one.
-
-
- This corresponds to [Notification.renotify](https://developer.mozilla.org/docs/Web/API/Notification/renotify) DOM API. The default value is false.
-
-
-
-
- A boolean value indicating that a notification should remain active until the user clicks or dismisses it, rather than closing automatically.
-
-
- This corresponds to [Notification.requireInteraction](https://developer.mozilla.org/docs/Web/API/Notification/requireInteraction) DOM API. Note that you may not be able to necessarily implement this due to native API limitations. The default value is false.
-
-
-
-
- Indicates whether the notification should be silent -- i.e., no sounds or vibrations should be issued, regardless of the device settings.
-
-
- This corresponds to [Notification.silent](https://developer.mozilla.org/docs/Web/API/Notification/silent) DOM API. The default value is false.
-
-
-
-
- This event is raised when the notification is closed by the web code, such as through notification.close().
-
-
- You don't need to call since this is coming from the web code.
-
-
-
-
- The host may run this to report the notification has been displayed and it will cause the [show](https://developer.mozilla.org/docs/Web/API/Notification/show_event) event to be raised for non-persistent notifications.
-
-
- You must not run this unless you are handling the . API throws COMException with error code of HRESULT_FROM_WIN32(ERROR_INVALID_STATE) if is false when this is called.
-
-
-
-
- The host may run this to report the notification has been clicked, and it will cause the [click](https://developer.mozilla.org/docs/Web/API/Notification/click_event) event to be raised for non-persistent notifications.
-
- You must not run this unless you are handling the . API throws COMException with error code of HRESULT_FROM_WIN32(ERROR_INVALID_STATE) if is false or has not been run when this is called.
-
-
-
- The host may run this to report the notification was dismissed, and it will cause the [close](https://developer.mozilla.org/docs/Web/API/Notification/close_event) event to be raised for non-persistent notifications.
-
-
- You must not run this unless you are handling the . API throws COMException with error code of HRESULT_FROM_WIN32(ERROR_INVALID_STATE) if is false or has not been run when this is called.
-
-
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
- Multiple profiles can be created under a single user data directory but with separated cookies, user preference settings, and various data storage etc.. If the CoreWebView2 was created with a , the CoreWebView2Profile will match those specified options. Otherwise if this CoreWebView2 was created without a , then this will be the default CoreWebView2Profile for the corresponding CoreWebView2Environment.
-
-
-
-
- Clear the browsing data for the specified dataKinds between the
- startTime and endTime. Overload the ClearBrowsingDataAsync method to
- allow for additional time parameters.
-
-
-
-
- Clear the entirety of the browsing data associated with the profile
- it is called on. It clears the data regardless of timestamp.
-
-
-
-
- The name of the profile.
-
-
-
-
- InPrivate mode is enabled or not.
-
-
-
-
- Full path of the profile directory.
-
-
-
-
- The default download folder path.
-
-
- The default value is the system default download folder path for the user. The default download folder path is persisted in the user data folder across sessions. The value should be an absolute path to a folder that the user and application can write to. Throws an exception if the value is invalid, and the default download path is not changed. Otherwise the path is changed immediately. If the directory does not yet exist, it is created at the time of the next download. If the host application does not have permission to create the directory, then the user is prompted to provide a new path through the Save As dialog. The user can override the default download folder path for a given download by choosing a different path in the Save As dialog.
-
-
-
-
- The PreferredColorScheme property sets the overall color scheme of the WebView2s associated with this profile.
-
-
- This sets the color scheme for WebView2 UI like dialogs, prompts, and menus by setting the media feature prefers-color-scheme.
- The default value for this is , which will follow whatever color scheme the OS is currently set to.
-
-
-
-
- Clear the browsing data of the associated profile.
-
-
- Clears browsing data on the profile the method is called on. Additional optional parameters include the start time and end time to clear the browsing data between as well as the data specific data kinds to clear on the profile. The method may be overloaded to take:
-
-
- No parameters - in which the entirety of the data on the profile will be cleared.
-
-
- The data kind(s) - in which the data kind(s) will be cleared for their entirety.
-
-
- The data kind(s), start time, and end time - in which the data kind(s) will be cleared between the start and end time. The start time will be offset by -1.0 and the end time will be offset by +1.0 to include the last fractional second on each respective end. The start time is inclusive in the time period while the end time is exclusive.
-
-
-
- The exposed methods are as follows:
-
- ClearBrowsingDataAsync(CoreWebView2BrowsingDataKinds dataKinds);
- ClearBrowsingDataAsync(CoreWebView2BrowsingDataKinds dataKinds, DateTime startTime, DateTime endTime);
- ClearBrowsingDataAsync();
-
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ClearBrowsingData":::
-
-
-
-
- The PreferredTrackingPreventionLevel property allows you to control levels of tracking prevention for WebView2 which are associated with a profile. This level would apply to the context of the profile. That is, all WebView2s sharing the same profile will be affected and also the value is persisted in the user data folder.
-
-
- See for descriptions of levels.
-
- If tracking prevention feature is enabled when creating the WebView2 environment, you can also disable tracking prevention later using this property and value but that doesn't improves runtime performance.
-
- There is property to enable/disable tracking prevention feature for all the WebView2's created in the same environment. If enabled, PreferredTrackingPreventionLevel is set to by default for all the WebView2's and profiles created in the same environment or is set to the level whatever value was last changed/persisted to the profile. If disabled PreferredTrackingPreventionLevel is not respected by WebView2. If PreferredTrackingPreventionLevel is set when the feature is disabled, the property value get changed and persisted but it will takes effect only if is true.
-
- See for more details.
-
-
-
-
- Sets permission state for the given permission kind and origin asynchronously.
-
-
- The state change persists across sessions until it is changed by another call to SetPermissionState, or by setting the State property in PermissionRequestedEventArgs. Setting the state to will erase any state saved in the profile and restore the default behavior. The origin should have a valid scheme and host (e.g. "https://www.example.com"), otherwise the method fails. Additional URI parts like path and fragment are ignored. For example, "https://wwww.example.com/app1/index.html/" is treated the same as "https://wwww.example.com". See the [MDN origin definition](https://developer.mozilla.org/docs/Glossary/Origin) for more details.
-
-
-
-
- Invokes the handler with a collection of all nondefault permission settings.
-
-
- Use this method to get the permission state set in the current and previous sessions.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GetNonDefaultPermissionSettings":::
-
-
-
-
- Get the which Creates, adds or updates, gets, or or view the cookies for the current profile.
-
-
- All CoreWebView2s associated with this profile share the same cookie values. Changes to cookies in this cookie manager apply to all CoreWebView2s associated with this profile.
-
-
-
-
-
- Determines whether password information will be autosaved.
-
-
- When disabled, no new password data is saved and no Save/Update Password prompts are displayed. However, if there was password data already saved before disabling this setting, then that password information is auto-populated, suggestions are shown and clicking on one will populate the fields.
- When enabled, password information is auto-populated, suggestions are shown and clicking on one will populate the fields, new data is saved, and a Save/Update Password prompt is displayed. The default value is false. It will apply immediately after setting.
- This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value.
-
-
-
-
- Determines whether general form information will be saved and autofilled.
-
-
- General autofill information includes information like names, street and email addresses, phone numbers, and arbitrary input. This excludes password information. When disabled, no suggestions appear, and no new information is saved.
- When enabled, information is saved, suggestions appear, and clicking on one will populate the form fields. The default value is true. It will apply immediately after setting.
- This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value.
-
-
-
-
- Add a browser extension to the current user profile from extensionFolderPath.
-
- The manifest.json folder path.
-
- See for descriptions of browser extensions.
-
- Adds the [browser extension](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions) using the extension path for unpacked extensions from the local device. Extension is running right after installation.
- The extension folder path is the topmost folder of an unpacked browser extension and contains the browser extension manifest file.
- If the extensionFolderPath is an invalid path or doesn't contain the extension manifest.json file, this function will return ERROR_FILE_NOT_FOUND to callers.
- Installed extension will default to true. When is false, AddBrowserExtension will fail and return HRESULT ERROR_NOT_SUPPORTED.
- During installation, the content of the extension is not copied to the user data folder. Once the extension is installed, changing the content of the extension will cause the extension to be removed from the installed profile.
- When an extension is added the extension is persisted in the corresponding profile. The extension will still be installed the next time you use this profile.
- When an extension is installed from a folder path, adding the same extension from the same folder path means reinstalleing this extension. When two extensions with the same Id are installed, only the later installed extension will be kept.
- The following summarizes the possible error values that can be returned from AddBrowserExtension and a description of why these errors occur.
-
-
-
- Error value
- Description
-
-
- HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
- Extensions are disabled.
-
-
- HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
- Cannot find manifest.json file or it is not a valid extension manifest.
-
-
- E_ACCESSDENIED
- Cannot load extension with file or directory name starting with _, reserved for use by the system.
-
-
- E_FAIL
- Extension failed to install with other unknown reasons.
-
-
-
-
-
-
-
- Gets a snapshot of the set of extensions on current user profile.
-
-
- See for descriptions of browser extensions.
-
- Gets a snapshot of the set of extensions installed at the time GetBrowserExtensions is called. If an extension is installed or uninstalled after GetBrowserExtensions completes, the list returned by GetBrowserExtensions remains the same. When AreBrowserExtensionsEnabled is false, GetBrowserExtensions won't return any extensions on current user profile.
-
-
-
-
- Raised when profile is marked for deletion.
-
-
- When this event is raised, the CoreWebView2Profile and its corresponding CoreWebView2s have been closed, and cannot be used anymore.
-
-
-
-
- Delete this profile and close the corresponding s.
-
-
- After the API is called, the profile will be marked for deletion. The local profile's directory will be deleted at browser process exit. If it fails to delete, because something else is holding the files open, WebView2 will try to delete the profile at all future browser process starts until successful. The corresponding CoreWebView2s will be closed and the event will be raised. See for more information. If you try to create a new profile with the same name as an existing profile that has been marked as deleted but hasn't yet been deleted, profile creation will fail with HRESULT_FROM_WIN32(ERROR_DELETE_PENDING).
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the URI of the document that sent this web message.
-
-
-
-
- Gets the message posted from the WebView content to the host converted to a JSON string.
-
-
- Run this operation to communicate using JavaScript objects.
-
-
- For example, the following postMessage runs result in the following WebMessageAsJson values:
-
-
- postMessage({'a': 'b'}) "{\"a\": \"b\"}"
- postMessage(1.2) "1.2"
- postMessage('example') "\"example\""
-
-
-
-
-
- Gets the message posted from the WebView content to the host as a string.
-
- The message posted from the WebView content to the host.
- The message posted is some other kind of JavaScript type.
-
- Run this operation to communicate using simple strings.
-
-
- For example the following postMessage runs result in the following values returned by TryWebMessageAsString:
-
-
- postMessage({'a': 'b'}) ArgumentException
- postMessage(1.2) ArgumentException
- postMessage('example') "example"
-
-
-
-
-
- Additional received WebMessage objects.
-
-
- To pass AdditionalObjects via WebMessage to the app, use the chrome.webview.postMessageWithAdditionalObjects content API. Any DOM object type that can be natively representable that has been passed in to additionalObjects parameter will be accessible here. Currently a WebMessage object can be the type.
- Entries in the collection can be nullptr if null or undefined was passed. Cast the object to the native type to access its specific properties.
-
- object additionalObject = eventArgs.AdditionalObjects[0];
- if (additionalObject is CoreWebView2File)
- {
- CoreWebView2File file = additionalObject as CoreWebView2File;
- } else if ...
-
-
-
-
-
- This is used to complete deferrals on event args that support getting deferrals using the GetDeferral method. This class implements .
-
-
-
-
-
-
-
-
- Protected implementation of Dispose pattern.
-
-
-
-
- Completes the associated deferred event.
-
-
- Complete should only be run once for each deferral taken.
-
-
-
-
- This class is deprecated; use CoreWebView2PrivateHostObjectHelper instead.
-
-
-
-
- A shared memory based buffer object that is created by . The object is presented to script as ArrayBuffer when posted to script with .
-
-
-
-
-
-
-
- Protected implementation of Dispose pattern.
-
-
-
-
- The file mapping handle of the shared memory of the buffer.
-
-
- Normal app should use to
- get a stream object to access the buffer.
- For advanced scenarios, you could use native file mapping APIs to obtain
- other views or duplicate this handle to another application process and
- create a view from the duplicated handle in that process to access the buffer
- from that separate process.
-
-
-
-
- The size of the shared buffer in bytes.
-
-
-
-
- The raw memory address of the buffer.
-
-
- You can cast it to pointer to real data types like byte* to access the memory from unsafe code region.
- Normal app should use to get a stream object to access the buffer.
-
-
-
-
- Get an stream object that can be used to access the shared buffer.
-
-
-
-
- Release the backing shared memory.
-
-
- The application should call Close or when no access to the buffer is needed any more, to ensure that the underlying resources are released timely even if the shared buffer object itself is not released due to some leaked reference.
- After the shared buffer is closed, the buffer address and file mapping handle previously obtained becomes invalid and cannot be used anymore.
- Properties of the object will also be unaccessible. Operations like Read or Write on the stream objects returned from will also fail.
- will also fail. The failures will be represented as with error code of RO_E_CLOSED.
-
- The script code should call chrome.webview.releaseBuffer with the shared buffer as the parameter to release underlying resources as soon as it does not need access the shared buffer any more.
- When script tries to access the buffer after calling chrome.webview.releaseBuffer, JavaScript TypeError exception will be raised complaining about accessing a detached ArrayBuffer, the same exception when trying to access a transferred ArrayBuffer.
-
- Closing the buffer object on native side doesn't impact access from Script and releasing the buffer from script doesn't impact access to the buffer from native side. The underlying shared memory will be released by the OS when both native and script side release the buffer.
-
-
-
-
- Constructor
-
-
-
-
- Read at most bufferSize bytes into buffer and return the effective
- number of bytes read in bytesReadPtr (unless null).
-
-
- mscorlib disassembly shows the following MarshalAs parameters
- void Read([Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] byte[] pv, int cb, IntPtr pcbRead);
- This means marshaling code will have found the size of the array buffer in the parameter bufferSize.
-
-
- Critical: calls Marshal.WriteInt32 which LinkDemands, takes pointers as input
-
-
-
-
- Move the stream pointer to the specified position.
-
-
- System.IO.stream supports searching past the end of the stream, like
- OLE streams.
- newPositionPtr is not an out parameter because the method is required
- to accept NULL pointers.
-
-
- Critical: calls Marshal.WriteInt64 which LinkDemands, takes pointers as input
-
-
-
-
- Sets stream's size.
-
-
-
-
- Obtain stream stats.
-
-
- STATSG has to be qualified because it is defined both in System.Runtime.InteropServices and
- System.Runtime.InteropServices.ComTypes.
- The STATSTG structure is shared by streams, storages and byte arrays. Members irrelevant to streams
- or not available from System.IO.Stream are not returned, which leaves only cbSize and grfMode as
- meaningful and available pieces of information.
- grfStatFlag is used to indicate whether the stream name should be returned and is ignored because
- this information is unavailable.
-
-
-
-
- Write at most bufferSize bytes from buffer.
-
-
- Critical: calls Marshal.WriteInt32 which LinkDemands, takes pointers as input
-
-
-
-
- Create a clone.
-
-
- Not implemented.
-
-
-
-
- Read at most bufferSize bytes from the receiver and write them to targetStream.
-
-
- Not implemented.
-
-
-
-
- Commit changes.
-
-
- Only relevant to transacted streams.
-
-
-
-
- Lock at most byteCount bytes starting at offset.
-
-
- Not supported by System.IO.Stream.
-
-
-
-
- Undo writes performed since last Commit.
-
-
- Relevant only to transacted streams.
-
-
-
-
- Unlock the specified region.
-
-
- Not supported by System.IO.Stream.
-
-
-
-
- The exception that is thrown when an WebView2 Runtime installation is missing.
-
-
-
-
- Initializes a new instance of the WebView2RuntimeNotFoundException class.
-
-
-
-
- Initializes a new instance of the WebView2RuntimeNotFoundException class with a specified error message.
-
-
- The error message that explains the reason for the exception.
-
-
-
-
- Initializes a new instance of the WebView2RuntimeNotFoundException class with a reference to the inner exception that is the cause of this exception.
-
-
- The exception that is the cause of the current exception.
-
-
-
-
- Initializes a new instance of the WebView2RuntimeNotFoundException class with a specified error message and a reference to the inner exception that is the cause of this exception.
-
-
- The error message that explains the reason for the exception.
-
-
- The exception that is the cause of the current exception.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Specifies the source of .
-
-
-
-
-
-
-
- Indicates that web resource is requested from main page including dedicated workers, iframes and main script for shared workers.
-
-
-
-
- Indicates that web resource is requested from shared worker.
-
-
-
-
- Indicates that web resource is requested from service worker.
-
-
-
-
- Indicates that web resource is requested from any supported source.
-
-
-
-
- Specifies the web resource request contexts.
-
-
-
-
- Specifies all resources.
-
-
-
-
- Specifies a document resources.
-
-
-
-
- Specifies a CSS resources.
-
-
-
-
- Specifies an image resources.
-
-
-
-
- Specifies another media resource such as a video.
-
-
-
-
- Specifies a font resource.
-
-
-
-
- Specifies a script resource.
-
-
-
-
- Specifies an XML HTTP request, Fetch and EventSource HTTP communication.
-
-
-
-
- Specifies a Fetch API communication.
-
-
- Note that this isn't working. Fetch API requests are fired as a part
- of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST.
-
-
-
- Specifies a TextTrack resource.
-
-
-
-
- Specifies an EventSource API communication.
-
-
- Note that this isn't working. EventSource API requests are fired as a part
- of COREWEBVIEW2_WEB_RESOURCE_CONTEXT_XML_HTTP_REQUEST.
-
-
-
- Specifies a WebSocket API communication.
-
-
-
-
- Specifies a Web App Manifest.
-
-
-
-
- Specifies a Signed HTTP Exchange.
-
-
-
-
- Specifies a Ping request.
-
-
-
-
- Specifies a CSP Violation Report.
-
-
-
-
- Specifies an other resource.
-
-
-
-
- Indicates the error status values for web navigations.
-
-
-
-
- Indicates that an unknown error occurred.
-
-
-
-
- Indicates that the SSL certificate common name does not match the web address.
-
-
-
-
- Indicates that the SSL certificate has expired.
-
-
-
-
- Indicates that the SSL client certificate contains errors.
-
-
-
-
- Indicates that the SSL certificate has been revoked.
-
-
-
-
- Indicates that the SSL certificate is not valid. The certificate may not match the public key pins for the host name, the certificate is signed by an untrusted authority or using a weak sign algorithm, the certificate claimed DNS names violate name constraints, the certificate contains a weak key, the validity period of the certificate is too long, lack of revocation information or revocation mechanism, non-unique host name, lack of certificate transparency information, or the certificate is chained to a [legacy Symantec root](https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html).
-
-
-
-
- Indicates that the host is unreachable.
-
-
-
-
- Indicates that the connection has timed out.
-
-
-
-
- Indicates that the server returned an invalid or unrecognized response.
-
-
-
-
- Indicates that the connection was stopped.
-
-
-
-
- Indicates that the connection was reset.
-
-
-
-
- Indicates that the Internet connection has been lost.
-
-
-
-
- Indicates that a connection to the destination was not established.
-
-
-
-
- Indicates that the provided host name was not able to be resolved.
-
-
-
-
- Indicates that the operation was canceled. This status code is also used when the app cancels a navigation via event, and for original navigation if the app navigates the WebView2 in a rapid succession away after the load for original navigation commenced, but before it completed.
-
-
-
-
- Indicates that the request redirect failed.
-
-
-
-
- An unexpected error occurred.
-
-
-
-
- Indicates that user is prompted with a login, waiting on user action. Initial navigation to a login site will always return this even if app provides credential using . HTTP response status code in this case is 401. See [status code reference](https://developer.mozilla.org/docs/Web/HTTP/Status).
-
-
-
-
- Indicates that user lacks proper authentication credentials for a proxy server. HTTP response status code in this case is 407. See [status code reference](https://developer.mozilla.org/docs/Web/HTTP/Status).
-
-
-
-
- Tracking prevention levels.
-
-
-
-
- Tracking prevention is turned off.
-
-
-
-
- The least restrictive level of tracking prevention. Set to this level to protect against malicious trackers but allows most other trackers and personalize content and ads. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions.
-
-
-
-
- The default level of tracking prevention. Set to this level to protect against social media tracking on top of malicious trackers. Content and ads will likely be less personalized. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions.
-
-
-
-
- The most restrictive level of tracking prevention. Set to this level to protect against malicious trackers and most trackers across sites. Content and ads will likely have minimal personalization. This level blocks the most trackers but could cause some websites to not behave as expected. See [Current tracking prevention behavior](/microsoft-edge/web-platform/tracking-prevention#current-tracking-prevention-behavior) for fine-grained information on what is being blocked with this level and can change with different Edge versions.
-
-
-
-
- Indicates the text direction of the notification.
-
-
-
-
- Indicates that the notification text direction adopts the browser's language setting behavior.
-
-
-
-
- Indicates that the notification text is left-to-right.
-
-
-
-
- Indicates that the notification text is right-to-left.
-
-
-
-
- Specifies the desired access from script to .
-
-
-
-
- Script from web page only has read access to the shared buffer.
-
-
-
-
- Script from web page has read and write access to the shared buffer.
-
-
-
-
- Specifies the action type when server certificate error is detected to be used in the .
-
-
-
-
- Indicates to ignore the warning and continue the request with the TLS certificate. This decision is cached for the RequestUri's host and the server certificate in the session.
-
-
-
-
- Indicates to reject the certificate and cancel the request.
-
-
-
-
- Indicates to display the default TLS interstitial error page to user for page navigations. For others TLS certificate is rejected and the request is cancelled.
-
-
-
-
- The ScrollBar style being set during environment creation.
-
-
-
-
- Browser default ScrollBar style
-
-
-
-
- Window style fluent overlay scroll bar. Please see [Fluent UI](https://developer.microsoft.com/fluentui#/) for more details on fluent UI.
-
-
-
-
- Specifies the JavaScript dialog kind used in .
-
-
-
-
- Indicates that the dialog uses window.alert JavaScript function.
-
-
-
-
- Indicates that the dialog uses window.confirm JavaScript function.
-
-
-
-
- Indicates that the dialog uses window.prompt JavaScript function.
-
-
-
-
- Indicates that the dialog uses window.beforeunload JavaScript event.
-
-
-
-
-
- Status of a programmatic Save As call. Indicates the result of the method.
-
-
-
-
- The `ShowSaveAsUIAsync` method call completed successfully. By default, the system Save As dialog opens. If is set to `TRUE`, the system dialog is skipped and the download is started.
-
-
-
-
- Could not perform Save As because the destination file path is an invalid path. The path is invalid when it is empty, a relative path, or a directory, or when the parent path does not exist.
-
-
-
-
- Could not perform Save As because the destination file path already exists and replacing files was not allowed by the property.
-
-
-
-
- Could not perform Save As because the `Kind` property selection is not supported due to content MIME type or system limits. See for MIME type limits. System limits include when the `HtmlOnly` kind is selected for an error page at child mode, or when the `Complete` kind is selected and the WebView is running in an App Container.
-
-
-
-
- Did not perform Save As because the end user cancelled or the was set to `TRUE`.
-
-
-
-
- Specifies selection options.
-
-
- For HTML documents, we support 3 Save As kinds: HtmlOnly, SingleFile and Complete. For non-HTML documents, you must use Default. MIME types of `text/html` and `application/xhtml+xml` are considered HTML documents.
-
-
-
-
- Default kind to save non-HTML content. If this kind is selected for an HTML page, the behavior is the same as the `HtmlOnly` kind.
-
-
-
-
- Save the page as HTML. Only the top-level document is saved, excluding subresources.
-
-
-
-
- Save the page as [MHTML](https://en.wikipedia.org/wiki/MHTML).
-
-
-
-
- Save the page as HTML and download the page-related source files (for example: CSS, JavaScript, images, etc.) in a directory with the same filename prefix.
-
-
-
-
-
- Specifies the WebView2 release channel.
-
-
- Use ReleaseChannels and ChannelSearchKind on CoreWebView2EnvironmentOptions to control which channel the WebView2 loader searches for.
-
-
-
- Channel
- Primary purpose
- How often updated with new features
-
-
- Stable (WebView2 Runtime)
- Broad Deployment
- Monthly
-
-
- Beta
- Flighting with inner rings, automated testing
- Monthly
-
-
- Dev
- Automated testing, selfhosting to test new APIs and features
- Weekly
-
-
- Canary
- Automated testing, selfhosting to test new APIs and features
- Daily
-
-
-
-
-
-
- No release channel. ReleaseChannels will be ignored if only this value is passed.
-
-
-
-
- The stable WebView2 Runtime that is released every 4 weeks.
-
-
-
-
- The Beta release channel that is released every 4 weeks, a week before the stable release.
-
-
-
-
- The Dev release channel that is released weekly.
-
-
-
-
- The Canary release channel that is released daily.
-
-
-
-
- Specifies the process kind used in .
-
-
- The values in this enum make reference to the process kinds in the Chromium architecture. For more information about what these processes are and what they do, see [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1).
-
-
-
-
- Indicates that the process is browser process.
-
-
-
-
- Indicates that the process is render process.
-
-
-
-
- Indicates that the process is utility process.
-
-
-
-
- Indicates that the process is sandbox helper process.
-
-
-
-
- Indicates that the process is Gpu process.
-
-
-
-
- Indicates that the process is ppapi plugin process.
-
-
-
-
- Indicates that the process is ppapi broker process.
-
-
-
-
- Specifies the process failure reason used in . For process failures where a process has exited, it indicates the type of issue that produced the process exit.
-
-
-
-
- Indicates that an unexpected process failure occurred.
-
-
-
-
- Indicates that the process became unresponsive. This only applies to the main frame's render process.
-
-
-
-
- Indicates that the process was terminated. For example, from Task Manager.
-
-
-
-
- Indicates that the process crashed. Most crashes will generate dumps in the location indicated by .
-
-
-
-
- Indicates that the process failed to launch.
-
-
-
-
- Indicates that the process died due to running out of memory.
-
-
-
-
- Deprecated. This value is unused.
-
-
-
-
- Specifies the process failure kind used in . The values in this enum make reference to the process kinds in the Chromium architecture. For more information about what these processes are and what they do, see [Browser Architecture - Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1).
-
-
-
-
- Indicates that the browser process ended unexpectedly. The WebView automatically moves to the Closed state. The app has to recreate a new WebView to recover from this failure.
-
-
-
-
- Indicates that the main frame's render process ended unexpectedly. Any subframes in the WebView will be gone too. A new render process is created automatically and navigated to an error page. You can use the method to try to recover from this failure. Alternatively, you can use and recreate the WebView.
-
-
-
-
- Indicates that the main frame's render process is unresponsive.
-
- Renderer process unresponsiveness can happen for the following reasons:
-
-
-
-
- There is a long-running script being executed. For example, the web content in your WebView might be performing a synchronous XHR, or have entered an infinite loop.
-
-
-
-
- The system is busy.
-
-
-
-
- The ProcessFailed event will continue to be raised every few seconds until the renderer procees has become responsive again. The application can consider taking action if the event keeps being raised. For example, the application might show UI for the user to decide to keep waiting or reload the page, or navigate away.
-
-
-
- Indicates that a frame-only render process ended unexpectedly. The process exit does not affect the top-level document, only a subset of the subframes within it. The content in these frames is replaced with an error page in the frame. Your application can communicate with the main frame to recover content in the impacted frames, using to get information about the impacted frames.
-
-
-
-
- Indicates that a utility process ended unexpectedly. The failed process is recreated automatically. Your application does not need to handle recovery for this event, but can use to collect information about the failure, including ProcessDescription.
-
-
-
-
- Indicates that a sandbox helper process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure.
-
-
-
-
- Indicates that the GPU process ended unexpectedly. The failed process is recreated automatically. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure.
-
-
-
-
- Indicates that a PPAPI plugin process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure, including ProcessDescription.
-
-
-
-
- Indicates that a PPAPI plugin broker process ended unexpectedly. This failure is not fatal. Your application does not need to handle recovery for this event, but can use to collect information about the failure.
-
-
-
-
- Indicates that a process of unspecified kind ended unexpectedly. Your application can use to collect information about the failure.
-
-
-
-
- Indicates the status for printing.
-
-
-
-
- Indicates that the print operation is succeeded.
-
-
-
-
- Indicates that the printer is not available.
-
-
-
-
- Indicates that the print operation is failed.
-
-
-
-
- The orientation for printing, used by the property.
-
-
-
-
- Print the page(s) in portrait orientation.
-
-
-
-
- Print the page(s) in landscape orientation.
-
-
-
-
- Specifies the media size for a print.
-
-
-
-
- The default media size for a printer.
-
-
-
-
- Indicate custom media size that is specific to the printer.
-
-
-
-
- Specifies the duplex option for a print.
-
-
-
-
- The default duplex for a printer.
-
-
-
-
- Print on only one side of the sheet.
-
-
-
-
- Print on both sides of the sheet, flipped along the long edge.
-
-
-
-
- Print on both sides of the sheet, flipped along the short edge.
-
-
-
-
- Specifies the print dialog kind.
-
-
-
-
- Opens the browser print preview dialog.
-
-
-
-
- Opens the system print dialog.
-
-
-
-
- Specifies the color mode for a print.
-
-
-
-
- The default color mode for a printer.
-
-
-
-
- Indicate that the printed output will be in color.
-
-
-
-
- Indicate that the printed output will be in shades of gray.
-
-
-
-
- Specifies the collation for a print.
-
-
-
-
- The default collation for a printer.
-
-
-
-
- Indicate that the collation has been selected for the printed output.
-
-
-
-
- Indicate that the collation has not been selected for the printed output.
-
-
-
-
- Preferred color scheme for WebView2's associated with a profile.
-
-
-
-
- Auto color scheme.
-
-
-
-
- Light color scheme.
-
-
-
-
- Dark color scheme.
-
-
-
-
- Pointer event kind used by to convey the kind of pointer event being sent to WebView.
-
-
-
-
- Corresponds to WM_POINTERACTIVATE.
-
-
-
-
- Corresponds to WM_POINTERDOWN.
-
-
-
-
- Corresponds to WM_POINTERENTER.
-
-
-
-
- Corresponds to WM_POINTERLEAVE.
-
-
-
-
- Corresponds to WM_POINTERUP.
-
-
-
-
- Corresponds to WM_POINTERUPDATE.
-
-
-
-
- Specifies the response to a permission request.
-
-
-
-
- Specifies that the default browser behavior is used, which normally prompts users for decision.
-
-
-
-
- Specifies that the permission request is granted.
-
-
-
-
- Specifies that the permission request is denied.
-
-
-
-
- Indicates the kind of a permission request.
-
-
-
-
- Indicates an unknown permission.
-
-
-
-
- Indicates permission to capture audio.
-
-
-
-
- Indicates permission to capture video.
-
-
-
-
- Indicates permission to access geolocation.
-
-
-
-
- Indicates permission to send web notifications. Apps that would like to show notifications should handle and/or events and no browser permission prompt will be shown for notification requests. Note that push notifications are currently unavailable in WebView2.
-
-
-
-
- Indicates permission to access generic sensor. Generic Sensor covers ambient-light-sensor, accelerometer, gyroscope, and magnetometer.
-
-
-
-
- Indicates permission to read the system clipboard without a user gesture.
-
-
-
-
- Indicates permission to automatically download multiple files. Permission is requested when multiple downloads are triggered in quick succession.
-
-
-
-
- Indicates permission to read and write to files or folders on the device. Permission is requested when developers use the [File System Access API](https://developer.mozilla.org/docs/Web/API/File_System_Access_API) to show the file or folder picker to the end user, and then request "readwrite" permission for the user's selection.
-
-
-
-
- Indicates permission to play audio and video automatically on sites. This permission affects the autoplay attribute and play method of the audio and video HTML elements, and the start method of the Web Audio API. See the [Autoplay guide for media and Web Audio APIs](https://developer.mozilla.org/docs/Web/Media/Autoplay_guide) for details.
-
-
-
-
- Indicates permission to use fonts on the device. Permission is requested when developers use the [Local Font Access API](https://wicg.github.io/local-font-access/) to query the system fonts available for styling web content.
-
-
-
-
- Indicates permission to send and receive system exclusive messages to/from MIDI (Musical Instrument Digital Interface) devices. Permission is requested when developers use the [Web MIDI API](https://developer.mozilla.org/docs/Web/API/Web_MIDI_API) to request access to system exclusive MIDI messages.
-
-
-
-
- Indicates permission to open and place windows on the screen. Permission is requested when developers use the [Multi-Screen Window Placement API](https://www.w3.org/TR/window-placement/) to get screen details.
-
-
-
-
- Specifies the PDF toolbar item types used for the .
-
-
-
-
- No item. By default the equal to this value.
-
-
-
-
- The save button on PDF toolbar.
-
-
-
-
- The print button on PDF toolbar.
-
-
-
-
- The save as button on PDF toolbar.
-
-
-
-
- The zoom in button on PDF toolbar.
-
-
-
-
- The zoom out button on PDF toolbar.
-
-
-
-
- The rotate button on PDF toolbar.
-
-
-
-
- The fit to width button on PDF toolbar.
-
-
-
-
- The page view button on PDF toolbar.
-
-
-
-
- The contents button on PDF toolbar.
-
-
-
-
- The page number button on PDF toolbar.
-
-
-
-
- The search button on PDF toolbar.
-
-
-
-
- The full screen button on PDF toolbar.
-
-
-
-
- The setting and more button on PDF toolbar.
-
-
-
-
- Enum which represents the kind of non-client regions.
-
-
-
-
- Enum value which represents a region entirely outside the WebView2 window.
-
-
-
-
- Enum value which represents the client area.
-
-
-
-
- Enum value which represents the caption area.
-
-
-
-
- Enum value which represents the minimize window control button.
-
-
-
-
- Enum value which represents the maximize window control button.
-
-
-
-
- Enum value which represents the close window control button.
-
-
-
-
- Specifies the navigation kind of each navigation.
-
-
-
-
- A navigation caused by CoreWebView2.Reload(), location.reload(), the end user using F5 or other UX, or other reload mechanisms to reload the current document without modifying the navigation history.
-
-
-
-
- A navigation back or forward to a different entry in the session navigation history, like via CoreWebView2.Back(), location.back(), the end user pressing Alt+Left or other UX, or other mechanisms to navigate back or forward in the current session navigation history.
-
-
-
-
- A navigation to another document, which can be caused by CoreWebView2.Navigate(),window.location.href = ..., or other WebView2 or DOM APIs that navigate to a new URI.
-
-
-
-
- Specifies the reason for moving focus.
-
-
-
-
- Specifies that the code is setting focus into WebView.
-
-
-
-
- Specifies that the focus is moved due to Tab traversal forward.
-
-
-
-
- Specifies that the focus is moved due to Tab traversal backward.
-
-
-
-
- Mouse event virtual keys associated with a for .
-
-
-
-
- No additional keys pressed.
-
-
-
-
- Left mouse button is down, MK_LBUTTON.
-
-
-
-
- Right mouse button is down, MK_RBUTTON.
-
-
-
-
- Shift key is down, MK_SHIFT.
-
-
-
-
- Ctrl key is down, MK_CONTROL.
-
-
-
-
- Middle mouse button is down, MK_MBUTTON.
-
-
-
-
- First X button is down, MK_XBUTTON1.
-
-
-
-
- Second X button is down, MK_XBUTTON2.
-
-
-
-
- Mouse event kind used by to convey the kind of mouse event being sent to WebView.
-
-
-
-
- Mouse horizontal wheel scroll event, WM_MOUSEHWHEEL.
-
-
-
-
- Left button double click mouse event, WM_LBUTTONDBLCLK.
-
-
-
-
- Left button down mouse event, WM_LBUTTONDOWN.
-
-
-
-
- Left button up mouse event, WM_LBUTTONUP.
-
-
-
-
- Mouse leave event, WM_MOUSELEAVE.
-
-
-
-
- Middle button double click mouse event, WM_MBUTTONDBLCLK.
-
-
-
-
- Middle button down mouse event, WM_MBUTTONDOWN.
-
-
-
-
- Middle button up mouse event, WM_MBUTTONUP.
-
-
-
-
- Mouse move event, WM_MOUSEMOVE.
-
-
-
-
- Right button double click mouse event, WM_RBUTTONDBLCLK.
-
-
-
-
- Right button down mouse event, WM_RBUTTONDOWN.
-
-
-
-
- Right button up mouse event, WM_RBUTTONUP.
-
-
-
-
- Mouse wheel scroll event, WM_MOUSEWHEEL.
-
-
-
-
- First or second X button double click mouse event, WM_XBUTTONDBLCLK.
-
-
-
-
- First or second X button down mouse event, WM_XBUTTONDOWN.
-
-
-
-
- First or second X button up mouse event, WM_XBUTTONUP.
-
-
-
-
- R button down over non client area, WM_NCRBUTTONDOWN.
-
-
-
-
- R button up over non client area, WM_NCRBUTTONUP.
-
-
-
-
- Desired memory consumption level of a WebView.
-
-
-
-
- Normal memory usage target level.
-
-
-
-
- Low memory usage target level. Used for inactivate WebView for reduced memory consumption.
-
-
-
-
- Specifies the key event kind that raises an event.
-
-
-
-
- Specifies that the key event kind corresponds to window message WM_KEYDOWN.
-
-
-
-
- Specifies that the key event kind corresponds to window message WM_KEYUP.
-
-
-
-
- Specifies that the key event kind corresponds to window message WM_SYSKEYDOWN.
-
-
-
-
- Specifies that the key event kind corresponds to window message WM_SYSKEYUP.
-
-
-
-
- Kind of cross origin resource access allowed for host resources during download.
-
-
- Note that other normal access checks like same origin DOM access check and [Content Security Policy](https://developer.mozilla.org/docs/Web/HTTP/CSP) still apply.
- The following table illustrates the host resource cross origin access according to access context and CoreWebView2HostResourceAccessKind.
-
-
-
- Cross Origin Access Context
- Deny
- Allow
- DenyCors
-
-
- From DOM like src of img, script or iframe element
- Deny
- Allow
- Allow
-
-
- From Script like Fetch or XMLHttpRequest
- Deny
- Allow
- Deny
-
-
-
-
-
-
- All cross origin resource access is denied, including normal sub resource access as src of a script or image element.
-
-
-
-
- All cross origin resource access is allowed, including accesses that are subject to Cross-Origin Resource Sharing(CORS) check. The behavior is similar to a web site sends back http header Access-Control-Allow-Origin: *.
-
-
-
-
- Cross origin resource access is allowed for normal sub resource access like as src of a script or image element, while any access that subjects to CORS check will be denied. See [Cross-Origin Resource Sharing](https://developer.mozilla.org/docs/Web/HTTP/CORS) for more information.
-
-
-
-
- Specifies the frame kind used in .
-
-
-
-
- Indicates that the frame is an unknown type frame. We may extend this enum type to identify more frame kinds in the future. For example, if portal frame which current in experimental phase gets finalized, we may extend this to include a new frame kind `COREWEBVIEW2_FRAME_KIND_PORTAL`.
-
-
-
-
- Indicates that the frame is a primary main frame().
-
-
-
-
- Indicates that the frame is an iframe.
-
-
-
-
- Indicates that the frame is an [embed](https://developer.mozilla.org/docs/Web/HTML/Element/embed) element.
-
-
-
-
- Indicates that the frame is an [object](https://developer.mozilla.org/docs/Web/HTML/Element/object) element.
-
-
-
-
- Allowed permissions of as described in [FileSystemHandle.requestPermission()](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/requestPermission)
-
-
-
-
- Read-only permission for FileSystemHandle
-
-
-
-
- Read and write permissions for FileSystemHandle
-
-
-
-
- Kind of CoreWebView2FileSystemHandle as described in [FileSystemHandle.kind](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/kind)
-
-
-
-
- FileSystemHandle is for a file (i.e. [FileSystemFileHandle](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle))
-
-
-
-
- FileSystemHandle is for a directory (i.e. [FileSystemDirectoryHandle](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle))
-
-
-
-
- The requested format to get the Favicon from .
-
-
-
-
- Request the Favicon to be retrieved a Png Format.
-
-
-
-
- Request the Favicon to be retrieved a Jpeg Format.
-
-
-
-
- The state of the .
-
-
-
-
- The download is in progress.
-
-
-
-
- The connection with the file host was broken. The reason why a download was interrupted can accessed from . See for descriptions of the different kinds of interrupt reasons. Host can check whether an interrupted download can be resumed with . Once resumed, the download state is in progress.
-
-
-
-
- The download completed successfully.
-
-
-
-
- The reason why the was interrupted.
-
-
-
-
- No interrupt reason.
-
-
-
-
- Generic file error.
-
-
-
-
- Access denied due to security restrictions.
-
-
-
-
- Disk full. User should free some space or choose a different location to store the file.
-
-
-
-
- Result file path with file name is too long.
-
-
-
-
- File is too large for file system.
-
-
-
-
- Microsoft Defender Smartscreen detected a virus in the file.
-
-
-
-
- File was in use, too many files opened, or out of memory.
-
-
-
-
- File blocked by local policy.
-
-
-
-
- Security check failed unexpectedly. Microsoft Defender SmartScreen could not scan this file.
-
-
-
-
- Seeking past the end of a file in opening a file, as part of resuming an interrupted download. The file did not exist or was not as large as expected. Partially downloaded file was truncated or deleted, and download will be restarted automatically.
-
-
-
-
- Partial file did not match the expected hash and was deleted. Download will be restarted automatically.
-
-
-
-
- Generic network error. User can retry the download manually.
-
-
-
-
- Network operation timed out.
-
-
-
-
- Network connection lost. User can retry the download manually.
-
-
-
-
- Server has gone down. User can retry the download manually.
-
-
-
-
- Network request invalid because original or redirected URI is invalid, has an unsupported scheme, or is disallowed by network policy.
-
-
-
-
- Generic server error. User can retry the download manually.
-
-
-
-
- Server does not support range requests.
-
-
-
-
- Server does not have the requested data.
-
-
-
-
- Server did not authorize access to resource.
-
-
-
-
- Server certificate problem.
-
-
-
-
- Server access forbidden.
-
-
-
-
- Unexpected server response. Responding server may not be intended server. User can retry the download manually.
-
-
-
-
- Server sent fewer bytes than the Content-Length header. Content-Length header may be invalid or connection may have closed. Download is treated as complete unless there are [strong validators](https://tools.ietf.org/html/rfc7232#section-2) present to interrupt the download.
-
-
-
-
- Unexpected cross-origin redirect.
-
-
-
-
- User canceled the download.
-
-
-
-
- User shut down the WebView. Resuming downloads that were interrupted during shutdown is not yet supported.
-
-
-
-
- User paused the download.
-
-
-
-
- WebView crashed.
-
-
-
-
- The default download dialog can be aligned to any of the WebView corners by setting the property. The default position is top-right corner.
-
-
-
-
- The top-left corner of the WebView.
-
-
-
-
- The top-right corner of the WebView.
-
-
-
-
- The bottom-left corner of the WebView.
-
-
-
-
- The bottom-right corner of the WebView.
-
-
-
-
- Kind of cookie SameSite status used in the class.
-
-
- These fields match those as specified in https://developer.mozilla.org/docs/Web/HTTP/Cookies#.
- Learn more about SameSite cookies here: https://tools.ietf.org/html/draft-west-first-party-cookies-07
-
-
-
-
- None SameSite type. No restrictions on cross-site requests.
-
-
-
-
- Lax SameSite type. The cookie will be sent with "same-site" requests, and with "cross-site" top level navigation.
-
-
-
-
- Strict SameSite type. The cookie will only be sent along with "same-site" requests.
-
-
-
-
- Indicates the kind of context for which the context menu was created for the property. This enum will always represent the active element that caused the context menu request. If there is a selection with multiple images, audio and text, for example, the element that the end user right clicks on within this selection will be the option represented by this enum.
-
-
-
-
- Indicates that the context menu was created for the page without any additional content.
-
-
-
-
- Indicates that the context menu was created for an image element.
-
-
-
-
- Indicates that the context menu was created for selected text.
-
-
-
-
- Indicates that the context menu was created for an audio element.
-
-
-
-
- Indicates that the context menu was created for a video element.
-
-
-
-
- Specifies the menu item kind for the property.
-
-
-
-
- Specifies a command menu item kind.
-
-
-
-
- Specifies a check box menu item kind. objects of this kind will need the property to determine current state of the check box.
-
-
-
-
- Specifies a radio button menu item kind. objects of this kind will need the property to determine current state of the radio button.
-
-
-
-
- Specifies a separator menu item kind. objects of this kind are used to signal a visual separator with no functionality.
-
-
-
-
- Specifies a submenu menu item kind. objects of this kind will contain a collection of its children objects.
-
-
-
-
- The kind of the .
-
-
-
-
- Specifies smart card certificate.
-
-
-
-
- Specifies PIN certificate.
-
-
-
-
- Specifies other certificate.
-
-
-
-
- The order that release channels are searched for during environment creation.
-
-
- The default behavior is to search for and use the most stable channel found on the device. The order from most to least stable is: WebView2 Runtime -> Beta -> Dev -> Canary. Switch the order to prefer the least stable channel in order to perform pre-release testing. See for descriptions of channels.
-
-
-
-
- Search for a release channel from most to least stable: WebView2 Runtime -> Beta -> Dev -> Canary. This is the default behavior.
-
-
-
-
- Search for a release channel from least to most stable: Canary -> Dev -> Beta -> WebView2 Runtime.
-
-
-
-
- Specifies the image format for the method.
-
-
-
-
- Indicates that the PNG image format is used.
-
-
-
-
- Indicates that the JPEG image format is used.
-
-
-
-
- Indicates the kind of browsing data to clear. Or operations can be applied to create a mask representing multiple CoreWebView2BrowsingDataKinds. The resulting mask may be passed to or to clear the corresponding data.
-
-
-
-
- Specifies file systems data.
-
-
-
-
- Specifies data stored by the IndexedDB DOM feature.
-
-
-
-
- Specifies data stored by the localStorage DOM API.
-
-
-
-
- Specifies data stored by the Web SQL database DOM API.
-
-
-
-
- Specifies data stored by the CacheStorage DOM API.
-
-
-
-
- Specifies DOM storage data, now and future. This browsing data kind is inclusive of CoreWebView2BrowsingDataKinds.FileSystems, CoreWebView2BrowsingDataKinds.IndexedDb, CoreWebView2BrowsingDataKinds.WebSql, CoreWebView2BrowsingDataKinds.ServiceWorkers, CoreWebView2BrowsingDataKinds.CacheStorage, and some other data kinds not listed yet to keep consistent with [DOM-accessible storage](https://www.w3.org/TR/clear-site-data/#storage).
-
-
-
-
- Specifies HTTP cookies data.
-
-
-
-
- Specifies all site data, now and future. This browsing data kind is inclusive of CoreWebView2BrowsingDataKinds.AllDomStorage and CoreWebView2BrowsingDataKinds.Cookies. New site data types may be added to this data kind in the future.
-
-
-
-
- Specifies disk cache.
-
-
-
-
- Specifies download history data.
-
-
-
-
- Specifies general autofill form data. This excludes password information and includes information like: names, street and email addresses, phone numbers, and arbitrary input. This also includes payment data.
-
-
-
-
- Specifies password autosave data.
-
-
-
-
- Specifies browsing history data.
-
-
-
-
- Specifies settings data.
-
-
-
-
- Specifies profile data that should be wiped to make it look like a new profile. This does not delete account-scoped data like passwords but will remove access to account-scoped data by signing the user out. Specifies all profile data, now and future. New profile data types may be added to this data kind in the future. This browsing data kind is inclusive of , , , , , , .
-
-
-
-
- Specifies service workers registered for an origin, and clear will result in termination and deregistration of them.
-
-
-
-
- Specifies the browser process exit kind used in .
-
-
-
-
- Indicates that the browser process ended normally.
-
-
-
-
- Indicates that the browser process ended unexpectedly. A event will also be raised to listening WebViews from the associated to the failed process.
-
-
-
-
- Mode for how the property is interpreted in relation to the property.
-
-
-
-
- property represents raw pixels. Physical size of WebView is not impacted by .
-
-
-
-
- property represents logical pixels and the property is used to get the physical size of the WebView.
-
-
-
-
- Contains the information packed into the LPARAM sent to a Win32 key event.
-
-
- For more information about WM_KEYDOWN, navigate to [WM_KEYDOWN message](/windows/win32/inputdev/wm-keydown).
-
-
-
-
- Specifies the repeat count for the current message.
-
-
-
-
- Specifies the scan code.
-
-
-
-
- Indicates that the key is an extended key.
-
-
-
-
- Indicates that a menu key is held down (context code).
-
-
-
-
- Indicates that the key was held down.
-
-
-
-
- Indicates that the key was released.
-
-
-
-
- A value representing RGBA color (Red, Green, Blue, Alpha) for WebView2.
-
-
- Each component takes a value from 0 to 255, with 0 being no intensity and 255 being the highest intensity.
-
-
-
-
- Specifies the intensity of the Alpha ie. opacity value. 0 is transparent, 255 is opaque.
-
-
-
-
- Specifies the intensity of the Red color.
-
-
-
-
- Specifies the intensity of the Green color.
-
-
-
-
- Specifies the intensity of the Blue color.
-
-
-
-
- The window features for a WebView popup window.
-
-
- The fields match the windowFeatures passed to window.open() as specified in [Window features](https://developer.mozilla.org/docs/Web/API/Window/open#Window_features) on MDN. There is no requirement for you to respect the values. If your app does not have corresponding UI features (for example, no toolbar) or if all instance of WebView are opened in tabs and do not have distinct size or positions, then your app does not respect the values. You may want to respect values, but perhaps only some apply to the UI of you app. Accordingly, you may respect all, some, or none of the properties as appropriate for your app. For all numeric properties, if the value that is passed to window.open() is outside the range of an uint, the resulting value is uint.MaxValue. If you are not able to parse the value an integer, it is considered 0. If the value is a floating point value, it is rounded down to an integer.
-
-
-
-
- Indicates whether the left and top values are specified.
-
-
-
-
- Indicates whether the height and width values are specified.
-
-
-
-
- Gets the left position of the window. Ignored if is false.
-
-
-
-
- Gets the top position of the window. Ignored if is false.
-
-
-
-
- Gets the height of the window. Ignored if is false.
-
-
-
-
- Gets the width of the window. Ignored if is false.
-
-
-
-
- Indicates that the menu bar is displayed.
-
-
-
-
- Indicates that the status bar is displayed.
-
-
-
-
- Indicates that the browser toolbar is displayed.
-
-
-
-
- Indicates that the scroll bars are displayed.
-
-
-
-
- View of the HTTP representation for a web resource response.
-
-
- The properties of this object are not mutable. This response view is used with the event.
-
-
-
-
- Gets the HTTP response headers as received.
-
-
-
-
- Gets the HTTP response status code.
-
-
-
-
- Gets the HTTP response reason phrase.
-
-
-
-
- Gets the response content stream asynchronously.
-
- The content failed to load.
-
- A null stream means no content was found. Note content (if any) for redirect responses is ignored.
- This method returns null if content size is more than 123MB. If msWebView2EnableDownloadContentInWebResourceResponseReceived feature flag is disabled, for navigations that become downloads or if response is downloadable content type (e.g., application/octet-stream), this method also returns null. See event to handle the response or enable the feature flag. The Stream object that is returned will be thread-safe and as reads will be blocking while waiting for data to be available, it is recommended to read from a background thread.
- If this method is being called again before a first call has completed, it will complete at the same time all prior calls do.
- If this method is being called after a first call has completed, it will return immediately (asynchronously).
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="WebResourceResponseReceived":::
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the request object for the web resource, as committed.
-
-
- This includes headers added by the network stack that were not be included during the associated event, such as Authentication headers. Modifications to this object have no effect on how the request is processed as it has already been sent.
-
-
-
-
- Gets view of the response object received for the web resource.
-
-
-
-
- An HTTP response used with the event.
-
-
-
-
- Gets HTTP response content as stream.
-
-
- Stream must have all the content data available by the time the event deferral of this response is completed. Stream should be agile or be created from a background thread to prevent performance impact to the UI thread. null means no content data.
- When providing the response data, you should consider relevant HTTP request headers just like an HTTP server would do. For example, if the request was for a video resource in a HTML video element, the request may contain the [Range](https://developer.mozilla.org/docs/Web/HTTP/Headers/Range) header to request only a part of the video that is streaming. In this case, your response stream should be only the portion of the video specified by the range HTTP request headers and you should set the appropriate [Content-Range](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Range) header in the response.
-
-
-
-
-
- Gets the overridden HTTP response headers.
-
-
-
-
- Gets or sets the HTTP response status code.
-
-
-
-
- Gets or sets the HTTP response reason phrase.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the web resource request.
-
-
- The request object may be missing some headers that are added by network stack at a later time.
-
-
-
-
- Gets or sets the object.
-
-
- If this object is set, the event will be completed with this Response.
- An empty object can be created with and then modified to construct the Response.
-
-
-
-
- Gets the web resource request context.
-
-
-
-
- Gets a object and put the event into a deferred state.
-
-
- Use this to the event at a later time.
-
-
-
-
- Gets the source of web resource request.
-
-
-
-
- An HTTP request used with the event.
-
-
-
-
- Gets or sets the request URI.
-
-
-
-
- Gets or sets the HTTP request method.
-
-
-
-
- Gets or sets the HTTP request message body as stream.
-
-
- POST data should be here. If a stream is set, which overrides the message body, the stream must have all the content data available by the time the event deferral of this request is completed. Stream should be agile or be created from a background STA to prevent performance impact to the UI thread. null means no content data.
-
-
-
-
-
- Gets the mutable HTTP request headers.
-
-
-
-
- Event args for the event.
-
-
-
-
- true if the page being navigated to is a new document.
-
-
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
- Defines properties that enable, disable, or modify WebView features.
-
-
- Changes to and will take effect immediately, while other setting changes made after event do not apply until the next top-level navigation.
-
-
-
-
- Determines whether running JavaScript is enabled in all future navigations in the WebView.
-
-
- This only affects scripts in the document. Scripts injected with runs even if script is disabled. The default value is true.
-
-
-
-
- Determines whether communication from the host to the top-level HTML document of the WebView is allowed.
-
-
- This is used when loading a new HTML document. If set to true, communication from the host to the top-level HTML document of the WebView is allowed using , , and message event of window.chrome.webview. Communication from the top-level HTML document of the WebView to the host is allowed using window.chrome.webview.postMessage function and the event. If set to false, then communication is disallowed. and fail and window.chrome.webview.postMessage fails by throwing an instance of an Error object. The default value is true.
-
-
-
-
-
-
-
- Determines whether WebView renders the default JavaScript dialog box.
-
-
- This is used when loading a new HTML document. If set to false, WebView does not render the default JavaScript dialog box (specifically those displayed by the JavaScript alert, confirm, prompt functions and beforeunload event). Instead, WebView raises event that contains all of the information for the dialog and allow the host app to show a custom UI. The default value is true.
-
-
-
-
-
- Determines whether the status bar is displayed.
-
-
- The status bar is usually displayed in the lower left of the WebView and shows things such as the URI of a link when the user hovers over it and other information. The default value is true. The status bar UI can be altered by web content and should not be considered secure.
-
-
-
-
- Determines whether the user is able to use the context menu or keyboard shortcuts to open the DevTools window.
-
-
- The default value is true.
-
-
-
-
- Determines whether the default context menus are shown to the user in WebView.
-
-
- The default value is true.
-
-
-
-
- Determines whether host objects are accessible from the page in WebView.
-
-
- The default value is true.
-
-
-
-
- Determines whether the user is able to impact the zoom of the WebView.
-
-
- When disabled, the user is not able to zoom using Ctrl++, Ctr+-, or Ctrl+mouse wheel, but the zoom is set using property. The default value is true.
-
-
-
-
- Determines whether to disable built in error page for navigation failure and render process failure.
-
-
- When disabled, blank page is displayed when related error happens. The default value is true.
-
-
-
-
- Determines WebView2's User Agent.
-
-
- The default value is the default User Agent of the Edge browser. This property may be overridden if the User-Agent header is set in a request. If the parameter is empty the User Agent will not be updated and the current User Agent will remain. Setting this property may clear User Agent Client Hints headers Sec-CH-UA-* and script values from navigator.userAgentData. Current implementation behavior is subject to change.
- The User Agent set will also be effective on service workers and shared workers associated with the WebView. If there are multiple WebViews associated with the same service worker or shared worker, the last User Agent set will be used.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="SetUserAgent":::
-
-
-
-
- Determines whether browser-specific accelerator keys are enabled.
-
-
- When this setting is set to false, it disables all accelerator keys that access
- features specific to a web browser, including but not limited to:
-
-
-
- Ctrl+F and F3 for Find on Page
-
-
- Ctrl+P for Print
-
-
- Ctrl+R and F5 for Reload
-
-
- Ctrl+Plus and Ctrl+Minus for zooming
-
-
- Ctrl+Shift-C and F12 for DevTools
-
-
- Special keys for browser functions, such as Back, Forward, and Search
-
-
-
- It does not disable accelerator keys related to movement and text editing, such
- as:
-
-
-
- Home, End, Page Up, and Page Down
-
-
- Ctrl+X, Ctrl+C, Ctrl+V
-
-
- Ctrl+A for Select All
-
-
- Ctrl+Z for Undo
-
-
-
- Those accelerator keys will always be enabled unless they are handled in the event.
-
- This setting has no effect on the event. The event
- will be fired for all accelerator keys, whether they are enabled or not.
-
- The default value of AreBrowserAcceleratorKeysEnabled is true.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="AllowWebViewShortcutKeys":::
-
-
-
-
- Determines whether password information will be autosaved.
-
-
- When disabled, no new password data is saved and no Save/Update Password prompts are displayed. However, if there was password data already saved before disabling this setting, then that password information is auto-populated, suggestions are shown and clicking on one will populate the fields.
- When enabled, password information is auto-populated, suggestions are shown and clicking on one will populate the fields, new data is saved, and a Save/Update Password prompt is displayed. The default value is false. It will apply immediately after setting.
- This property has the same value as , and changing one will change the other. All WebView2s with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="PasswordAutosaveEnabled":::
-
-
-
-
- Determines whether general form information will be saved and autofilled.
-
-
- General autofill information includes information like names, street and email addresses, phone numbers, and arbitrary input. This excludes password information. When disabled, no suggestions appear, and no new information is saved.
- When enabled, information is saved, suggestions appear, and clicking on one will populate the form fields. The default value is true. It will apply immediately after setting.
- This property has the same value as , and changing one will change the other. And all WebView2s that created with the same will share the same value for this property, so for the WebView2s with the same profile, their and will always have the same value.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="GeneralAutofillEnabled":::
-
-
-
-
-
- Determines the ability of the end users to use pinching motions on touch input enabled devices to scale the web content in the WebView2.
-
-
- When disabled, the end users cannot use pinching motions on touch input enabled devices to scale the web content in the WebView2. The default value is true.
- Pinch-zoom, referred to as "Page Scale" zoom, is performed as a post-rendering step, it changes the page scale factor property and scales the surface the web page is rendered onto when user performs a pinch zooming action. It does not change the layout but rather changes the viewport and clips the web content, the content outside of the viewport isn't visible onscreen and users can't reach this content using mouse. This API only affects the Page Scale zoom and has no effect on the existing browser zoom properties ( and ) or other end user mechanisms for zooming.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="TogglePinchZoomEnabled":::
-
-
-
-
- Determines whether the end user to use swiping gesture on touch input enabled devices to navigate in WebView2.
-
-
- Swiping gesture navigation on touch screen includes:
-
-
- Swipe left/right (swipe horizontally) to navigate to previous/next page in navigation history.
-
-
- Pull to refresh (swipe vertically) the current page. (This feature is currently disabled by default in the browser, to enable in WebView2, set property with --pull-to-refresh switch).
-
-
- It defaults to true. When set to false, the end user cannot swipe to navigate or pull to refresh. This API only affects the overscrolling navigation functionality and has no effect on the scrolling interaction used to explore the web content shown in WebView2.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleSwipeNavigationEnabled":::
-
-
-
-
- Used to customize the PDF toolbar items.
-
-
- By default, it is and so it displays all of the items.
- Changes to this property apply to all CoreWebView2s in the same environment and using the same profile.
- Changes to this setting apply only after the next navigation.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="ToggleHiddenPdfToolbarItems":::
-
-
-
-
- Determines whether SmartScreen is enabled when visiting web pages
-
-
- The default value is true.
- IsReputationCheckingRequired is used to control whether SmartScreen is enabled or not.
- SmartScreen is enabled or disabled for all CoreWebView2s using the same user data folder.
- If CoreWebView2Setting.IsReputationCheckingRequired is true for any CoreWebView2 using the same user data folder, then SmartScreen is enabled. If CoreWebView2Setting.IsReputationCheckingRequired is false for all CoreWebView2 using the same user data folder, then SmartScreen is disabled.
- When it is changed, the change will be applied to all WebViews using the same user data folder on the next navigation or download.
- If the newly created CoreWebview2 does not set SmartScreen to false, when navigating(Such as Navigate(), LoadDataUrl(), ExecuteScript(), etc.), the default value will be applied to all CoreWebview2 using the same user data folder.
- SmartScreen of WebView2 apps can be controlled by Windows system setting "SmartScreen for Microsoft Edge", specially, for WebView2 in Windows Store apps, SmartScreen is controlled by another Windows system setting "SmartScreen for Microsoft Store apps". When the Windows setting is enabled, the SmartScreen operates under the control of the `IsReputationCheckingRequired`. When the Windows setting is disabled, the SmartScreen will be disabled regardless of the `IsReputationCheckingRequired` value set in WebView2 apps. In other words, under this circumstance the value of `IsReputationCheckingRequired` will be saved but overridden by system setting. Upon re-enabling the Windows setting, the CoreWebview2 will reference the `IsReputationCheckingRequired` to determine the SmartScreen status.
-
-
-
-
- The `IsNonClientRegionSupportEnabled` property enables web pages to use the
-
- `app-region` CSS style. Disabling/Enabling the `IsNonClientRegionSupportEnabled`
- takes effect after the next navigation. Defaults to `false`.
-
- When this property is `true`, then all the non-client region features
- will be enabled:
- Draggable Regions will be enabled, they are regions on a webpage that
- are marked with the CSS attribute `app-region: drag/no-drag`. When set to
- `drag`, these regions will be treated like the window's title bar, supporting
- dragging of the entire WebView and its host app window; the system menu shows
- upon right click, and a double click will trigger maximizing/restoration of the
- window size.
- When set to `false`, all non-client region support will be disabled.
- The `app-region` CSS style will be ignored on web pages.
-
-
-
- Event args for the event.
-
-
-
-
- The TLS error code for the invalid certificate.
-
-
-
-
- URI associated with the request for the invalid certificate.
-
-
-
-
- Returns the .
-
-
-
-
- The action of the server certificate error detection.
-
-
- The default value is .
-
-
-
-
- Gets a object.
-
-
- Use this to the event at a later time.
-
-
-
-
- This interface represents a JavaScript exception.
-
-
-
-
- The line number of the source where the exception occurred. Note that this position starts at 0.
-
-
-
-
- The column number of the source where the exception occurred. Note that this position starts at 0.
-
-
-
-
- The Name is the exception's class name.
-
-
-
-
- The Message is the exception's message and potentially stack.
-
-
-
-
- This will return all details of the exception as a JSON string.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the URI of the page that requested the dialog box.
-
-
-
-
- Gets the kind of JavaScript dialog box.
-
-
-
-
-
- Gets the message of the dialog box.
-
-
- From JavaScript this is the first parameter passed to alert, confirm, and prompt and is empty for beforeunload.
-
-
-
-
- Gets the default value to use for the result of the prompt JavaScript function.
-
-
- This is the second parameter passed to the JavaScript prompt dialog.
-
-
-
-
- Gets or sets the return value from the JavaScript prompt function if is run.
-
-
- This value is ignored for s other than . If is not run, this value is ignored and false is returned from prompt.
-
-
-
-
-
- Responds with **OK** to confirm, prompt, and beforeunload dialogs. Not run this method to indicate cancel.
-
-
- From JavaScript, this means that the confirm function and beforeunload event returns true if Accept is run. And for the prompt function it returns the value of if Accept is run and otherwise returns false.
-
-
-
-
- Gets a object.
-
-
- Use this to the event at a later time.
-
-
-
-
- Event args for the event.
-
-
-
-
- The host may set this flag to TRUE to cancel the screen capture.
-
-
- If canceled, the screen capture UI is not displayed regardless of the Handled property. On the script side, it will return with a NotAllowedError as Permission denied.
-
-
-
-
- The host may set this flag to TRUE to prevent the ScreenCaptureStarting event from firing on the CoreWebView2 as well.
-
-
- By default, both the ScreenCaptureStarting event handlers on the CoreWebView2Frame and the CoreWebView2 will be invoked, with the CoreWebView2Frame event handlers invoked first. The host may set this flag to TRUE within the CoreWebView2Frame event handlers to prevent the remaining CoreWebView2 event handlers from being invoked. If the flag is set to FALSE within the CoreWebView2Frame event handlers, downstream handlers can update the Cancel property.
-
-
-
-
- The frame info of the frame where the screen capture starting request originated.
-
-
-
-
- Returns a object.
-
-
- Use this deferral to defer the decision to show the Screen Capture UI. getDisplayMedia() won't call its callbacks until the deferral is completed.
-
-
-
-
- Event args for the event.
-
-
-
-
- Set if cancel the upcoming save/download.
-
-
-
-
- Get the document origin URI of this file save operation.
-
-
-
-
- Get the extension of file to be saved.
-
-
-
-
- Get the full path of file to be saved. This includes the file name and extension.
-
-
-
-
- Set if the default policy checking and security warning will be suppressed.
-
-
-
-
- Returns a object.
-
-
- It will put the event into a deferred state. The default policy checking and any default UI will be blocked temporarily, saving file to local won't start, until the deferral is completed.
-
-
-
-
-
- Event args for the event.
-
-
-
-
- Mime type of content to be saved.
-
-
-
-
- Indicates whether to cancel the save as before download.
-
-
- Set this property to `TRUE` to cancel the Save As action and prevent the download from starting. returns .
-
-
-
-
- Indicates if the system default dialog will be suppressed.
-
-
- When this property is FALSE, the default Save As dialog is shown and the values assigned through `SaveAsFilePath`, `AllowReplace` and `Kind` are ignored when the event args invoke completed. When it is `TRUE`, the system dialog is skipped and all assigned values are used.
-
-
-
-
- The absolute full path of save as location.
-
-
- It includes the file name and extension. If it is not valid (for example, the root drive does not exist), Save As is denied, and is returned. If the associated download completes successfully, a target file is saved at this location. If the `Kind` property is , there will be an additional directory with resources files.
-
-
-
-
- Indicates whether to allow replace old file when it already exists in the target save file path.
-
-
- Setting this property to `TRUE` allows existing files to be replaced. Setting this property to `FALSE` will not replace existing files and will return .
-
-
-
-
- The option to save content to different document.
-
-
- If it is not allowed for the current document, method returns .
-
-
-
-
- Gets a object.
-
-
- This will defer showing the default Save As dialog. Use this to the event at a later time to perform a Save As operation.
-
-
-
-
-
- Provides a set of properties for a process list in the .
-
-
-
-
- Get the process id of the process.
-
-
-
-
- Get the kind of the process.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the kind of process failure that has occurred.
-
-
- ProcessFailedKind is a combination of process kind (for example, browser, renderer, gpu) and failure (exit, unresponsiveness). Renderer processes are further divided in main frame renderer (RenderProcessExited, RenderProcessUnresponsive) and subframe renderer (FrameRenderProcessExited). To learn about the conditions under which each failure kind occurs, see .
-
-
-
-
-
- Gets the reason for the process failure.
-
-
- Some of the reasons are only applicable to specific values of , and the following values always return the indicated reason value:
-
-
-
- ProcessFailedKind
- Reason
-
-
- BrowserProcessExited
-
- Unexpected
-
-
-
- RenderProcessUnresponsive
-
- Unresponsive
-
-
-
-
- For other values, the reason may be any of the reason values. To learn about what these values mean, see .
-
-
-
-
-
- Gets the exit code of the failing process, for telemetry purposes.
-
-
- The exit code is always 1 when is , and STILL_ACTIVE(259) when is .
-
-
-
-
-
- Gets a description of the failing process, assigned by the WebView2 Runtime.
-
-
- This is a technical English term appropriate for logging or development purposes, and not localized for the end user. It applies to utility processes (for example, "Audio Service", "Video Capture") and plugin processes (for example, "Flash"). The returned string is empty if the WebView2 Runtime did not assign a description to the process.
-
-
-
-
- Gets the collection of s for frames in the that were being rendered by the failed process.
-
-
- The content in these frames is replaced with an error page.
- This is only available when is ; the returned collection is empty for all other process failure kinds, including the case in which the failed process was the renderer for the main frame and subframes within it, for which the failure kind is .
-
-
-
-
- When ProcessFailed occurred due to a failed Code Integrity check, this property returns the full path of the file that was prevented from loading on the system.
-
- The webview2 process which tried to load the DLL will fail with exit code STATUS_INVALID_IMAGE_HASH(-1073740760).
-
-
-
- Provides a set of properties for a process list with extended information in the .
-
-
-
-
- Provides the of the current process.
-
-
-
-
- Provides the collection of associated s which are actively running (showing or hiding UI elements) in this renderer process.
-
-
- AssociatedFrameInfos will only be populated when this corresponds to a renderer process. Non-renderer processes will always have an empty AssociatedFrameInfo. AssociatedFrameInfos may also be empty for renderer processes that have no active frames.
-
-
- :::code language="csharp" source="../code/sample/SampleApps/WebView2WpfBrowser/MainWindow.xaml.cs" id="AssociatedFrameInfos":::
-
-
-
-
- Settings used by the method.
-
-
- Settings used by the method.
-
-
-
-
- The orientation can be portrait or landscape.
-
-
- The default orientation is portrait. See .
-
-
-
-
- The scale factor is a value between 0.1 and 2.0.
-
-
- The default is 1.0. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The page width in inches.
-
-
- The default width is 8.5 inches. If the provided page width is less than or equal to zero, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The page height in inches.
-
-
- The default height is 11 inches. If the provided page height is less than or equal to zero, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The top margin in inches.
-
-
- The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The bottom margin in inches.
-
-
- The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The left margin in inches.
-
-
- The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- The right margin in inches.
-
-
- The default is 1 cm, or ~0.4 inches. A margin cannot be less than zero. If an invalid value is provided, the current value is not changed and an ArgumentException is thrown.
-
-
-
-
- true if background colors and images should be printed.
-
-
- The default value is false.
-
-
-
-
- true if only the current end user's selection of HTML in the document should be printed.
-
-
- The default value is false.
-
-
-
-
- true if header and footer should be printed.
-
-
- The default value is false. The header consists of the date and time of printing, and the title of the page. The footer consists of the URI and page number. The height of the header and footer is 0.5 cm, or ~0.2 inches.
-
-
-
-
- The title in the header if is true.
-
-
- The default value is the title of the current document. If an empty string or null value is provided, no title is shown in the header.
-
-
-
-
- The URI in the footer if is true.
-
-
- The default value is the current URI. If an empty string or null value is provided, no URI is shown in the footer.
-
-
-
-
- Page range to print. Defaults to empty string, which means print all pages.
-
-
- The PageRanges property is a list of page ranges specifying one or more pages that should be printed separated by commas. Any whitespace between page ranges is ignored.
- A valid page range is either a single integer identifying the page to print, or a range in the form [start page]-[last page] where start page and last page are integers identifying the first and last inclusive pages respectively to print.
- Every page identifier is an integer greater than 0 unless wildcards are used (see below examples).
- The first page is 1.
-
- In a page range of the form [start page]-[last page] the start page number must be larger than 0 and less than or equal to the document's total page count.
- If the start page is not present, then 1 is used as the start page.
- The last page must be larger than the start page.
- If the last page is not present, then the document total page count is used as the last page.
-
- Repeating a page does not print it multiple times. To print multiple times, use the property.
-
- The pages are always printed in ascending order, even if specified in non-ascending order.
-
- If page range is not valid or if a page is greater than document total page count, ArgumentException is thrown.
-
- The following examples assume a document with 20 total pages.
-
-
-
- Example
- Result
- Notes
-
-
- "2"
- Page 2
-
-
-
- "1-4, 9, 3-6, 10, 11"
- Pages 1-6, 9-11
-
-
-
- "1-4, -6"
- Pages 1-6
- The "-6" is interpreted as "1-6".
-
-
- "2-"
- Pages 2-20
- The "2-" is interpreted as "pages 2 to the end of the document".
-
-
- "4-2, 11, -6"
- Invalid
- "4-2" is an invalid range.
-
-
- "-"
- Pages 1-20
- The "-" is interpreted as "page 1 to the end of the document".
-
-
- "1-4dsf, 11"
- Invalid
-
-
-
- "2-2"
- Page 2
-
-
-
-
-
-
-
- Prints multiple pages of a document on a single piece of paper. Choose from 1, 2, 4, 6, 9 or 16.
-
-
- The default value is 1.
-
- If an invalid value is provided, ArgumentException is thrown.
-
- Below examples shows print output for PagesPerSide and Duplex.
-
-
-
- PagesPerSide
- Total pages
- Two-sided printing
- Result
-
-
- 1
- 1
- -
- 1 page on the front side.
-
-
- 2
- 1
- Yes
- 1 page on the front side.
-
-
- 2
- 4
- -
- 2 pages on the first paper and 2 pages on the next paper.
-
-
- 2
- 4
- Yes
- 2 pages on the front side and 2 pages on back side.
-
-
- 4
- 4
- Yes
- 4 pages on the front side.
-
-
- 4
- 8
- Yes
- 4 pages on the front side and 4 pages on the back side.
-
-
-
-
-
-
- Number of copies to print. Minimum value is 1 and the maximum copies count is 999.
-
-
- The default value is 1.
-
-
-
-
- Printer collation.
-
-
- See for descriptions of collation. The default value is .
-
- Printing uses default value of printer's collation if an invalid value is provided for the specific printer.
-
- This value is ignored in method.
-
-
-
-
- Printer color mode.
-
-
- See for descriptions of color modes. The default value is .
-
- Printing uses default value of printer supported color if an invalid value is provided for the specific printer.
-
-
-
-
- Printer duplex settings.
-
-
- See for descriptions of duplex. The default value is .
-
- Printing uses default value of printer's duplex if an invalid value is provided for the specific printer.
-
- This value is ignored in method.
-
-
-
-
- Printer media size.
-
-
- See for descriptions of media size. The default value is .
-
- If media size is , you should set the and .
-
- Printing uses default value of printer supported media size if an invalid value is provided for the specific printer.
-
- This value is ignored in method.
-
-
-
-
- The name of the printer to use.
-
-
- Defaults to empty string. If the printer name is empty string or null, then it prints to the default printer on the user OS.
-
- If provided printer name doesn't match with the name of any installed printers on the user OS, the method returns with .
-
- Use [PrintCapabilities](/dotnet/api/system.printing.printcapabilities) class to enumerate available printers.
-
- This value is ignored in method.
-
-
-
-
- This mostly represents a combined win32 POINTER_INFO, POINTER_TOUCH_INFO, and POINTER_PEN_INFO object.
-
-
-
-
- Gets or sets the PointerKind of the pointer event.
-
-
- This corresponds to the pointerKind property of the POINTER_INFO struct. The values are defined by the POINTER_INPUT_KIND enum in the Windows SDK (_winuser.h_). Supports PT_PEN and PT_TOUCH.
-
-
-
-
- Gets or sets the PointerId of the pointer event.
-
-
- This corresponds to the pointerId property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the FrameID of the pointer event.
-
-
- This corresponds to the frameId property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PointerFlags of the pointer event.
-
-
- This corresponds to the pointerFlags property of the POINTER_INFO struct. The values are defined by the POINTER_FLAGS constants in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PointerDeviceRect of the sourceDevice property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the DisplayRect of the sourceDevice property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PixelLocation of the pointer event.
-
-
- This corresponds to the ptPixelLocation property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the HimetricLocation of the pointer event.
-
-
- This corresponds to the ptHimetricLocation property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PixelLocationRaw of the pointer event.
-
-
- This corresponds to the ptPixelLocationRaw property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the HimetricLocationRaw of the pointer event.
-
-
- This corresponds to the ptHimetricLocationRaw property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the Time of the pointer event.
-
-
- This corresponds to the dwTime property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the HistoryCount of the pointer event.
-
-
- This corresponds to the historyCount property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the InputData of the pointer event.
-
-
- This corresponds to the InputData property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the KeyStates of the pointer event.
-
-
- This corresponds to the dwKeyStates property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PerformanceCount of the pointer event.
-
-
- This corresponds to the PerformanceCount property of the POINTER_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the ButtonChangeKind of the pointer event.
-
-
- This corresponds to the ButtonChangeKind property of the POINTER_INFO struct. The values are defined by the POINTER_BUTTON_CHANGE_KIND enum in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenFlags of the pointer event.
-
-
- This corresponds to the penFlags property of the POINTER_PEN_INFO struct. The values are defined by the PEN_FLAGS constants in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenMask of the pointer event.
-
-
- This corresponds to the penMask property of the POINTER_PEN_INFO struct. The values are defined by the PEN_MASK constants in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenPressure of the pointer event.
-
-
- This corresponds to the pressure property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenRotation of the pointer event.
-
-
- This corresponds to the rotation property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenTiltX of the pointer event.
-
-
- This corresponds to the tiltX property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the PenTiltY of the pointer event.
-
-
- This corresponds to the tiltY property of the POINTER_PEN_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchFlags of the pointer event.
-
-
- This corresponds to the touchFlags property of the POINTER_TOUCH_INFO struct. The values are defined by the TOUCH_FLAGS constants in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchMask of the pointer event.
-
-
- This corresponds to the touchMask property of the POINTER_TOUCH_INFO struct. The values are defined by the TOUCH_MASK constants in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchContact of the pointer event.
-
-
- This corresponds to the rcContact property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchContactRaw of the pointer event.
-
-
- This corresponds to the rcContactRaw property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchOrientation of the pointer event.
-
-
- This corresponds to the orientation property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Gets or sets the TouchPressure of the pointer event.
-
-
- This corresponds to the pressure property of the POINTER_TOUCH_INFO struct as defined in the Windows SDK (_winuser.h_).
-
-
-
-
- Provides a set of properties for a permission setting.
-
-
-
-
- The kind of the permission setting.
-
-
-
-
- The origin of the permission setting.
-
-
-
-
- The state of the permission setting.
-
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the origin of the web content that requests the permission.
-
-
-
-
- Gets the kind of the permission that is requested.
-
-
-
-
- true when the permission request was initiated through a user gesture such as clicking an anchor tag with target.
-
-
- Being initiated through a user gesture does not mean that user intended to access the associated resource.
-
-
-
-
- Gets or sets the status of a permission request. For example, whether the request is granted.
-
-
- The default value is .
-
-
-
-
- Gets a object.
-
-
- Use the deferral object to make the permission decision at a later time. The deferral only applies to the current request, and does not prevent the PermissionRequested event from getting raised for new requests. However, for some permission kinds the WebView will avoid creating a new request if there is a pending request of the same kind.
-
-
-
-
- The host may set this flag to TRUE to prevent the PermissionRequested event from firing on the CoreWebView2 as well.
-
- By default, both the PermissionRequested on the CoreWebView2Frame and CoreWebView2 will be fired.
-
-
-
- Set the SavesInProfile property to FALSE to not persist the state beyond the current request, and to continue to receive PermissionRequested events for this origin and permission kind.
-
-
- The permission state set from the PermissionRequested event is saved in the profile by default; it is persisted across sessions and becomes the new default behavior for future PermissionRequested events. Browser heuristics can affect whether the event continues to be raised when the state is persisted.
-
-
-
-
- Event args for the .
-
-
-
-
- The origin of the web content that sends the notification, such as https://example.com/ or https://www.example.com/.
-
-
-
-
- The notification that was received.
-
-
- You can access the properties on the Notification object to show your own notification.
-
-
-
-
- Sets whether the is handled by the host after the event handler completes or if there is a deferral then after the deferral is completed.
-
-
- If is set to true then WebView will not display the notification with the default UI, and the host will be responsible for handling the notification and for letting the web content know that the notification has been displayed, clicked, or closed. You must set to true before you call , and , otherwise they will fail with HRESULT_FROM_WIN32(ERROR_INVALID_STATE). If after the event handler or deferral completes is set to false then WebView will display the default notification UI. Note that you cannot un-handle this event once you have set to be true. The initial value is false.
-
-
-
-
- Gets a object.
-
-
- Use this to the event at a later time.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the region kind corresponding to the event.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the target uri of the new window request.
-
-
-
-
- Gets the new window or sets a WebView as a result of the new window requested.
-
-
- Provides a WebView as the target for a window.open() from inside the requesting WebView. If this is set, the top-level window of this WebView is returned as the opened [WindowProxy](https://developer.mozilla.org/docs/glossary/windowproxy) to the opener script. If this is not set, then is checked to determine behavior for the .
- The methods which should affect the new web contents like has to be called and completed before setting NewWindow. Other methods which should affect the new web contents like have to be called after setting NewWindow. It is best not to use before setting NewWindow, otherwise it may not work for later added scripts.
- WebView provided in the NewWindow property must be on the same as the opener WebView and cannot be navigated. Changes to settings should be made before setting NewWindow to ensure that those settings take effect for the newly setup WebView. The new WebView must have the same profile as the opener WebView.
-
-
-
-
- Indicates whether the event is handled by host.
-
-
- If this is false and no is set, the WebView opens a popup window and returns the opened WindowProxy to the opener script. Note that in this case, there is no avenue to control the popup window from the app. If set to true and no is set for window.open(), the opened proxy is for a dummy window object, but this window does not load and is immediately closed. The default value is false.
-
-
-
-
- true when the new window request was initiated through a user gesture such as selecting an anchor tag with target.
-
-
- The Microsoft Edge popup blocker is disabled for WebView so the app is able to use this flag to block non-user initiated popups.
-
-
-
-
- Gets the window features specified by the window.open() call. These features should be considered for positioning and sizing of new WebView windows.
-
-
-
-
- Gets a object and put the event into a deferred state.
-
-
- Use this to the window open request at a later time. While this event is deferred the opener window returns a WindowProxy to an un-navigated window, which navigates when the deferral is complete.
-
-
-
-
- Gets the name of the new window.
-
-
- This window can be created via window.open(url, windowName), where the windowName parameter corresponds to Name property.
- If no windowName is passed to window.open, then the Name property will be set to an empty string. Additionally, if window is opened through other means, such as <a target="windowName"> or <iframe name="windowName">, then the Name property will be set accordingly. In the case of target=_blank, the Name property will be an empty string.
- Opening a window via Ctrl+clicking a link would result in the Name property being set to an empty string.
-
-
-
-
- The frame info of the frame where the new window request originated.
-
-
- The OriginalSourceFrameInfo is a snapshot of frame information at the time when the new window was requested. See for details on frame properties.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the uri of the requested navigation.
-
-
-
-
- true when the new window request was initiated through a user gesture.
-
-
- Examples of user initiated requests are:
- - Selecting an anchor tag with target
- - Programmatic window open from a script that directly run as a result of user interaction such as via onclick handlers.
- Non-user initiated requests are programmatic window opens from a script that are not directly triggered by user interaction, such as those that run while loading a new page or via timers.
- The Microsoft Edge popup blocker is disabled for WebView so the app is able to use this flag to block non-user initiated popups.
-
-
-
-
- true when the navigation is redirected.
-
-
-
-
- Gets the HTTP request headers for the navigation.
-
-
- Note, you are not able to modify the HTTP request headers in a event.
-
-
-
-
-
- Determines whether to cancel the navigation.
-
-
- If set to true, the navigation is no longer present and the content of the current page is intact. For performance reasons, GET HTTP requests may happen, while the host is responding. You may set cookies and use part of a request for the navigation. Navigations to about schemes are cancellable, unless `msWebView2CancellableAboutNavigations` feature flag is disabled. Cancellation of frame navigation to `srcdoc` is not supported and will be ignored.
-
-
-
-
- Gets the ID of the navigation.
-
-
-
-
- Additional allowed frame ancestors set by the host app.
-
-
- The app may set this property to allow a frame to be embedded by additional ancestors besides what is allowed by http header [X-Frame-Options](https://developer.mozilla.org/docs/Web/HTTP/Headers/X-Frame-Options) and [Content-Security-Policy frame-ancestors directive](https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
- If set, a frame ancestor is allowed if it is allowed by the additional allowed frame ancestors or original http header from the site.
- Whether an ancestor is allowed by the additional allowed frame ancestors is done the same way as if the site provided it as the source list of the Content-Security-Policy frame-ancestors directive.
- For example, if https://example.com and https://www.example.com are the origins of the top page and intermediate iframes that embed a nested site-embedding iframe, and you fully trust those origins, you should set this property to https://example.com https://www.example.com.
-
- This property gives the app the ability to use iframe to embed sites that otherwise could not be embedded in an iframe in trusted app pages.
- This could potentially subject the embedded sites to [Clickjacking](https://wikipedia.org/wiki/Clickjacking) attack from the code running in the embedding web page. Therefore, you should only set this property with origins of fully trusted embedding page and any intermediate iframes.
- Whenever possible, you should use the list of specific origins of the top and intermediate frames instead of wildcard characters for this property.
- This API is to provide limited support for app scenarios that used to be supported by <webview> element in other solutions like JavaScript UWP apps and Electron.
- You should limit the usage of this property to trusted pages, and specific navigation target url, by checking the , and .
-
- This property is ignored for top level document navigation.
-
-
-
-
- Gets the navigation kind of the navigation.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- true when the navigation is successful; false for a navigation that ended up in an error page (failures due to no network, DNS lookup failure, HTTP server responds with 4xx). Note that WebView2 will report the navigation as 'unsuccessful' if the load for the navigation did not reach the expected completion for any reason. Such reasons include potentially catastrophic issues such network and certificate issues, but can also be the result of intended actions such as the app canceling a navigation or navigating away before the original navigation completed. Applications should not just rely on this flag, but also consider the reported WebErrorStatus to determine whether the failure is indeed catastrophic in their context.
-
-
- WebErrorStatuses that may indicate a non-catastrophic failure include:
-
-
-
-
-
-
-
-
-
-
-
-
-
- This may also be false for additional scenarios such as window.stop() run on navigated page.
-
-
-
-
- Gets the error code if the navigation failed.
-
-
-
-
- Gets the ID of the navigation.
-
-
-
-
- The HTTP status code of the navigation if it involved an HTTP request. For instance, this will usually be 200 if the request was successful, 404 if a page was not found, etc. See https://developer.mozilla.org/docs/Web/HTTP/Status for a list of common status codes.
-
-
- The HttpStatusCode property will be 0 in the following cases:
-
-
- The navigation did not involve an HTTP request. For instance, if it was a navigation to a file:// URL, or if it was a same-document navigation.
-
-
- The navigation failed before a response was received. For instance, if the hostname was not found, or if there was a network error.
-
-
- In those cases, you can get more information from the and properties.
-
- If the navigation receives a successful HTTP response, but the navigated page calls window.stop() before it finishes loading, then HttpStatusCode may contain a success code like 200, but will be false and will be .
-
- Since WebView2 handles HTTP continuations and redirects automatically, it is unlikely for HttpStatusCode to ever be in the 1xx or 3xx ranges.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the reason for WebView to raise the event.
-
-
-
-
- Indicates whether the event has been handled by the app.
-
-
- If the app has moved the focus to another desired location, it should set Handled property to true. When Handled property is false after the event handler returns, default action is taken. The default action is to try to find the next tab stop child window in the app and try to move focus to that window. If no other window exists to move focus, focus is cycled within the web content of the WebView.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the URI with the external URI scheme to be launched.
-
-
-
-
- Gets the origin initiating the external URI scheme launch. If the `InitiatingOrigin` is [opaque](https://html.spec.whatwg.org/multipage/origin.html#concept-origin-opaque), the `InitiatingOrigin` reported in the event args will be its precursor origin. The precursor origin is the origin that created the opaque origin. For example, if a frame on example.com opens a subframe with a different opaque origin, the subframe's precursor origin is example.com.
-
-
- The origin will be an empty string if the request is initiated by calling on the external URI scheme. If a script initiates the navigation, the `InitiatingOrigin` will be the top-level document's `Source`, i.e. if `window.location` is set to `"calculator://", the `InitiatingOrigin` will be set to `calculator://`. If the request is initiated from a child frame, the `InitiatingOrigin` will be the source of that child frame.
-
-
-
-
- true when the launching external URI scheme request was initiated through a user gesture.
-
-
-
-
- Determines whether to cancel the navigation.
-
-
-
-
- Gets a object and put the event into a deferred state.
-
-
- Use this to the launching external URI scheme request at a later time.
-
-
-
-
- Provides a set of properties for a frame in the .
-
-
- Provides a set of properties for a frame in the .
-
-
-
-
- Gets the value of frame's window.name property. The default value equals to frame html tag declaring it, as in <iframe name="frame-name" ...>.
-
-
- The returned string is empty when the frame has no name attribute and no assigned value for window.name.
-
-
-
-
- The URI of the document in the frame.
-
-
-
-
- This parent frame's . ParentFrameInfo will only be populated when obtained via calling . objects obtained via will always have a null ParentFrameInfo. This property is also null for the top most document in the which has no parent frame.
-
-
- ParentFrameInfo could be out of date as it's a snapshot.
-
-
-
-
- The unique identifier of the frame associated with the current . It's the same kind of ID as with the and . FrameId will only be populated when obtained calling . objects obtained via will always have an invalid frame Id 0.
-
-
- FrameId could be out of date as it's a snapshot. If there's created or destroyed or event or event after the asynchronous call starts, you may want to call the asynchronous method again to get the updated s.
-
-
-
-
- Gets the kind of the frame. FrameKind will only be populated when obtained calling . ` objects obtained via will always have the default value .
-
-
- FrameKind could be out of date as it's a snapshot.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the created frame.
-
-
-
-
-
- Representation of a DOM [FileSystemHandle](https://developer.mozilla.org/docs/Web/API/FileSystemHandle) object.
-
-
-
-
- The kind of the FileSystemHandle. It can either be a file or a directory.
-
-
-
-
- The path to the FileSystemHandle.
-
-
-
-
- The permissions granted to the FileSystemHandle.
-
-
-
-
- Representation of a DOM[File](https://developer.mozilla.org/docs/Web/API/File) object passed via WebMessage.
-
-
- You can use this object to obtain the path of a File dropped on WebView2.
-
-
-
-
- The absolute file path.
-
-
-
-
- The result for .
-
-
-
-
- This property is true if successfully executed script with no unhandled exceptions and the result is available in the property.
-
-
-
-
- A function that has no explicit return value returns undefined. If the script that was run throws an unhandled exception, then the result is also null.
-
-
-
-
- If Succeeded is false, you can use this property to get the unhandled exception thrown by script execution
-
-
-
-
- If Succeeded is true and the result of script execution is a string, this method provides the value of the string result, and we will get the false var value when the js result is not string type.
-
-
-
-
- Event args for the event.
-
-
-
-
- Returns the for the download that has started.
-
-
-
-
- Indicates whether to cancel the download.
-
-
- If canceled, the download save dialog is not displayed regardless of the value and the state is changed to with interrupt reason .
-
-
-
-
- The path to the file.
-
-
- If setting the path, the host should ensure that it is an absolute path, including the file name, and that the path does not point to an existing file. If the path points to an existing file, the file will be overwritten. If the directory does not exist, it is created.
-
-
-
-
- Indicates whether to hide the default download dialog.
-
-
- If set to true, the default download dialog is hidden for this download. The download progresses normally if it is not canceled, there will just be no default UI shown. By default the value is false and the default download dialog is shown.
-
-
-
-
- Gets a object.
-
-
- Use this to the event at a later time.
-
-
-
-
- Event args for the event.
-
-
-
-
- Gets the ID of the navigation.
-
-
-
-
- A Receiver is created for a particular DevTools Protocol event and allows you to subscribe and unsubscribe from that event.
-
-
- Obtained from the WebView object using .
-
-
-
-
-
- DevToolsProtocolEventReceived is raised when the corresponding DevToolsProtocol event is raised.
-
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the parameter object of the corresponding DevToolsProtocol event represented as a JSON string.
-
-
-
-
- Gets the sessionId of the target where the event originates from. Empty string is returned as sessionId if the event comes from the default session for the top page.
-
-
-
-
- Represents the information regarding the context menu target. Includes the context selected and the appropriate data used for the actions of a context menu.
-
-
-
-
- Gets the kind of context that the user selected as .
-
-
-
-
- Returns true if the context menu is requested on an editable component.
-
-
-
-
- Returns true if the context menu was requested on the main frame and false if invoked on another frame.
-
-
-
-
- Gets the uri of the page.
-
-
-
-
- Gets the uri of the frame. Will match the if is true.
-
-
-
-
- Returns true if the context menu is requested on HTML containing an anchor tag.
-
-
-
-
- Gets the uri of the link (if is true, null otherwise).
-
-
-
-
- Returns true if the context menu is requested on text element that contains an anchor tag.
-
-
-
-
- Gets the text of the link (if is true, null otherwise).
-
-
-
-
- Returns true if the context menu is requested on HTML containing a source uri.
-
-
-
-
- Gets the active source uri of element (if is true, null otherwise).
-
-
-
-
- Returns true if the context menu is requested on a selection.
-
-
-
-
- Gets the selected text (if is true, null otherwise).
-
-
-
-
- Event args for the event.
-
-
- Will contain the selection information and a collection of all of the default context menu items that the WebView would show. Allows the app to draw its own context menu or add/remove from the default context menu.
-
-
-
-
- Gets the collection of objects.
-
-
-
-
- Gets the target information associated with the requested context menu.
-
-
-
-
-
- Gets the coordinates where the context menu request occurred in relation to the upper left corner of the WebView bounds.
-
-
-
-
- Gets or sets the selected 's .
-
-
- When the app handles the event, it can set this to report the selected command from the context menu. The default value is -1 which means that no selection occurred. The app can also set the command ID for a custom context menu item, which will cause the event to be fired, however while command IDs for each custom context menu item is unique during a ContextMenuRequested event, WebView may reassign command ID values of deleted custom ContextMenuItems to new objects and the command ID assigned to the same custom item can be different between each app runtime. The command ID should always be obtained via the property.
-
-
-
-
- Gets or sets whether the event is handled by host after the event handler completes or after the deferral is completed if there is a taken .
-
-
- If Handled is set to true then WebView2 will not display a context menu and will instead use the property to indicate which, if any, context menu item to invoke. If after the event handler or deferral completes, Handled is set to false then WebView will display a context menu based on the contents of the property. The default value is false.
-
-
-
-
- Returns a object.
-
-
- Use this operation to complete the event when the custom context menu is closed.
-
-
-
-
- Represents a context menu item of a context menu displayed by WebView.
-
-
-
-
- Gets the unlocalized name for the .
-
-
- Use this to distinguish between context menu item types. This will be the English label of the menu item in lower camel case. For example, the "Save as" menu item will be "saveAs". Extension menu items will be "extension", custom menu items will be "custom" and spellcheck items will be "spellCheck".
- Some example context menu item names are:
-
-
-
- "saveAs"
-
-
- "copyImage"
-
-
- "openLinkInNewWindow"
-
-
-
-
-
-
- Gets the localized label for the . Will contain an ampersand for characters to be used as keyboard accelerator.
-
-
-
-
- Gets the Command ID for the .
-
-
- Use this to report the in event.
-
-
-
-
- Gets the localized keyboard shortcut for this .
-
-
- It will be the empty string if there is no keyboard shortcut. This is text intended to be displayed to the end user to show the keyboard shortcut. For example this property is Ctrl+Shift+I for the "Inspect" .
-
-
-
-
- Gets the Icon for the in PNG, Bitmap or SVG formats in the form of an IStream.
-
-
- Stream will be rewound to the start of the image data before being read.
-
-
-
-
- Gets the kind of as .
-
-
-
-
- Gets or sets the enabled property of the . Must only be used in the case of a custom context menu item.
-
-
- The default value for this is true.
-
-
-
-
- Gets or sets the checked property of the .
-
-
- Must only be used for custom context menu items that are of kind or .
-
-
-
-
- Gets the list of children menu items if the kind is .
-
-
- If the kind is not , will return null.
-
-
-
-
- CustomItemSelected event is raised when the user selects this .
-
-
- Will only be raised for end developer created context menu items.
-
-
-
-
- Event args for the event.
-
-
-
-
- true if the loaded content is an error page.
-
-
-
-
- Gets the ID of the navigation.
-
-
-
-
- This class is an extension of the class to support visual hosting.
-
-
- This class is an extension of the class to support visual hosting.
-
-
- This class is an extension of the class to support visual hosting.
-
-
- This class is an extension of the class to support visual hosting.
-
-
-
-
- Gets or sets the root visual in the hosting app's visual tree.
-
-
- This visual is where the WebView will connect its visual tree. The app uses this visual to position the WebView within the app. The app still needs to use the property to size the WebView. The RootVisualTarget property can be an IDCompositionVisual or a Windows::UI::Composition::ContainerVisual. WebView will connect its visual tree to the provided visual before returning from the property setter. The app needs to commit on its device setting the RootVisualTarget property. The RootVisualTarget property supports being set to null to disconnect the WebView from the app's visual tree.
-
-
-
-
- Gets the current cursor that WebView thinks it should be.
-
-
- The cursor should be set in WM_SETCURSOR through Mouse.SetCursor or set on the corresponding parent/ancestor HWND of the WebView through ::SetClassLongPtr. The HCURSOR can be freed so CopyCursor/DestroyCursor is recommended to keep your own copy if you are doing more than immediately setting the cursor.
-
-
-
-
- Gets the current system cursor ID reported by the underlying rendering engine for WebView.
-
-
-
-
- The event is raised when WebView thinks the cursor should be changed.
-
-
- For example, when the mouse cursor is currently the default cursor but is then moved over text, it may try to change to the IBeam cursor.
- It is expected for the developer to send messages (in addition to messages) through . This is to ensure that the mouse is actually within the WebView that sends out CursorChanged events.
-
-
-
-
- Sends mouse input to the WebView.
-
- The mouse event kind.
- The virtual keys associated with the eventKind.
- The amount of wheel movement.
- The absolute position of the mouse, or the amount of motion since the last mouse event was generated, depending on the eventKind.
-
- If eventKind is or , then mouseData specifies the amount of wheel movement.
- A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120. If eventKind is , , or , then mouseData specifies which X buttons were pressed or released. This value should be 1 if the first X button is pressed/released and 2 if the second X button is pressed/released. If eventKind is , then virtualKeys, mouseData, and point should all be zero. If eventKind is any other value, then mouseData should be zero. point is expected to be in the client coordinate space of the WebView. To track mouse events that start in the WebView and can potentially move outside of the WebView and host application, calling SetCapture and ReleaseCapture is recommended. To dismiss hover popups, it is also recommended to send messages.
-
-
-
-
- Sends pen or pointer input to the WebView.
-
- The pointer event kind.
- The pointer information.
-
- Accepts touch or pen pointer input of kinds defined in .
- Any pointer input from the system must be converted into a first.
-
-
-
-
- Call this method to inform the CoreWebView2CompositionController that a drag operation has left the WebView.
-
-
- Corresponds to the [ICoreDropOperationTarget.LeaveAsync](/uwp/api/windows.applicationmodel.datatransfer.dragdrop.core.icoredropoperationtarget.leaveasync) method when performing a drag operation into the WebView.
-
-
-
-
- This event is raised when elements on the page with "app-region" CSS property values corresponding to non-client regions change. Use the to see the kind of non-client region that changed.
-
-
-
-
- Call this method to perform hit-testing inside of your message loop when the message is WM_NCHITTEST.
-
- The point parameter is expected to be in the client coordinate space of the WebView2.
- The type of region which contains the point.
-
-
-
- This method retrieves the non-client regions on the page which corresponds to a given kind .
-
- The kind of non-client region.
- This method returns a vector of rectangles.
-
- This method can be used inside the event handler to get the list of rects for the specific region that changed.
-
-
-
-
- Event args for the event.
-
-
-
-
- Returns host name of the server that requested client certificate authentication.
-
-
- Normalization rules applied to the hostname are:
-
-
-
- Convert to lowercase characters for ascii characters.
-
-
- Punycode is used for representing non ascii characters.
-
-
- Strip square brackets for IPV6 address.
-
-
-
-
-
-
- Returns port of the server that requested client certificate authentication.
-
-
-
-
- Returns true if the server that issued this request is an http proxy. Returns false if the server is the origin server.
-
-
-
-
- The list contains Base64 encoding of DER encoded distinguished names of certificate authorities allowed by the server.
-
-
-
-
- Returns the list of when client certificate authentication is requested. The list contains mutually trusted CA certificate.
-
-
-
-
- Selected certificate to respond to the server.
-
-
-
-
- Indicates whether to cancel the certificate selection.
-
-
- If canceled, the request is aborted regardless of the property. By default the value is false.
-
-
-
-
- Indicates whether the event has been handled by host.
-
-
- Set to true to respond to the server with or without a certificate. If this flag is true with a it responds to the server with the selected certificate otherwise respond to the server without a certificate. By default the value of and are false and display default client certificate selection dialog prompt to allow the user to choose a certificate. The is ignored unless is set to true.
-
-
-
-
- Gets a object.
-
-
- Use this to the event at a later time.
-
-
-
-
- Event args for the event.
-
-
-
-
- The kind of browser process exit that has occurred.
-
-
-
-
- The process ID of the browser process that has exited.
-
-
-
-
- Browser extension installed on current profile.
-
-
-
-
- This is the browser extension's ID. This is the same browser extension ID returned by the browser extension API [chrome.runtime.id](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/id). Please see that documentation for more details on how the ID is generated. After an extension is removed, calling Id will return the id of the extension that is removed.
-
-
-
-
- This is the browser extension's name. This value is defined in this browser extension's manifest.json file. If manifest.json define extension's localized name, this value will be the localized version of the name. Please see [Manifest.json name](https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name) for more details.
-
-
-
-
- If IsEnabled is true then the Extension is enabled and running in WebView instances. If it is false then the Extension is disabled and not running in WebView instances. When a Extension is first installed, IsEnable are default to be true. IsEnabled is persisted per profile. After an extension is removed, calling IsEnabled will return the value at the time it was removed.
-
-
-
-
- Removes this browser extension from its WebView2 Profile. The browser extension is removed immediately including from all currently running HTML documents associated with this WebView2 Profile. The removal is persisted and future uses of this profile will not have this extension installed. After an extension is removed, calling Remove again will cause an exception.
-
-
-
-
- Sets whether this browser extension is enabled or disabled. This change applies immediately to the extension in all HTML documents in all WebView2s associated with this profile. After an extension is removed, calling Enable will not change the value of IsEnabled.
-
-
-
-
- Represents a Basic HTTP authentication response that contains a user name and a password as according to RFC7617 (https://tools.ietf.org/html/rfc7617)
-
-
-
-
- User name provided for authentication.
-
-
-
-
- Password provided for authentication.
-
-
-
-
- Event args for the BasicAuthenticationRequested event. Will contain the request that led to the HTTP authorization challenge, the challenge and allows the host to provide authentication response or cancel the request.
-
-
-
-
- The URI that led to the authentication challenge. For proxy authentication requests, this will be the URI of the proxy server.
-
-
-
-
- The authentication challenge string.
-
-
-
-
- Response to the authentication request with credentials.
-
-
- This object will be populated by the app if the host would like to provide authentication credentials.
-
-
-
-
- Indicates whether to cancel the authentication request.
-
-
- false by default. If set to true, Response will be ignored.
-
-
-
-
- Gets a object.
-
-
- Use this Deferral to defer the decision to show the Basic Authentication dialog.
-
-
-
-
- Event args for the event.
-
-
- Event args for the event.
-
-
-
-
- Gets the key event kind that caused the event to run.
-
-
-
-
- Gets the Win32 virtual key code of the key that was pressed or released.
-
-
- It is one of the Win32 virtual key constants such as VK_RETURN or an (uppercase) ASCII value such as 'A'. Verify whether Ctrl or Alt are pressed by running GetKeyState(VK_CONTROL) or GetKeyState(VK_MENU).
-
-
-
-
- Gets the LPARAM value that accompanied the window message.
-
-
- See the documentation for the WM_KEYDOWN and WM_KEYUP messages.
-
-
-
-
- Gets a representing the information passed in the LPARAM of the window message.
-
-
-
-
- Indicates whether the event is handled by host.
-
-
-
- For browser accelerator keys, when an accelerator key is pressed, the propagation and processing order is:
-
- 1. A CoreWebView2Controller.AcceleratorKeyPressed event is raised
- 1. WebView2 browser feature accelerator key handling
- 1. Web Content Handling: If the key combination isn't reserved for browser actions, the key event propagates to the web content, where JavaScript event listeners can capture and respond to it.
-
- If `Handled` property is set to true anywhere along the path, the event propagation stops, and web content will not receive the key and this prevents the WebView from performing the default action for this accelerator key. Otherwise the WebView will perform the default action for the accelerator key.
-
-
-
-
- This `IsBrowserAcceleratorKeyEnabled` property allows developers to control whether the browser handles accelerator keys such as Ctrl+P or F3, etc.
-
-
- The `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` API is a convenient setting for developers to disable all the browser accelerator keys together. This setting also sets the default value for the `IsBrowserAcceleratorKeyEnabled` property.
-
- By default, `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` is `TRUE` and `IsBrowserAcceleratorKeyEnabled` is `TRUE`. When developers change `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting to `FALSE`, this will change default value for `IsBrowserAcceleratorKeyEnabled` to `FALSE`. If developers want specific keys to be handled by the browser after changing the `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting to `FALSE`, they need to enable these keys by setting `IsBrowserAcceleratorKeyEnabled` to `TRUE`.
-
- The `CoreWebView2Controller.AcceleratorKeyPressed` event is raised any time an accelerator key is pressed, regardless of whether accelerator keys are enabled or not.
-
- This API will give the event arg higher priority over the `CoreWebView2Settings.AreBrowserAcceleratorKeysEnabled` setting when we handle the keys.
-
- With `IsBrowserAcceleratorKeyEnabled` property, if developers mark `IsBrowserAcceleratorKeyEnabled` as `FALSE`, the browser will skip the WebView2 browser feature accelerator key handling process, but the event propagation continues, and web content will receive the key combination.
-
- This property does not disable accelerator keys related to movement and text editing, such as:
- - Home, End, Page Up, and Page Down
- - Ctrl-X, Ctrl-C, Ctrl-V
- - Ctrl-A for Select All
- - Ctrl-Z for Undo
-
-
-
-
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.dll
deleted file mode 100644
index b2d08ad..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.xml b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.xml
deleted file mode 100644
index 5b005e1..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.WinForms.xml
+++ /dev/null
@@ -1,504 +0,0 @@
-
-
-
- Microsoft.Web.WebView2.WinForms
-
-
-
-
- This class is a bundle of the most common parameters used to create and instances.
- Its main purpose is to be set to in order to customize the environment and/or controller used by a during implicit initialization.
-
-
- This class isn't intended to contain all possible environment or controller customization options.
- If you need complete control over the environment and/or controller used by a WebView2 control then you'll need to initialize the control explicitly by
- creating your own environment (with ) and/or controller options (with ) and passing them to
- *before* you set the property to anything.
- See the class documentation for an initialization overview.
-
-
-
-
- Creates a new instance of with default data for all properties.
-
-
-
-
- Gets or sets the value to pass as the browserExecutableFolder parameter of when creating an environment with this instance.
-
-
-
-
- Gets or sets the value to pass as the userDataFolder parameter of when creating an environment with this instance.
-
-
-
-
- Gets or sets the value to use for the Language property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance.
-
-
-
-
- Gets or sets the value to use for the ProfileName property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance.
-
-
-
-
- Gets or sets the value to pass as the AdditionalBrowserArguments parameter of which is passed to when creating an environment with this instance.
-
-
-
-
- Gets or sets the value to use for the IsInPrivateModeEnabled property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance.
-
-
-
-
- Create a using the current values of this instance's properties.
-
- A task which will provide the created environment on completion, or null if no environment-related options are set.
-
- As long as no other properties on this instance are changed, repeated calls to this method will return the same task/environment as earlier calls.
- If some other property is changed then the next call to this method will return a different task/environment.
-
-
-
-
- Creates a using the current values of this instance's properties.
-
- A object or null if no controller-related properties are set.
- Thrown if the parameter environment is null.
-
-
-
- Control to embed WebView2 in WinForms.
-
-
-
-
- Create a new WebView2 WinForms control.
- After construction the property is null.
- Call to initialize the underlying .
-
-
- This control is effectively a wrapper around the WebView2 COM API, which you can find documentation for here: https://aka.ms/webview2
- You can directly access the underlying ICoreWebView2 interface and all of its functionality by accessing the property.
- Some of the most common COM functionality is also accessible directly through wrapper methods/properties/events on the control.
-
- Upon creation, the control's CoreWebView2 property will be null.
- This is because creating the CoreWebView2 is an expensive operation which involves things like launching Edge browser processes.
- There are two ways to cause the CoreWebView2 to be created:
- 1) Call the method. This is referred to as explicit initialization.
- 2) Set the property. This is referred to as implicit initialization.
- Either option will start initialization in the background and return back to the caller without waiting for it to finish.
- To specify options regarding the initialization process, either pass your own to EnsureCoreWebView2Async or set the control's property prior to initialization.
-
- When initialization has finished (regardless of how it was triggered) then the following things will occur, in this order:
- 1) The control's event will be invoked. If you need to perform one time setup operations on the CoreWebView2 prior to its use then you should do so in a handler for that event.
- 2) If a Uri has been set to the property then the control will start navigating to it in the background (i.e. these steps will continue without waiting for the navigation to finish).
- 3) The Task returned from will complete.
-
- For more details about any of the methods/properties/events involved in the initialization process, see its specific documentation.
-
- Accelerator key presses (e.g. Ctrl+P) that occur within the control will
- fire standard key press events such as OnKeyDown. You can suppress the
- control's default implementation of an accelerator key press (e.g.
- printing, in the case of Ctrl+P) by setting the Handled property of its
- EventArgs to true. Also note that the underlying browser process is
- blocked while these handlers execute, so:
-
-
- You should avoid doing a lot of work in these handlers.
-
-
- Some of the WebView2 and CoreWebView2 APIs may throw errors if
- invoked within these handlers due to being unable to communicate with
- the browser process.
-
-
- If you need to do a lot of work and/or invoke WebView2 APIs in response to
- accelerator keys then consider kicking off a background task or queuing
- the work for later execution on the UI thread.
-
-
-
-
- Cleans up any resources being used.
-
- true if managed resources should be disposed; otherwise, false.
-
-
-
- Overrides the base OnPaint event to have custom actions
- in designer mode
-
- The graphics devices which is the source
-
-
-
- Overrides the base WndProc events to handle specific window messages.
-
- The Message object containing the HWND window message and parameters
-
-
-
- Gets or sets a bag of options which are used during initialization of the control's .
- This property cannot be modified (an exception will be thrown) after initialization of the control's CoreWebView2 has started.
-
- Thrown if initialization of the control's CoreWebView2 has already started.
-
-
-
- Explicitly trigger initialization of the control's .
-
-
- A pre-created that should be used to create the .
- Creating your own environment gives you control over several options that affect how the is initialized.
- If you pass null (the default value) then a default environment will be created and used automatically.
-
-
- A pre-created that should be used to create the .
- Creating your own controller options gives you control over several options that affect how the is initialized.
- If you pass a controllerOptions to this method then it will override any settings specified on the property.
- If you pass null (the default value) and no value has been set to then a default controllerOptions will be created and used automatically.
-
-
- A Task that represents the background initialization process.
- When the task completes then the property will be available for use (i.e. non-null).
- Note that the control's event will be invoked before the task completes
- or on exceptions.
-
-
- Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call.
- Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given
- and simply return a Task representing that initialization already in progress.
- Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization
- by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new
- environment, or if you begin initialization with one environment and then call this method with no environment specified.
- When this method is called after previous initialization has failed, it will trigger initialization of the control's again.
- Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls.
-
- The following summarizes the possible error values and a description of why these errors occur.
-
-
- Error Value
- Description
-
-
- HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
- *\\Edge\\Application* path used in browserExecutableFolder.
-
-
- HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
- Specified options do not match the options of the WebViews that are currently running in the shared browser process.
-
-
- HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE)
- WebView2 Initialization failed due to an invalid host HWND parentWindow.
-
-
- HRESULT_FROM_WIN32(ERROR_DISK_FULL)
- WebView2 Initialization failed due to reaching the maximum number of installed runtime versions.
-
-
- HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED
- If the Webview depends upon an installed WebView2 Runtime version and it is uninstalled.
-
-
- HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
- Could not find Edge installation.
-
-
- HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)
- User data folder cannot be created because a file with the same name already exists.
-
-
- E_ACCESSDENIED
- Unable to create user data folder, Access Denied.
-
-
- E_FAIL
- Edge runtime unable to start.
-
-
-
-
-
- Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info.
-
-
- Thrown if this instance of is already disposed, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
-
-
-
- Explicitly trigger initialization of the control's .
-
-
- A pre-created that should be used to create the .
- Creating your own environment gives you control over several options that affect how the is initialized.
- If you pass null then a default environment will be created and used automatically.
-
-
- A Task that represents the background initialization process.
- When the task completes then the property will be available for use (i.e. non-null).
- Note that the control's event will be invoked before the task completes
- or on exceptions.
-
-
- Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call.
- Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given
- and simply return a Task representing that initialization already in progress.
- Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization
- by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new
- environment, or if you begin initialization with one environment and then call this method with no environment specified.
- When this method is called after previous initialization has failed, it will trigger initialization of the control's again.
- Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls.
-
-
- Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info.
-
-
- Thrown if this instance of is already disposed, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
-
-
-
- This is the private function which implements the actual background initialization task.
- Cannot be called if the control is already initialized or has been disposed.
-
-
- The environment to use to create the .
- If that is null then a default environment is created with and its default parameters.
-
-
- The controllerOptions to use to create the .
- If that is null then a default controllerOptions is created with its default parameters.
-
- A task representing the background initialization process.
- All the event handlers added here need to be removed in .
-
-
-
- Protected CreateParams property. Used to set custom window styles to the forms HWND.
-
-
-
-
- Protected VisibilityChanged handler.
-
-
-
-
- Protected SizeChanged handler.
-
-
-
-
- Protected Select method: override this to capture tab direction when WebView control is activated
-
-
-
-
- Protected OnGotFocus handler.
-
-
-
-
- Protected OnParentChanged handler.
-
-
-
-
- True if initialization finished successfully and the control is not disposed yet.
-
-
-
-
- Recursive retrieval of the parent control
-
- The control to get the parent for
- The root parent control
-
-
-
- The underlying CoreWebView2. Use this property to perform more operations on the WebView2 content than is exposed
- on the WebView2. This value is null until it is initialized and the object itself has undefined behaviour once the control is disposed.
- You can force the underlying CoreWebView2 to
- initialize via the method.
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
-
-
-
- The zoom factor for the WebView.
-
-
-
-
- Enable/disable external drop.
-
-
-
-
- The Source property is the URI of the top level document of the
- WebView2. Setting the Source is equivalent to calling .
- Setting the Source will trigger initialization of the , if not already initialized.
- The default value of Source is null, indicating that the is not yet initialized.
-
- Specified value is not an absolute .
- Specified value is null and the control is initialized.
-
-
-
-
- Returns true if the webview can navigate to a next page in the
- navigation history via the method.
- This is equivalent to the .
- If the underlying is not yet initialized, this property is false.
-
-
-
-
-
- Returns true if the webview can navigate to a previous page in the
- navigation history via the method.
- This is equivalent to the .
- If the underlying is not yet initialized, this property is false.
-
-
-
-
-
- The default background color for the WebView.
-
-
-
-
- Executes the provided script in the top level document of the .
- This is equivalent to .
-
- The underlying is not yet initialized.
- Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
-
-
-
- Reloads the top level document of the .
- This is equivalent to .
-
- The underlying is not yet initialized.
- Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
-
-
-
- Navigates to the next page in navigation history.
- This is equivalent to .
- If the underlying is not yet initialized, this method does nothing.
-
-
-
-
-
- Navigates to the previous page in navigation history.
- This is equivalent to .
- If the underlying is not yet initialized, this method does nothing.
-
-
-
-
-
- Renders the provided HTML as the top level document of the .
- This is equivalent to .
-
- The underlying is not yet initialized.
- Thrown when browser process has unexpectedly and left this control in an invalid state. We are considering throwing a different type of exception for this case in the future.
- The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank.
-
-
-
-
- Stops any in progress navigation in the .
- This is equivalent to .
- If the underlying is not yet initialized, this method does nothing.
-
-
-
-
-
- This event is triggered either 1) when the control's has finished being initialized (regardless of how it was triggered or whether it succeeded) but before it is used for anything
- OR 2) the initialization failed.
- You should handle this event if you need to perform one time setup operations on the CoreWebView2 which you want to affect all of its usages
- (e.g. adding event handlers, configuring settings, installing document creation scripts, adding host objects).
-
-
- This sender will be the WebView2 control, whose CoreWebView2 property will now be valid (i.e. non-null) for the first time
- if is true.
- Unlikely this event can fire second time (after reporting initialization success first)
- if the initialization is followed by navigation which fails.
-
-
-
-
- NavigationStarting dispatches before a new navigate starts for the top
- level document of the .
- This is equivalent to the event.
-
-
-
-
-
- NavigationCompleted dispatches after a navigate of the top level
- document completes rendering either successfully or not.
- This is equivalent to the event.
-
-
-
-
-
- WebMessageReceived dispatches after web content sends a message to the
- app host via chrome.webview.postMessage.
- This is equivalent to the event.
-
-
-
-
-
- SourceChanged dispatches after the property changes. This may happen
- during a navigation or if otherwise the script in the page changes the
- URI of the document.
- This is equivalent to the event.
-
-
-
-
-
- ContentLoading dispatches after a navigation begins to a new URI and the
- content of that URI begins to render.
- This is equivalent to the event.
-
-
-
-
-
- ZoomFactorChanged dispatches when the property changes.
- This is equivalent to the event.
-
-
-
-
-
- Required designer variable.
-
-
-
-
- Required method for Designer support - do not modify
- the contents of this method with the code editor.
-
-
-
-
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.dll
deleted file mode 100644
index ed79cd9..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.xml b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.xml
deleted file mode 100644
index c6e27b6..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Microsoft.Web.WebView2.Wpf.xml
+++ /dev/null
@@ -1,1932 +0,0 @@
-
-
-
- Microsoft.Web.WebView2.Wpf
-
-
-
-
- This class is a bundle of the most common parameters used to create and instances.
- Its main purpose is to be set to in order to customize the environment and/or controller used by a during implicit initialization.
- It is also a nice WPF integration utility which allows commonly used environment/controller parameters to be dependency properties and be created and used in markup.
-
-
- This class isn't intended to contain all possible environment or controller customization options.
- If you need complete control over the environment and/or controller used by a WebView2 control then you'll need to initialize the control explicitly by
- creating your own environment (with ) and/or controller options (with ) and passing them to
- *before* you set the property to anything.
- See the class documentation for an initialization overview.
-
-
-
-
- Creates a new instance of with default data for all properties.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to pass as the browserExecutableFolder parameter of when creating an environment with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to pass as the userDataFolder parameter of when creating an environment with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the Language property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the AdditionalBrowserArguments property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the AreBrowserExtensionsEnabled property of the CoreWebView2EnvironmentOptions parameter passed to when creating an environment with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the ProfileName property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the IsInPrivateModeEnabled property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance.
-
-
-
-
- The WPF DependencyProperty which backs the property.
-
-
-
-
- Gets or sets the value to use for the ScriptLocale property of the CoreWebView2ControllerOptions parameter passed to CreateCoreWebView2ControllerWithOptionsAsync when creating an controller with this instance.
-
-
-
-
- Create a using the current values of this instance's properties.
-
- A task which will provide the created environment on completion, or null if no environment-related options are set.
-
- As long as no other properties on this instance are changed, repeated calls to this method will return the same task/environment as earlier calls.
- If some other property is changed then the next call to this method will return a different task/environment.
-
-
-
-
- Create a using the current values of this instance's properties.
-
- A object or null if no controller-related properties are set.
- Thrown if the parameter environment is null.
-
-
-
- This class provides helper methods for working with Direct3D in the WebView2 WPF control.
- It includes methods for creating Direct3D9 and Direct3D11 devices, creating textures,
- copying resources, and getting shared handles, among others. These methods are used in
- the GraphicsItemD3DImage class to interact with Direct3D objects and resources.
-
-
- The class includes PInvoke declarations for calling Direct3D functions from unmanaged code.
- It also defines several COM interfaces and structures necessary for interacting with
- Direct3D objects.
- Note: This class is intended for internal use by the WebView2 WPF control and should not
- be used directly by application developers.
-
-
-
-
- This Class is a capturing the content of the provided (the WebView2 visual).
-
-
-
-
- Tracks the conditions which block implicit initialization and whether it has been requested or not.
- The analogy is a set of gates which are either open (implicit init allowed) or closed (will have to wait).
- All sub-gates must be open before implicit init can proceed.
- If implicit init is requested while the gate is open then it happens immediately.
- If it's requested while the gate is closed then it occurs when the gate becomes open.
-
-
- It should be reasonably straight-forward to expand this class in the future to:
- * add new sub-gates to further restrict when implicit initialization can occur
- * support storing and invoking multiple actions next time the gate is open instead of only one
-
-
-
-
- Tracks whether a sub-gate regarding / is open or closed.
- This sub-gate is only closed after calls to `BeginInit` and before an equal number of calls to `EndInit`.
-
-
- We don't want implicit initialization to occur in between those calls,
- because implicit initialization is a side effect of setting the Source property,
- and side effects of setting properties during that period are supposed to be delayed until `EndInit`.
-
-
-
-
- How many times has been called without being called.
-
-
-
-
- Tracks whether a sub-gate regarding is open or closed.
- This sub-gate is closed if `SynchronizationContext.Current == null`.
-
-
- Initialization won't work without a `SynchronizationContext` because otherwise an `await` might resume on a different thread.
- As far as I know so far this only occurs before an event loop as started on the running thread.
- Once there's an event loop running the `SynchronizationContext` ensures that `await`s resume in the same event loop (i.e. same thread).
- Although it's a rare corner case, it's possible to create a `Window` w/ `WebView2` before an app's event loop starts.
- This sub-gate handles that corner case.
-
-
-
-
- An action which will trigger initialization next time the gate is open (and only once).
-
-
- This basically tracks whether or not implicit initialization has been requested while the gate is closed.
- If this is non-null then it should be a delegate that calls .
-
-
-
-
- Closes the gate until is called an equal number of times.
-
-
-
-
- Opens the gate closed by after being called the same number of times.
-
-
-
-
- A handler that should be attached to an event which indicates that exists.
- The best one I know of right now is .
- When the handler is called, the gate will re-evaluate its state and potentially allow any pending initialization action.
-
-
-
-
- Run a given action when the gate is open.
-
-
- If the gate is currently open then the action runs immediately.
- Otherwise the action runs next time the gate is discovered to be open.
- The action is only ever run once; it will not run again a second/subsequent time the gate opens.
- If the gate is closed and another action is already pending then the new action *overwrites* the current one (i.e. the currently stored action will never run).
- To "forget" a currently stored action, pass `null`.
-
- Action to run when the gate is open, or null to clear a previously specified action.
-
-
-
- Examine our overall open/closed state and run any pending action if appropriate.
-
-
-
-
- The public interfaces of WebView2 WPF control.
-
-
-
-
- Gets or sets a bag of options which are used during initialization of the control's .
- Setting this property will not work after initialization of the control's has started (the old value will be retained).
- See the class documentation for an initialization overview.
-
-
-
-
-
- Accesses the complete functionality of the underlying COM API.
- Returns null until initialization has completed.
- See the class documentation for an initialization overview.
-
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- A wrapper around the .
- The only difference between this event and is the first parameter that's passed to handlers.
- Handlers of this event will receive the control, whereas handlers of will receive the instance.
-
-
-
-
-
- A wrapper around the .
- The only difference between this event and is the first parameter that's passed to handlers.
- Handlers of this event will receive the control, whereas handlers of will receive the instance.
-
-
-
-
-
- A wrapper around the .
- The only difference between this event and is the first parameter that's passed to handlers.
- Handlers of this event will receive the control, whereas handlers of will receive the instance.
-
-
-
-
-
- The event is raised when the property changes.
- This event directly exposes .
-
-
-
-
-
-
- A wrapper around the .
- The only difference between this event and is the first parameter that's passed to handlers.
- Handlers of this event will receive the control, whereas handlers of will receive the instance.
-
-
-
-
-
- A wrapper around the .
- The only difference between this event and is the first parameter that's passed to handlers.
- Handlers of this event will receive the control, whereas handlers of will receive the instance.
-
-
-
-
-
- This event is triggered either
- 1) when the control's has finished being initialized (regardless of how initialization was triggered) but before it is used for anything, or
- 2) if the initialization failed.
- You should handle this event if you need to perform one time setup operations on the which you want to affect all of its usages.
- (e.g. adding event handlers, configuring settings, installing document creation scripts, adding host objects).
- See the class documentation for an initialization overview.
-
-
- This sender will be the control, whose property will now be valid (i.e. non-null) for the first time
- if is true.
- Unlikely this event can fire second time (after reporting initialization success first)
- if the initialization is followed by navigation which fails.
-
-
-
-
-
- Explicitly triggers initialization of the control's .
- See the class documentation for an initialization overview.
-
-
- A pre-created that should be used to create the .
- Creating your own environment gives you control over several options that affect how the is initialized.
- If you pass an environment to this method then it will override any settings specified on the property.
- If you pass null (the default value) and no value has been set to then a default environment will be created and used automatically.
-
-
- A pre-created that should be used to create the .
- Creating your own controller options gives you control over several options that affect how the is initialized.
- If you pass a controllerOptions to this method then it will override any settings specified on the property.
- If you pass null (the default value) and no value has been set to then a default controllerOptions will be created and used automatically.
-
-
- A Task that represents the background initialization process.
- When the task completes then the property will be available for use (i.e. non-null).
- Note that the control's event will be invoked before the task completes.
-
-
- Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call.
- Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given
- and simply return a Task representing that initialization already in progress, unless previous initialization has already failed.
- Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization
- by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new
- environment, or if you begin initialization with one environment and then call this method with no environment specified.
- When this method is called after previous initialization has failed, it will trigger initialization of the control's again.
- Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls.
-
- The following summarizes the possible error values and a description of why these errors occur.
-
-
- Error Value
- Description
-
-
- HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED)
- *\\Edge\\Application* path used in browserExecutableFolder.
-
-
- HRESULT_FROM_WIN32(ERROR_INVALID_STATE)
- Specified options do not match the options of the WebViews that are currently running in the shared browser process.
-
-
- HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE)
- WebView2 Initialization failed due to an invalid host HWND parentWindow.
-
-
- HRESULT_FROM_WIN32(ERROR_DISK_FULL)
- WebView2 Initialization failed due to reaching the maximum number of installed runtime versions.
-
-
- HRESULT_FROM_WIN32(ERROR_PRODUCT_UNINSTALLED
- If the Webview depends upon an installed WebView2 Runtime version and it is uninstalled.
-
-
- HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
- Could not find Edge installation.
-
-
- HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)
- User data folder cannot be created because a file with the same name already exists.
-
-
- E_ACCESSDENIED
- Unable to create user data folder, Access Denied.
-
-
- E_FAIL
- Edge runtime unable to start.
-
-
-
-
-
- Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info.
-
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if is null, which probably indicates that the application's event loop hasn't started yet.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Explicitly triggers initialization of the control's .
- See the class documentation for an initialization overview.
-
-
- A pre-created that should be used to create the .
- Creating your own environment gives you control over several options that affect how the is initialized.
- If you pass an environment to this method then it will override any settings specified on the property.
- If you pass null and no value has been set to then a default environment will be created and used automatically.
-
-
- A Task that represents the background initialization process.
- When the task completes then the property will be available for use (i.e. non-null).
- Note that the control's event will be invoked before the task completes.
-
-
- Unless previous initialization has already failed, calling this method additional times with the same parameter will have no effect (any specified environment is ignored) and return the same Task as the first call.
- Unless previous initialization has already failed, calling this method after initialization has been implicitly triggered by setting the property will have no effect if no environment is given
- and simply return a Task representing that initialization already in progress, unless previous initialization has already failed.
- Unless previous initialization has already failed, calling this method with a different environment after initialization has begun will result in an . For example, this can happen if you begin initialization
- by setting the property and then call this method with a new environment, if you begin initialization with and then call this method with a new
- environment, or if you begin initialization with one environment and then call this method with no environment specified.
- When this method is called after previous initialization has failed, it will trigger initialization of the control's again.
- Note that even though this method is asynchronous and returns a Task, it still must be called on the UI thread like most public functionality of most UI controls.
-
-
- Thrown if this method is called with a different environment than when it was initialized. See Remarks for more info.
-
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if is null, which probably indicates that the application's event loop hasn't started yet.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Implementation of the ISupportInitialize pattern.
- Prevents the control from implicitly initializing its until is called.
- Does *not* prevent explicit initialization of the CoreWebView2 (i.e. ).
- Mainly intended for use by interactive UI designers.
-
-
- Note that the "Initialize" in ISupportInitialize and the "Init" in BeginInit/EndInit mean
- something different and more general than this control's specific concept of initializing
- its CoreWebView2 (explicitly or implicitly). This ISupportInitialize pattern is a general
- way to set batches of properties on the control to their initial values without triggering
- any dependent side effects until all of the values are set (i.e. until EndInit is called).
- In the case of this control, a specific side effect to be avoided is triggering implicit
- initialization of the CoreWebView2 when setting the Source property.
- For example, normally if you set after you've already set Source,
- the data set to CreationProperties is ignored because implicit initialization has already started.
- However, if you set the two properties (in the same order) in between calls to BeginInit and
- EndInit then the implicit initialization of the CoreWebView2 is delayed until EndInit, so the data
- set to CreationProperties is still used even though it was set after Source.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
- Invokes any functionality that has been delayed since the corresponding call to .
- Mainly intended for use by interactive UI designers.
-
-
- See the documentation of for more information.
-
-
-
-
- The top-level which the WebView is currently displaying (or will display once initialization of its is finished).
- Generally speaking, getting this property is equivalent to getting the property and setting this property (to a different value) is equivalent to calling the method.
-
-
- Getting this property before the has been initialized will retrieve the last Uri which was set to it, or null (the default) if none has been.
- Setting this property before the has been initialized will cause initialization to start in the background (if not already in progress), after which the will navigate to the specified .
- This property can never be set back to null or to a relative .
- See the class documentation for an initialization overview.
-
- Thrown if has already been called on the control.
- Thrown if the property is set to null.
- Thrown if the property is set to a relative (i.e. a whose property is false).
-
-
-
-
- Returns true if the WebView can navigate to a previous page in the navigation history.
- Wrapper around the property of .
- If isn't initialized yet then returns false.
-
-
-
-
-
- Returns true if the WebView can navigate to a next page in the navigation history.
- Wrapper around the property of .
- If isn't initialized yet then returns false.
-
-
-
-
-
- The zoom factor for the WebView.
- This property directly exposes , see its documentation for more info.
- Getting this property before the has been initialized will retrieve the last value which was set to it, or 1.0 (the default) if none has been.
- The most recent value set to this property before the CoreWebView2 has been initialized will be set on it after initialization.
-
-
-
-
-
- The default background color for the WebView.
- This property directly exposes , see its documentation for more info.
- Getting this property before the has been initialized will retrieve the last value which was
- set to it, or Color.White (the default) if none has been.
- The most recent value set to this property before CoreWebView2Controller has been initialized will be set on it after initialization.
-
-
-
-
- The foreground color to be used in design mode.
-
-
-
-
- The AllowExternalDrop property for the WebView.
- This property directly exposes , see its documentation for more info.
- Getting this property before the has been initialized will retrieve the last value which was
- set to it, or true (the default) if none has been.
- The most recent value set to this property before CoreWebView2Controller has been initialized will be set on it after initialization.
-
-
-
-
- Navigates the WebView to the previous page in the navigation history.
- Equivalent to calling
- If hasn't been initialized yet then does nothing.
-
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Navigates the WebView to the next page in the navigation history.
- Equivalent to calling .
- If hasn't been initialized yet then does nothing.
-
-
- Thrown if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Reloads the current page.
- Equivalent to calling .
-
-
- Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Stops all navigations and pending resource fetches.
- Equivalent to calling .
-
-
- Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Initiates a navigation to htmlContent as source HTML of a new document.
- Equivalent to calling .
-
-
- Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
- The htmlContent parameter may not be larger than 2 MB (2 * 1024 * 1024 bytes) in total size. The origin of the new page is about:blank.
-
-
-
-
-
- Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView.
- Equivalent to calling .
-
-
- Thrown if hasn't been initialized yet, or if the calling thread isn't the thread which created this object (usually the UI thread). See for more info.
- May also be thrown if the browser process has crashed unexpectedly and left the control in an invalid state. We are considering throwing a different type of exception for this case in the future.
-
- Thrown if has already been called on the control.
-
-
-
-
-
- Attempts to set focus to the WebView2 Control.
- Equivalent to calling .
- Returns true if keyboard focus and logical focus were set to this element;
- false if only logical focus was set to this element, or if the call to this method did not force the focus to change.
-
-
-
-
- Defines internal operations specific to the WebView2 WPF control, separating the control-specific logic
- that cannot be shared across different types of controls.
-
-
-
-
- Initializes the WebView2 controller with operations specific to the control type.
-
-
-
-
- Unregister controller's handlers specific to the control type.
-
-
-
-
- A control to embed web content in a WPF application.
-
-
- This control is effectively a wrapper around the [WebView2 COM API](https://aka.ms/webview2).
- You can directly access the underlying
- ICoreWebView2 interface and all of its functionality by accessing the
- property. Some of the most common COM
- functionality is also accessible directly through wrapper
- methods/properties/events on the control.
-
- Upon creation, the control's property will be
- null. This is because creating the is an
- expensive operation which involves things like launching Edge browser
- processes. There are two ways to cause the to
- be created:
-
-
- Call the method. This is
- referred to as explicit initialization.
-
-
- Set the property (which could be done from
- markup, for example). This is referred to as implicit initialization.
- Either option will start initialization in the background and return
- back to the caller without waiting for it to finish.
- To specify options regarding the initialization process, either pass
- your own to or set the control's property prior to initialization.
-
-
-
- When initialization has finished (regardless of how it was triggered or
- whether it succeeded) then the following things will occur, in this
- order:
-
-
- The control's event
- will be invoked. If you need to perform one time setup operations on
- the prior to its use then you should
- do so in a handler for that event.
-
-
- If initialization was successful and a Uri has been set to the property then the control will start navigating to it in
- the background (i.e. these steps will continue without waiting for the
- navigation to finish).
-
-
- The Task returned from will
- complete.
-
-
-
- For more details about any of the methods/properties/events involved in
- the initialization process, see its specific documentation.
-
- Because the control's is a very heavyweight
- object (potentially responsible for multiple running processes and
- megabytes of disk space) the control implements to provide an explicit means to free it.
- Calling will release the
- and its underlying resources (except any that are also being used by other
- WebViews), and reset to null. After has been called the cannot be
- re-initialized, and any attempt to use functionality which requires it
- will throw an .
-
- Accelerator key presses (e.g. Ctrl+P) that occur within the control will
- fire standard key press events such as OnKeyDown. You can suppress the
- control's default implementation of an accelerator key press (e.g.
- printing, in the case of Ctrl+P) by setting the Handled property of its
- EventArgs to true. Also note that the underlying browser process is
- blocked while these handlers execute, so:
-
-
- You should avoid doing a lot of work in these handlers.
-
-
- Some of the WebView2 and CoreWebView2 APIs may throw errors if
- invoked within these handlers due to being unable to communicate with
- the browser process.
-
-
- If you need to do a lot of work and/or invoke WebView2 APIs in response to
- accelerator keys then consider kicking off a background task or queuing
- the work for later execution on the UI thread.
-
- Note that this control extends in order to embed
- windows which live outside of the WPF ecosystem. This has some
- implications regarding the control's input and output behavior as well as
- the functionality it "inherits" from and .
- See the and [WPF/Win32 interop](/dotnet/framework/wpf/advanced/wpf-and-win32-interoperation#hwnds-inside-wpf)
- documentation for more information.
-
-
-
-
-
- Creates a new instance of a WebView2 control.
- Note that the control's will be null until initialized.
- See the class documentation for an initialization overview.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
- This is overridden from and is called to instruct us to create our HWND.
-
- The HWND that we should use as the parent of the one we create.
- The HWND that we created.
-
-
-
-
- This is overridden from and is called to instruct us to destroy our HWND.
-
- Our HWND that we need to destroy.
-
-
-
-
- This is overridden from and is called to provide us with Win32 messages that are sent to our hwnd.
-
- Window receiving the message (should always match our ).
- Indicates the message being received. See Win32 documentation for WM_* constant values.
- The "wParam" data being provided with the message. Meaning varies by message.
- The "lParam" data being provided with the message. Meaning varies by message.
- If true then the message will not be forwarded to any (more) handlers.
- Return value varies by message.
-
-
-
-
- We override the to prevent the focus event from propagating.
- We expect the event raised from
-
-
-
-
- We override the to prevent the focus event from propagating.
- We expect the event raised from
-
-
-
-
- Override for painting to draw
-
- The tools to handle the drawing via .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This is called by our base class according to the typical implementation of the pattern.
- We implement it by releasing all of our underlying COM resources, including our .
-
- True if a caller is explicitly calling Dispose, false if we're being finalized.
-
-
-
- Implementation of the ISupportInitialize pattern.
- Prevents the control from implicitly initializing its until is called.
- Does *not* prevent explicit initialization of the CoreWebView2 (i.e. ).
- Mainly intended for use by interactive UI designers.
-
-
- Note that the "Initialize" in ISupportInitialize and the "Init" in BeginInit/EndInit mean
- something different and more general than this control's specific concept of initializing
- its CoreWebView2 (explicitly or implicitly). This ISupportInitialize pattern is a general
- way to set batches of properties on the control to their initial values without triggering
- any dependent side effects until all of the values are set (i.e. until EndInit is called).
- In the case of this control, a specific side effect to be avoided is triggering implicit
- initialization of the CoreWebView2 when setting the Source property.
- For example, normally if you set after you've already set Source,
- the data set to CreationProperties is ignored because implicit initialization has already started.
- However, if you set the two properties (in the same order) in between calls to BeginInit and
- EndInit then the implicit initialization of the CoreWebView2 is delayed until EndInit, so the data
- set to CreationProperties is still used even though it was set after Source.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
- Invokes any functionality that has been delayed since the corresponding call to .
- Mainly intended for use by interactive UI designers.
-
-
- See the documentation of for more information.
-
-
-
-
- Changes our controller's ParentWindow to the given HWND, along with any other necessary associated work.
-
- The new HWND to set as the controller's parent. IntPtr.Zero means that the controller will have no parent and the CoreWebView2 will be hidden.
- Whether or not to call as required. Defaults to true. If you pass false then you should call it yourself if required.
-
- Reparenting the controller isn't necessarily as simple as changing its ParentWindow property,
- and this method exists to ensure that any other work that needs to be done at the same time gets done.
- The reason that SyncControllerWithParentWindow isn't baked directly into this method is because
- sometimes we want to call the Sync functionality without necessarily reparenting (e.g. during initialization).
-
-
-
-
- Syncs visual/windowing information between the controller and its parent HWND.
- This should be called any time a new, non-null HWND is set as the controller's parent,
- including when the controller is first created.
-
-
-
-
- This is overridden from and called when our control's location has changed.
- The HwndHost takes care of updating the HWND we created.
- What we need to do is move our CoreWebView2 to match the new location.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is overridden from and is called to inform us that tabbing has caused the focus to move into our control/window.
- Since WPF can't manage the transition of focus to a non-WPF HWND, it delegates the transition to us here.
- So our job is just to place the focus in our external HWND.
-
- Information about how the focus is moving.
- true to indicate that we handled the navigation, or false to indicate that we didn't.
-
-
-
- This is overridden from and called to allow us to handle key press input.
- WPF should never actually call this in response to keyboard events because we're hosting a non-WPF window.
- When our window has focus Windows will send the input directly to it rather than to WPF's top-level window and input system.
- This override should only be called when we're explicitly forwarding accelerator key input from the CoreWebView2 to WPF (in CoreWebView2Controller_AcceleratorKeyPressed).
- Even then, this KeyDownEvent is only triggered because our PreviewKeyDownEvent implementation explicitly triggers it, matching WPF's usual system.
- So the process is:
-
- CoreWebView2Controller_AcceleratorKeyPressed
- PreviewKeyDownEvent
- KeyDownEvent
- OnKeyDown
-
- .
-
-
-
-
- See .
-
-
-
-
- This is the "Preview" (i.e. tunneling) version of , so it actually happens first.
- Like OnKeyDown, this will only ever be called if we're explicitly forwarding key presses from the CoreWebView2.
- In order to mimic WPF's standard input handling, when we receive this we turn around and fire off the standard bubbling KeyDownEvent.
- That way others in the WPF tree see the same standard pair of input events that WPF itself would have triggered if it were handling the key press.
-
-
-
-
-
- See .
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True when we're in design mode and shouldn't create an underlying CoreWebView2.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
- Design mode drawing content.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's ProcessFailedEvent.
-
-
-
-
- This is a "gate" which controls whether or not implicit initialization can occur.
- If implicit initialization is triggered while the gate is closed,
- then the initialization should be delayed until the gate opens.
- When we want to trigger implicit initialization we route the call through this gate.
- If the gate is open then the initialization will proceed.
- If the gate is closed then it will remember to trigger the initialization when it opens.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
-
-
-
-
- Updates one of our dependency properties to match a new value from the .
- It both sets the value and remembers (in _propertyChangingFromCore) that it came from the CoreWebView2 rather than the caller,
- allowing the property's "on changed" handler to alter its behavior based on where the new value came from.
- It's only intended to be called in a CoreWebView2 event handler that's informing us of a new property value.
- It's basically just a wrapper around the inherited SetCurrentValue which also maintains _propertyChangingFromCore.
- See the comments on for additional background info.
- One more thing worth explicitly stating is that it wraps SetCurrentValue rather than SetValue,
- in order to avoid overwriting any OneWay bindings that are set on the specified properties.
- Check the link https://stackoverflow.com/q/4230698 for more information about the difference between SetValue and SetCurrentValue.
-
- The property to change due to an equivalent change in the CoreWebView2.
- The new value from the CoreWebView2.
-
-
-
- Checks if a given property is currently being updated to match an equivalent change in the .
- This method should only be called from a property's "on changed" handler; it has no meaning at any other time.
- It is used to determine if the property is changing to match the CoreWebView2 or because the caller set it.
- Usually this is used in order to decide if the new value needs to be propagated down to the CoreWebView2.
- See the comments on for additional background info.
-
- The property to check.
- True if the property is changing to match the CoreWebView2, or false if the property was changed by the caller.
-
-
-
- This is a handler for our base UIElement's IsVisibleChanged event.
- It's predictably fired whenever IsVisible changes, and IsVisible reflects the actual current visibility status of the control.
- We just need to pass this info through to our CoreWebView2Controller so it can save some effort when the control isn't visible.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is a callback that WPF calls to validate a potential new Source value.
-
-
- True if the value is valid, false if it is not.
- If we return false then WPF should respond by throwing an .
-
-
- Note that we unfortunately can't treat null as invalid here because null is valid prior to initialization.
-
-
-
-
- This is a callback that WPF calls when the WPF Source property's value changes.
- This might have been triggered by either:
- 1) The caller set Source to programmatically trigger a navigation.
- 2) The CoreWebView changed its own source and we're just updating the dependency property to match.
- We use to distinguish the two cases.
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's SourceChanged event.
- Unsurprisingly, it fires when the CoreWebView2's source URI has been changed.
- Note that there are two distinct triggers for this:
- 1) The CoreWebView2 was told to navigate programmatically (potentially by us, see SourcePropertyChanged).
- 2) The user interacted with the CoreWebView2, e.g. clicked a link.
- In either of the above cases, this event might trigger several times due to e.g. redirection.
- Aside from propagating to our own event, we just need to update our WPF Source property to match the CoreWebView2's.
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's NavigationStarting event.
- We just need to propagate the event to WPF.
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's NavigationCompleted event.
- We just need to propagate the event to WPF.
-
-
-
-
- This is an event handler for our CoreWebView2's HistoryChanged event.
- We're handling it in order to update our WPF CanGoBack and CanGoForward properties.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2Controller's MoveFocusRequested event.
- It fires when the CoreWebView2Controller has focus but wants to move it elsewhere in the app.
- E.g. this happens when the user tabs past the last item in the CoreWebView2 and focus needs to return to some other app control.
- So our job is just to tell WPF to move the focus on to the next control.
- Note that we don't propagate this event outward as a standard WPF routed event because we've implemented its purpose here.
- If users of the control want to track focus shifting in/out of the control, they should use standard WPF events.
-
-
-
-
- This is an event handler for our CoreWebView2Controller's GotFocus event.
- We just need to propagate the event to WPF.
-
-
-
-
- This is an event handler for our CoreWebView2Controller's LostFocus event.
- We just need to propagate the event to WPF.
-
-
-
-
- This is an event handler for our CoreWebView2Controller's AcceleratorKeyPressed event.
- This is called to inform us about key presses that are likely to have special behavior (e.g. esc, return, Function keys, letters with modifier keys).
- WPF can't detect this input because Windows sends it directly to the Win32 CoreWebView2Controller control.
- We implement this by generating standard WPF key input events, allowing callers to handle the input in the usual WPF way if they want.
- If nobody handles the WPF key events then we'll allow the default CoreWebView2Controller logic (if any) to handle it.
- Of the possible options, this implementation should provide the most flexibility to callers.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is a callback that WPF calls when our WPF ZoomFactor property's value changes.
- This might have been triggered by either:
- 1) The caller set ZoomFactor to change the zoom of the CoreWebView2.
- 2) The CoreWebView2 changed its own ZoomFactor and we're just updating the dependency property to match.
- We use to distinguish the two cases.
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2Controller's ZoomFactorChanged event.
- Unsurprisingly, it fires when the CoreWebView2Controller's ZoomFactor has been changed.
- Note that there are two distinct triggers for this:
- 1) The value was changed programmatically (potentially by us, see ZoomFactorPropertyChanged).
- 2) The user interacted with the CoreWebView2, e.g. CTRL + Mouse Wheel.
- Aside from propagating to our own event, we just need to update our WPF ZoomFactor property to match the CoreWebView2Controller's.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is a callback that WPF calls when our WPF DefaultBackgroundColor property's value changes.
- Since CoreWebView2Controller does not update this property itself, this is only triggered by the
- caller setting DefaultBackgroundColor.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- This is a callback that WPF calls when our WPF AllowExternalDrop property's value changes.
- Since CoreWebView2Controller does not update this property itself, this is only triggered by the
- caller setting AllowExternalDrop.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's ContentLoading event.
- We just need to propagate the event to WPF.
-
-
-
-
-
-
-
-
-
-
- This is an event handler for our CoreWebView2's WebMessageReceived event.
- We just need to propagate the event to WPF.
-
-
-
-
- Moves focus to the CoreWebView2Controller according to the
-
-
-
-
- This is an event handler for the event.
- It is called to inform us when we receive the keyboard focus.
- We handle this by passing the keyboard focus on to the underlying .
- We never want to land in a state where our control actually has the keyboard focus.
-
- The control that received keyboard focus.
- Arguments from the underlying GotKeyboardFocus event.
-
- For WebView2 control, it's actually possible for us to receive keyboard focus without this method being called.
- One known case where that happens is when our parent window is deactivated while we have focus, then reactivated.
- We handle that case in .
-
-
-
-
-
- Implementation of pattern.
- Developers should never reach the WebView2Base class here.
-
-
-
-
- Implementation of the pattern.
- Should on be called during m_element's Dispose().
- When this is called, it means all resources releted to the control are disposed and we can safely remove the control from the dictionary.
-
-
-
-
- Visual hosting version of the WebView2 control.
-
-
- This control is effectively a wrapper around the [WebView2 COM
- API](https://aka.ms/webview2). You can directly access the underlying
- ICoreWebView2 interface and all of its functionality by accessing the
- property. Some of the most common COM
- functionality is also accessible directly through wrapper
- methods/properties/events on the control.
-
- Upon creation, the control's property will be
- null. This is because creating the is an
- expensive operation which involves things like launching Edge browser
- processes. There are two ways to cause the to
- be created:
-
-
- Call the method. This is
- referred to as explicit initialization.
-
-
- Set the property (which could be done from
- markup, for example). This is referred to as implicit initialization.
- Either option will start initialization in the background and return
- back to the caller without waiting for it to finish.
- To specify options regarding the initialization process, either pass
- your own to or set the control's property prior to initialization.
-
-
-
- When initialization has finished (regardless of how it was triggered or
- whether it succeeded) then the following things will occur, in this
- order:
-
-
- The control's event
- will be invoked. If you need to perform one time setup operations on
- the prior to its use then you should
- do so in a handler for that event.
-
-
- If initialization was successful and a Uri has been set to the property then the control will start navigating to it in
- the background (i.e. these steps will continue without waiting for the
- navigation to finish).
-
-
- The Task returned from will
- complete.
-
-
-
- For more details about any of the methods/properties/events involved in
- the initialization process, see its specific documentation.
-
- Because the control's is a very heavyweight
- object (potentially responsible for multiple running processes and
- megabytes of disk space) the control implements to provide an explicit means to free it.
- Calling will release the
- and its underlying resources (except any that are also being used by other
- WebViews), and reset to null. After has been called the cannot be
- re-initialized, and any attempt to use functionality which requires it
- will throw an .
-
- Accelerator key presses (e.g. Ctrl+P) that occur within the control will
- fire standard key press events such as OnKeyDown. You can suppress the
- control's default implementation of an accelerator key press (e.g.
- printing, in the case of Ctrl+P) by setting the Handled property of its
- EventArgs to true. Also note that the underlying browser process is
- blocked while these handlers execute, so:
-
-
- You should avoid doing a lot of work in these handlers.
-
-
- Some of the WebView2 and CoreWebView2 APIs may throw errors if
- invoked within these handlers due to being unable to communicate with
- the browser process.
-
-
- If you need to do a lot of work and/or invoke WebView2 APIs in response to
- accelerator keys then consider kicking off a background task or queuing
- the work for later execution on the UI thread.
-
- This control extends in order to host the image
- displaying WebView's content using template. This has some
- implications regarding the control's input and output behavior as well as
- the functionality it "inherits" from and .
-
- The content of is rendered by an .
- By default, of WebView2CompositionControl
- is set to true. This can prevent the from becoming blurry at certain dimensions,
- but it disables anti-aliasing. Set it to false if you want to keep the anti-aliasing.
-
- Note that the uses a [GraphicsCaptureSession](https://learn.microsoft.com/en-us/uwp/api/windows.graphics.capture.graphicscapturesession)
- to capture the screen content from the underlying browser processes.
- As such, you may experience lower framerates compared to the standard control, and DRM protected
- content will fail to play or display properly.
-
-
-
-
-
-
- TemplatePart Name constant for the Image used to represent WebView2.
-
-
-
-
- Image control uses to display content of WebView2.
-
-
-
-
- Component used to capture from WebView visual and work as source of Image.
-
-
-
-
- interface.
-
-
-
-
- Static constructor for the WebView2CompositionControl class.
-
-
- This static constructor is responsible for overriding the default style key property
- for instances of the WebView2CompositionControl class. It sets the metadata to use
- the type of the WebView2CompositionControl as the default style key.
- See href="https://learn.microsoft.com/en-us/dotnet/api/system.windows.frameworkelement.defaultstylekey?view=netframework-4.8.1"/>
-
-
-
-
- Creates a new instance of a WebView2Composition control.
- Note that the control's will be null until initialized.
- See the class documentation for an initialization overview.
-
-
-
-
- This is an event handler for WPF control's SizeChanged event.
- We use CoreWebView2Controller.NotifyParentWindowPositionChanged to notify our browser our
- size and relative location has changed.
-
-
-
-
- This is an event handler for WPF control's LocationChange event.
- We use CoreWebView2Controller.NotifyParentWindowPositionChanged to notify our browser our
- position has changed.
-
-
-
-
- Initialize the dispatcher queue.
-
-
-
-
- This is an event handler for our CoreWebView2CompositionController's CursorChanged event.
- We use CursorInteropHelper to Obtain a WPF Cursor from the provided Win32 Handle.
-
-
-
-
- Send the pointer event to the WebView2 Control.
-
-
-
-
-
- This is an event handler for WPF control's OnTouchDown event.
- We use CoreWebView2CompositionController.SendPointerInput to send the touch input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnTouchMove event.
- We use CoreWebView2CompositionController.SendPointerInput to send the touch input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnTouchUp event.
- We use CoreWebView2CompositionController.SendPointerInput to send the touch input to our browser.
-
-
-
-
- Helper function to get the of the mouse event.
-
-
-
-
- Send the mouse event to the WebView2 Control.
-
-
-
-
-
- This is an event handler for WPF control's OnMouseMove event.
- We use CoreWebView2CompositionController.SendMouseInput to send the mouse input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnMouseDown event.
- We use CoreWebView2CompositionController.SendMouseInput to send the mouse input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnMouseUp event.
- We use CoreWebView2CompositionController.SendMouseInput to send the mouse input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnMouseWheel event.
- We use CoreWebView2CompositionController.SendMouseInput to send the input to our browser.
-
-
-
-
- This is an event handler for WPF control's OnMouseDoubleClick event.
- We use CoreWebView2CompositionController.SendMouseInput to send the input to our browser.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
- Override for painting to draw
-
- The tools to handle the drawing via .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Implementation of the pattern.
- This will release all of our underlying COM resources.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
- Prevents the control from implicitly initializing its until is called.
- Does *not* prevent explicit initialization of the CoreWebView2 (i.e. ).
- Mainly intended for use by interactive UI designers.
-
-
- Note that the "Initialize" in ISupportInitialize and the "Init" in BeginInit/EndInit mean
- something different and more general than this control's specific concept of initializing
- its CoreWebView2 (explicitly or implicitly). This ISupportInitialize pattern is a general
- way to set batches of properties on the control to their initial values without triggering
- any dependent side effects until all of the values are set (i.e. until EndInit is called).
- In the case of this control, a specific side effect to be avoided is triggering implicit
- initialization of the CoreWebView2 when setting the Source property.
- For example, normally if you set after you've already set Source,
- the data set to CreationProperties is ignored because implicit initialization has already started.
- However, if you set the two properties (in the same order) in between calls to BeginInit and
- EndInit then the implicit initialization of the CoreWebView2 is delayed until EndInit, so the data
- set to CreationProperties is still used even though it was set after Source.
-
-
-
-
- Implementation of the ISupportInitialize pattern.
- Invokes any functionality that has been delayed since the corresponding call to .
- Mainly intended for use by interactive UI designers.
-
-
- See the documentation of for more information.
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- WebView2Composition Control only needs IKeyboardInputSink:TabInto to get the direction of tab traversal.
- KeyboardInputSite is not implemented by WebView2Composition.
-
-
-
-
- We override the to prevent the focus event from propagating.
- We expect the event raised from
-
-
-
-
- We override the to prevent the focus event from propagating.
- We expect the event raised from
-
-
-
-
- This is an event handler for our CoreWebView2Controller's GotFocus event.
- Used to record whether the control currently has focus.
-
-
-
-
- This is an event handler for our CoreWebView2Controller's Lost event.
- We just need to propagate the event to WPF.
-
-
-
-
- IKeyboardInputSink:HasFocusWithin interface.
- Whether WebView has focus.
-
-
-
-
- IKeyboardInputSink:OnMnemonic interface.
- Not implemented by WebView2.
-
-
-
-
- IKeyboardInputSink:RegisterKeyboardInputSink interface.
- Not implemented by WebView2.
-
-
-
-
- IKeyboardInputSink:TabInto interface.
-
-
-
-
- IKeyboardInputSink:TranslateAccelerator interface.
- Not implemented by WebView2.
-
-
-
-
- IKeyboardInputSink:TranslateChar interface.
- Not implemented by WebView2.
-
-
-
-
- This is overridden from and called to allow us to handle key press input.
- WPF should never actually call this in response to keyboard events because the focus is on the controller's HWND.
- When Controller's HWND has focus, WPF does not know the Controller's HWND belongs to this control, and the key event will not be fired for this control and WPF main window.
- This override should only be called when we're explicitly forwarding accelerator key input from the CoreWebView2 to WPF (in CoreWebView2Controller_AcceleratorKeyPressed).
- Even then, this KeyDownEvent is only triggered because our PreviewKeyDownEvent implementation explicitly triggers it, matching WPF's usual system.
- So the process is:
-
- CoreWebView2Controller_AcceleratorKeyPressed
- PreviewKeyDownEvent
- KeyDownEvent
- OnKeyDown
-
- .
-
-
-
-
- See .
-
-
-
-
- This is the "Preview" (i.e. tunneling) version of , so it actually happens first.
- Like OnKeyDown, this will only ever be called if we're explicitly forwarding key presses from the CoreWebView2.
- In order to mimic WPF's standard input handling, when we receive this we turn around and fire off the standard bubbling KeyDownEvent.
- That way others in the WPF tree see the same standard pair of input events that WPF itself would have triggered if it were handling the key press.
-
-
-
-
-
- See .
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
-
-
-
- The WPF which backs the property.
-
-
-
-
- Gets or sets the divider for the rendering frame rate of the WebViewCompositionControl.
-
-
- The FpsDivider property affects how the rendering frame rate is divided. For example, if the default rendering frame rate of the content is 60 frames
- per second (fps), setting the FpsDivider to 2 reduces the frame rate to 30 fps. This property is useful for reducing the rendering load and improving
- performance for scenarios where high frame rates are unnecessary.
-
-
-
-
- This is a callback that WPF calls when our WPF FpsDivider property's value changes.
- We implement it by setting the FpsDivider of the GraphicsItemD3DImage.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True when we're in design mode and shouldn't create an underlying CoreWebView2.
-
-
-
-
- GeneratedInternalTypeHelper
-
-
-
-
- CreateInstance
-
-
-
-
- GetPropertyValue
-
-
-
-
- SetPropertyValue
-
-
-
-
- CreateDelegate
-
-
-
-
- AddEventHandler
-
-
-
-
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Newtonsoft.Json.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Newtonsoft.Json.dll
deleted file mode 100644
index 1ffeabe..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/Newtonsoft.Json.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.batteries_v2.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.batteries_v2.dll
deleted file mode 100644
index f9eb46b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.batteries_v2.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.core.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.core.dll
deleted file mode 100644
index 556d40f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.core.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.provider.e_sqlite3.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.provider.e_sqlite3.dll
deleted file mode 100644
index a6df9a6..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/SQLitePCLRaw.provider.e_sqlite3.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.Diagnostics.EventLog.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.Diagnostics.EventLog.dll
deleted file mode 100644
index e557be3..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.Diagnostics.EventLog.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.IO.Packaging.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.IO.Packaging.dll
deleted file mode 100644
index eb95db7..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.IO.Packaging.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.ServiceProcess.ServiceController.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.ServiceProcess.ServiceController.dll
deleted file mode 100644
index db17a49..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/System.ServiceProcess.ServiceController.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Core.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Core.dll
deleted file mode 100644
index d623133..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Core.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Fonts.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Fonts.dll
deleted file mode 100644
index 444918b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Fonts.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokenization.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokenization.dll
deleted file mode 100644
index a9b3be9..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokenization.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokens.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokens.dll
deleted file mode 100644
index 7595fb6..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.Tokens.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.dll
deleted file mode 100644
index 3645736..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/UglyToad.PdfPig.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 44d0f9f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index a1632f4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 627e0ee..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index b61e51f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 978a8c5..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 63bf11c..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 8d9d359..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index df9ea7a..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 2a25b9c..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 684d809..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index cc6d6e7..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 854d782..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 616ecb4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index e891bc2..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index b7fe953..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 32556dc..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 57a8ac5..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 73f6fa8..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 7d5e6a4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 17b7405..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 43ed17d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 81616ed..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index e52fa1f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 612e6d3..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 9cb9b2a..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index d1ed5fe..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index d15a8c4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index ab8cdd4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 502d945..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 7430dd9..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index d91b108..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index e8e36d4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 9bb69ab..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index f0c807c..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 3ed1bfa..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index df8f097..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 8a6a381..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index d781956..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index fb0a161..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index a13868e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 7046867..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 204c387..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 7f80e2d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index c93af5a..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 22ea30e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 9146026..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 15756a5..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 75fce24..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 7d62c1b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index d8f7288..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a
deleted file mode 100644
index ace30e6..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm/native/libe_sqlite3.so
deleted file mode 100644
index 8520492..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm64/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm64/native/libe_sqlite3.so
deleted file mode 100644
index 30b84ea..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-arm64/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-armel/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-armel/native/libe_sqlite3.so
deleted file mode 100644
index 48de629..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-armel/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-mips64/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-mips64/native/libe_sqlite3.so
deleted file mode 100644
index 4f7d693..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-mips64/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm/native/libe_sqlite3.so
deleted file mode 100644
index 2c9dcda..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm64/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm64/native/libe_sqlite3.so
deleted file mode 100644
index 53949cf..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-arm64/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-x64/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-x64/native/libe_sqlite3.so
deleted file mode 100644
index a043d7d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-musl-x64/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-ppc64le/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-ppc64le/native/libe_sqlite3.so
deleted file mode 100644
index 3593c9b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-ppc64le/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-s390x/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-s390x/native/libe_sqlite3.so
deleted file mode 100644
index 7e01b91..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-s390x/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x64/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x64/native/libe_sqlite3.so
deleted file mode 100644
index a8f9ae0..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x64/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x86/native/libe_sqlite3.so b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x86/native/libe_sqlite3.so
deleted file mode 100644
index f9a9b69..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/linux-x86/native/libe_sqlite3.so and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib
deleted file mode 100644
index e6612c5..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-x64/native/libe_sqlite3.dylib b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-x64/native/libe_sqlite3.dylib
deleted file mode 100644
index 3ad1142..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/maccatalyst-x64/native/libe_sqlite3.dylib and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-arm64/native/libe_sqlite3.dylib b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-arm64/native/libe_sqlite3.dylib
deleted file mode 100644
index 21a8f42..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-arm64/native/libe_sqlite3.dylib and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-x64/native/libe_sqlite3.dylib b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-x64/native/libe_sqlite3.dylib
deleted file mode 100644
index ffaf82f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/osx-x64/native/libe_sqlite3.dylib and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm/native/e_sqlite3.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm/native/e_sqlite3.dll
deleted file mode 100644
index 454821f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm/native/e_sqlite3.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/WebView2Loader.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/WebView2Loader.dll
deleted file mode 100644
index ff13a17..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/WebView2Loader.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/e_sqlite3.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/e_sqlite3.dll
deleted file mode 100644
index 70805d9..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-arm64/native/e_sqlite3.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/WebView2Loader.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/WebView2Loader.dll
deleted file mode 100644
index 983ee32..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/WebView2Loader.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/e_sqlite3.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/e_sqlite3.dll
deleted file mode 100644
index 379665c..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x64/native/e_sqlite3.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/WebView2Loader.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/WebView2Loader.dll
deleted file mode 100644
index a8565ba..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/WebView2Loader.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/e_sqlite3.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/e_sqlite3.dll
deleted file mode 100644
index c0e722d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win-x86/native/e_sqlite3.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll
deleted file mode 100644
index 6281e73..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll
deleted file mode 100644
index 0d456dc..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/adr-writer.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/adr-writer.skill.md
deleted file mode 100644
index 1d2feef..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/adr-writer.skill.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-name: adr-writer
-label: 아키텍처 결정 기록 (ADR)
-description: 아키텍처 결정 사항을 표준 ADR 형식으로 문서화합니다.
-icon: \uE82D
-allowed-tools:
- - file_read
- - file_write
- - folder_map
- - grep
- - search_codebase
-tabs: code
----
-
-아키텍처 결정 사항을 ADR(Architecture Decision Record) 형식으로 문서화하세요.
-
-## ADR이란?
-소프트웨어 아키텍처에서 내린 중요한 결정의 배경, 대안, 근거를 기록하는 경량 문서입니다.
-미래의 팀원이 "왜 이렇게 결정했는지"를 이해할 수 있게 합니다.
-
-## 워크플로우
-
-1. **결정 사항 확인**: 사용자에게 다음을 파악
- - 어떤 결정을 내렸는가 (또는 내려야 하는가)
- - 관련 코드/시스템 영역
- - 고려한 대안들
-2. **코드 분석** (선택): 관련 코드 구조를 읽어 현재 상태 파악
-3. **ADR 작성**: 표준 형식으로 문서 생성
-4. **파일 저장**: `docs/adr/` 폴더에 번호 형식으로 저장
-
-## ADR 표준 형식
-
-```markdown
-# ADR-[번호]: [결정 제목]
-
-**상태**: 제안됨 | 승인됨 | 폐기됨 | 대체됨
-**날짜**: YYYY-MM-DD
-**결정자**: [이름/팀]
-
-## 맥락 (Context)
-어떤 상황에서 이 결정이 필요한가?
-- 기술적 배경
-- 비즈니스 요구사항
-- 제약 조건
-
-## 결정 (Decision)
-무엇을 결정했는가?
-- 선택한 방안의 구체적 내용
-- 적용 범위
-
-## 대안 (Alternatives)
-
-### 대안 1: [이름]
-- 장점: ...
-- 단점: ...
-- 비용/복잡도: ...
-
-### 대안 2: [이름]
-- 장점: ...
-- 단점: ...
-- 비용/복잡도: ...
-
-## 근거 (Rationale)
-왜 이 결정을 선택했는가?
-- 대안 대비 장점
-- 트레이드오프 분석
-- 참고 자료/벤치마크
-
-## 결과 (Consequences)
-
-### 긍정적
-- ...
-
-### 부정적
-- ...
-
-### 리스크
-- ...
-
-## 관련 문서
-- ADR-[관련번호]: [제목]
-- [외부 참고 링크]
-```
-
-## 파일 명명 규칙
-- 위치: `docs/adr/` (없으면 생성)
-- 파일명: `ADR-NNNN-제목-요약.md` (예: `ADR-0001-데이터베이스-선택.md`)
-- 번호: 기존 ADR 파일 조회 후 자동 부여
-
-## 규칙
-- 결정의 "왜"를 중심으로 작성 (코드를 읽으면 "무엇"은 알 수 있음)
-- 대안은 최소 2개 이상 제시
-- 트레이드오프를 솔직하게 기록 (완벽한 선택은 없음)
-- 짧고 명확하게 (1~2페이지 이내)
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/api-docs.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/api-docs.skill.md
deleted file mode 100644
index 0e72bde..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/api-docs.skill.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-name: api-docs
-label: API 문서 생성
-description: 코드에서 API 엔드포인트를 분석하여 마크다운/HTML API 문서를 자동 생성합니다.
-icon: \uE8A1
-allowed-tools:
- - folder_map
- - grep
- - file_read
- - file_write
- - search_codebase
-tabs: code
----
-
-작업 폴더의 소스 코드를 분석하여 API 문서를 생성하세요.
-
-## 분석 대상
-- REST API 엔드포인트 (Controller, Route 어노테이션)
-- 함수/메서드 시그니처 및 주석
-- 요청/응답 모델 (DTO, Schema)
-- 인증/권한 요구사항
-
-## 작업 절차
-1. `folder_map` — 프로젝트 구조 파악
-2. `grep` — API 엔드포인트 패턴 검색 (`[HttpGet]`, `@GetMapping`, `router.get`, `@app.route` 등)
-3. `file_read` — 컨트롤러/라우터 파일 분석
-4. `grep` — 요청/응답 모델 클래스 검색
-5. `file_read` — 모델 구조 분석
-6. `file_write` — API 문서 생성
-
-## 출력 형식
-마크다운으로 작성하되 다음 구조를 따르세요:
-
-```
-# API 문서
-
-## 개요
-- Base URL, 인증 방식, 공통 헤더
-
-## 엔드포인트
-
-### [POST] /api/users
-- **설명**: 사용자 생성
-- **인증**: Bearer Token 필요
-- **요청 본문**:
- | 필드 | 타입 | 필수 | 설명 |
- |------|------|------|------|
- | name | string | ✓ | 사용자 이름 |
-- **응답**: 201 Created
- ```json
- { "id": 1, "name": "..." }
- ```
-- **에러 코드**: 400, 401, 409
-```
-
-## 주의사항
-- 코드에서 실제 확인된 내용만 문서화하세요. 추측하지 마세요.
-- 주석이나 Swagger/OpenAPI 어노테이션이 있으면 우선 활용하세요.
-- 인증, 페이징, 에러 처리 등 공통 패턴은 별도 섹션으로 정리하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/batch-rename.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/batch-rename.skill.md
deleted file mode 100644
index b81115e..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/batch-rename.skill.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-name: batch-rename
-label: 파일 일괄 이름 변경
-description: 패턴 매칭, 번호 붙이기, 날짜 추가 등 파일 이름을 일괄 변경합니다.
-icon: \uE8AC
-tabs: cowork
-allowed-tools:
- - folder_map
- - file_read
- - file_manage
- - clipboard_tool
----
-
-파일 이름을 규칙에 따라 일괄 변경하세요. 변경 전 반드시 미리보기를 제공합니다.
-
-## 작업 절차
-
-1. **대상 파일 스캔**: folder_map으로 작업 폴더의 파일 목록을 수집
-2. **이름 변경 규칙 확인**: 사용자에게 다음 옵션을 확인
- - 대상 파일 필터 (확장자, 이름 패턴)
- - 변경 규칙 (아래 지원 규칙 참조)
- - 적용 순서 (이름순, 날짜순, 크기순)
-3. **변경 미리보기 생성**: 변경 전/후 이름을 표로 표시
- ```
- | # | 현재 이름 | 변경 후 이름 |
- |---|----------------------|----------------------|
- | 1 | IMG_20260101_001.jpg | 2026-01-01_001.jpg |
- | 2 | IMG_20260101_002.jpg | 2026-01-01_002.jpg |
- ```
-4. **사용자 확인**: 미리보기를 보여주고 진행 여부를 확인
-5. **일괄 변경 실행**: file_manage로 파일 이름을 순차 변경
-6. **결과 보고**: 변경 성공/실패 건수와 상세 내역을 안내
-
-## 지원 이름 변경 규칙
-
-### 패턴 치환
-- **문자열 치환**: "IMG_" → "사진_"
-- **정규식 치환**: `(\d{4})(\d{2})(\d{2})` → `$1-$2-$3`
-- **대소문자 변환**: 소문자, 대문자, 타이틀 케이스
-
-### 번호 붙이기
-- **순번 추가**: `문서_001.pdf`, `문서_002.pdf`, ...
-- **시작 번호**: 사용자 지정 (기본: 1)
-- **자릿수**: 자동 계산 (파일 수 기준)
-- **위치**: 접두사 또는 접미사
-
-### 날짜 추가
-- **오늘 날짜**: `보고서_2026-03-30.docx`
-- **파일 수정일**: 파일의 실제 수정 날짜 사용
-- **날짜 형식**: YYYY-MM-DD, YYYYMMDD, YY.MM.DD
-
-### 정리
-- **공백 처리**: 공백 → 언더스코어/하이픈
-- **특수문자 제거**: 파일명에서 특수문자 제거
-- **확장자 변경**: `.jpeg` → `.jpg`
-- **접두사/접미사 추가 또는 제거**
-
-## 충돌 처리
-- 변경 후 이름이 이미 존재하면 자동으로 번호 추가 (`_1`, `_2`)
-- 충돌 건은 미리보기에서 ⚠️ 표시로 경고
-- 원본 파일 덮어쓰기 절대 금지
-
-## 규칙
-- **미리보기 없이 직접 변경하지 않음** — 반드시 미리보기 후 사용자 확인
-- 하위 폴더 포함 여부는 사용자에게 확인
-- 숨김 파일(.으로 시작)은 기본 제외
-- 변경 실패 시 이미 변경된 파일은 원복하지 않으므로, 중요한 경우 백업 권장
-- 한 번에 1,000개 이상의 파일 변경 시 경고
-
-한국어로 안내하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/changelog.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/changelog.skill.md
deleted file mode 100644
index bcd4195..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/changelog.skill.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-name: changelog
-label: 변경 이력 / 릴리즈 노트
-description: Git 커밋 이력에서 자동으로 변경 이력과 릴리즈 노트를 생성합니다.
-icon: \uE81C
-allowed-tools:
- - git_tool
- - file_read
- - file_write
- - html_create
- - text_summarize
-tabs: code
----
-
-Git 커밋 이력을 분석하여 변경 이력(CHANGELOG) 또는 릴리즈 노트를 생성하세요.
-
-## 워크플로우
-
-1. **이력 조회**: git_tool로 커밋 로그 수집
- - 지정 기간 또는 태그 간 커밋
- - 커밋 메시지 + 변경 파일 목록
-2. **분류**: 커밋을 Conventional Commits 기준으로 분류
-3. **Breaking Change 감지**: 시그니처 변경, API 삭제 등 감지
-4. **문서 생성**: Markdown 또는 HTML로 출력
-
-## Conventional Commits 분류
-
-| 접두사 | 분류 | 설명 |
-|--------|------|------|
-| feat | ✨ 신기능 | 새로운 기능 추가 |
-| fix | 🐛 버그 수정 | 버그 수정 |
-| docs | 📝 문서 | 문서 변경 |
-| style | 💄 스타일 | 코드 포맷팅 (동작 변경 없음) |
-| refactor | ♻️ 리팩토링 | 코드 리팩토링 |
-| perf | ⚡ 성능 | 성능 개선 |
-| test | ✅ 테스트 | 테스트 추가/수정 |
-| chore | 🔧 기타 | 빌드, 설정 변경 |
-| BREAKING | 💥 Breaking | 하위 호환성 깨지는 변경 |
-
-## 출력 형식
-
-### CHANGELOG.md
-```markdown
-# Changelog
-
-## [1.6.0] - 2026-03-30
-
-### ✨ 신기능
-- 멀티패스 문서 생성 엔진 (#123)
-- PPT 네이티브 생성 도구
-
-### 🐛 버그 수정
-- 탭 전환 시 대화 유실 문제 해결
-
-### 💥 Breaking Changes
-- 없음
-
-### 📝 문서
-- 개발자 가이드 v1.6.0 업데이트
-```
-
-### 릴리즈 노트 (HTML)
-사용자 친화적인 형식:
-- 주요 변경사항 (스크린샷 포함 가능)
-- 개선 사항
-- 알려진 이슈
-- 업그레이드 가이드
-
-## 규칙
-- Conventional Commits 형식이 아닌 커밋도 내용 분석으로 분류
-- 중복/사소한 커밋은 병합하여 요약
-- Breaking Change는 반드시 별도 섹션으로 강조
-- 이슈 번호가 있으면 링크 포함
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/code-scaffold.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/code-scaffold.skill.md
deleted file mode 100644
index d5e12e0..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/code-scaffold.skill.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-name: code-scaffold
-label: 코드 스캐폴딩
-description: 프로젝트 구조를 분석하고 새 기능의 코드 뼈대를 자동 생성합니다.
-icon: \uE943
-allowed-tools:
- - folder_map
- - file_read
- - grep
- - file_write
- - search_codebase
-tabs: code
----
-
-작업 폴더의 프로젝트 구조를 분석하고 새 기능의 코드 뼈대를 생성하세요.
-
-다음 도구를 사용하세요:
-1. folder_map — 프로젝트 구조 파악
-2. file_read — 기존 코드 패턴 분석
-3. grep — 코딩 컨벤션 확인
-4. file_write — 새 파일 생성
-
-작업 순서:
-1. 프로젝트 타입 감지 (언어, 프레임워크, 빌드 시스템)
-2. 기존 코드 패턴 분석 (네이밍, 폴더 구조, 임포트 스타일)
-3. 사용자 요청에 맞는 코드 뼈대 생성
-
-생성 항목:
-- 클래스/모듈 파일 (프로젝트 컨벤션에 맞춰)
-- 인터페이스/타입 정의
-- 단위 테스트 파일
-- 필요한 설정/구성 파일
-
-규칙:
-- 기존 프로젝트의 코딩 스타일을 따르세요
-- TODO 주석으로 구현이 필요한 부분을 표시하세요
-- 한국어 주석을 추가하세요
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/commit-review.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/commit-review.skill.md
deleted file mode 100644
index ce3f9c5..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/commit-review.skill.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-name: commit-review
-label: 커밋 메시지 리뷰
-description: Git 커밋 메시지를 Conventional Commits 기준으로 검토하고 개선을 제안합니다.
-icon: \uE8CB
-allowed-tools:
- - process
- - git_tool
- - file_read
- - text_summarize
-tabs: code
----
-
-작업 폴더의 최근 Git 커밋 메시지를 검토하고 개선안을 제시하세요.
-
-## 작업 절차
-1. `process` — `git log --oneline -20` 으로 최근 커밋 목록 확인
-2. `process` — `git log --format="%H%n%s%n%b%n---" -10` 으로 상세 메시지 확인
-3. `process` — `git diff HEAD~1` 으로 최신 커밋 변경 내용 확인 (필요 시)
-4. 각 커밋을 Conventional Commits 기준으로 분석
-5. 결과를 정리하여 출력
-
-## Conventional Commits 규칙
-```
-[optional scope]:
-
-[optional body]
-
-[optional footer(s)]
-```
-
-### type 종류
-- `feat`: 새 기능
-- `fix`: 버그 수정
-- `docs`: 문서 변경
-- `style`: 포맷팅 (코드 동작 변경 없음)
-- `refactor`: 리팩토링
-- `perf`: 성능 개선
-- `test`: 테스트 추가/수정
-- `chore`: 빌드/도구 설정
-- `ci`: CI 설정 변경
-
-## 검토 항목
-1. **type 적절성**: 변경 내용과 type이 일치하는가
-2. **설명 품질**: 50자 이내, 명령형, 명확한 내용
-3. **본문 유무**: 복잡한 변경에 "왜" 설명이 있는가
-4. **일관성**: 팀 내 커밋 스타일이 통일되어 있는가
-5. **Breaking Change**: BREAKING CHANGE 푸터 또는 ! 표기
-
-## 출력 형식
-```
-## 커밋 메시지 리뷰 결과
-
-### 전체 요약
-- 검토 커밋: N개
-- 규칙 준수: N개 ✓ / 위반: N개 ✗
-
-### 개별 리뷰
-
-#### abc1234 "Fix login bug"
-- ❌ type 없음 → `fix: resolve login authentication failure`
-- ❌ 본문 없음 → 원인과 해결 방법 추가 권장
-
-#### def5678 "feat: add user profile page"
-- ✅ Conventional Commits 준수
-- 💡 scope 추가 권장: `feat(profile): add user profile page`
-```
-
-## 주의사항
-- 비판이 아닌 건설적 제안을 하세요.
-- 팀의 기존 컨벤션이 있으면 그것을 우선 존중하세요.
-- 개선된 메시지 예시를 항상 함께 제시하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/compare.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/compare.skill.md
deleted file mode 100644
index 1143dac..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/compare.skill.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-name: compare
-label: 비교 분석표
-description: 2개 이상 항목의 비교 분석 매트릭스를 생성합니다.
-icon: \uE9D5
-allowed-tools:
- - html_create
- - excel_create
- - file_read
- - document_read
- - chart_create
-tabs: all
----
-
-사용자가 요청한 항목들을 체계적으로 비교 분석하는 매트릭스를 생성하세요.
-
-## 워크플로우
-
-1. **비교 대상 확인**: 어떤 항목들을 비교할지 파악
- - 제품, 기술, 방안, 서비스, 도구, 프레임워크 등
-2. **비교 기준 설정**: 적절한 비교 축을 설계
- - 기능, 가격, 성능, 사용성, 확장성, 지원, 보안 등
-3. **데이터 수집**: 참고 파일이 있으면 읽어서 반영
-4. **분석표 생성**: HTML 또는 Excel로 비교 매트릭스 생성
-5. **종합 평가**: 총평 + 추천 의견 제시
-
-## 비교표 구성
-
-### 기본 매트릭스
-| 기준 | 항목 A | 항목 B | 항목 C |
-|------|--------|--------|--------|
-| 기능1 | ✅ 지원 | ⚠ 일부 | ❌ 미지원 |
-| 기능2 | ... | ... | ... |
-
-### 점수 비교 (radar 차트 활용)
-- 각 항목을 1~10점으로 정량화
-- chart_create로 레이더 차트 또는 바 차트 시각화
-
-### 종합 평가
-- 장점/단점 요약
-- 상황별 추천 (예: "예산이 제한적이면 A, 확장성이 중요하면 B")
-
-## 출력 형식
-- **HTML** (권장): 색상 배지, 차트 포함 비주얼 보고서
-- **Excel**: 정량 데이터 + 수식 기반 점수표
-
-## 규칙
-- 객관적 사실 기반으로 비교 (주관적 판단은 별도 섹션)
-- 각 항목의 강점과 약점을 균형 있게 서술
-- 출처/근거가 있으면 명시
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/csv-to-xlsx.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/csv-to-xlsx.skill.md
deleted file mode 100644
index 49a401e..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/csv-to-xlsx.skill.md
+++ /dev/null
@@ -1,137 +0,0 @@
----
-name: csv-to-xlsx
-label: CSV → Excel 변환
-description: CSV 파일을 서식이 완성된 Excel(.xlsx)로 변환합니다. 헤더 고정, 필터, 조건부 서식, 자동 열 너비를 적용합니다.
-icon: \uE9F9
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - process
- - format_convert
- - data_pivot
- - template_render
-tabs: cowork
----
-
-CSV 파일을 전문적인 서식이 적용된 Excel 파일로 변환하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 Python 스크립트 경로로 변환/서식 자동화를 수행하세요.
-- Python 불가: `format_convert`로 CSV를 XLSX로 변환하고, `data_pivot`으로 핵심 요약 시트를 구성한 뒤 `file_write`로 사용 안내를 남기세요.
-
-
-## 사전 준비
-먼저 필요한 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요:
-```
-process: pip install openpyxl pandas
-```
-
-## 작업 절차
-
-1. **파일 확인**: folder_map으로 작업 폴더에서 CSV 파일을 탐색
-2. **CSV 분석**: file_read로 CSV 파일의 구조(컬럼, 행 수, 인코딩, 구분자) 파악
-3. **변환 옵션 확인**: 사용자에게 다음 옵션을 확인
- - 헤더 행 고정 여부 (기본: 활성)
- - 자동 필터 적용 여부 (기본: 활성)
- - 조건부 서식 대상 컬럼 (숫자 컬럼 자동 감지)
- - 시트 이름 (기본: 파일명)
-4. **Python 스크립트 작성**: file_write로 변환 스크립트 생성
-5. **스크립트 실행**: `process`로 Python 스크립트 실행
-6. **결과 확인**: 생성된 .xlsx 파일 경로와 요약 정보를 안내
-
-## Python 스크립트 템플릿
-```python
-import pandas as pd
-from openpyxl import load_workbook
-from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
-from openpyxl.utils import get_column_letter
-from openpyxl.formatting.rule import CellIsRule
-
-# CSV 읽기 (인코딩 자동 감지)
-for enc in ['utf-8', 'cp949', 'euc-kr', 'utf-8-sig']:
- try:
- df = pd.read_csv('input.csv', encoding=enc)
- break
- except (UnicodeDecodeError, Exception):
- continue
-
-# Excel 저장
-output_path = 'output.xlsx'
-df.to_excel(output_path, index=False, sheet_name='Sheet1')
-
-# 서식 적용
-wb = load_workbook(output_path)
-ws = wb.active
-
-# 헤더 스타일
-header_font = Font(bold=True, color='FFFFFF', size=11)
-header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
-header_align = Alignment(horizontal='center', vertical='center', wrap_text=True)
-thin_border = Border(
- left=Side(style='thin'),
- right=Side(style='thin'),
- top=Side(style='thin'),
- bottom=Side(style='thin')
-)
-
-for col_idx, cell in enumerate(ws[1], 1):
- cell.font = header_font
- cell.fill = header_fill
- cell.alignment = header_align
- cell.border = thin_border
-
-# 자동 열 너비
-for col_idx in range(1, ws.max_column + 1):
- max_length = 0
- col_letter = get_column_letter(col_idx)
- for row in ws.iter_rows(min_col=col_idx, max_col=col_idx):
- for cell in row:
- if cell.value:
- max_length = max(max_length, len(str(cell.value)))
- ws.column_dimensions[col_letter].width = min(max_length + 4, 50)
-
-# 헤더 행 고정 (Freeze Panes)
-ws.freeze_panes = 'A2'
-
-# 자동 필터
-ws.auto_filter.ref = ws.dimensions
-
-# 숫자 컬럼 조건부 서식 (음수 빨강)
-for col_idx in range(1, ws.max_column + 1):
- col_letter = get_column_letter(col_idx)
- sample_values = [ws.cell(row=r, column=col_idx).value for r in range(2, min(ws.max_row + 1, 12))]
- if any(isinstance(v, (int, float)) for v in sample_values if v is not None):
- cell_range = f'{col_letter}2:{col_letter}{ws.max_row}'
- ws.conditional_formatting.add(cell_range,
- CellIsRule(operator='lessThan', formula=['0'],
- font=Font(color='FF0000')))
-
-# 데이터 행 줄무늬 (가독성)
-light_fill = PatternFill(start_color='D9E2F3', end_color='D9E2F3', fill_type='solid')
-for row_idx in range(2, ws.max_row + 1):
- for col_idx in range(1, ws.max_column + 1):
- cell = ws.cell(row=row_idx, column=col_idx)
- cell.border = thin_border
- if row_idx % 2 == 0:
- cell.fill = light_fill
-
-wb.save(output_path)
-print(f'변환 완료: {output_path} ({ws.max_row - 1}행 × {ws.max_column}열)')
-```
-
-## 서식 옵션
-- **헤더 스타일**: 파란 배경 + 흰색 굵은 글씨 + 가운데 정렬
-- **줄무늬**: 짝수 행 연한 파랑 배경 (가독성 향상)
-- **열 너비**: 내용 기준 자동 조정 (최대 50)
-- **조건부 서식**: 숫자 컬럼 음수 빨강 표시
-- **Freeze Panes**: 헤더 행 고정
-- **Auto Filter**: 전체 컬럼 필터 활성화
-
-## 규칙
-- 원본 CSV 파일은 수정하지 않음
-- 인코딩 자동 감지 (UTF-8 → CP949 → EUC-KR 순)
-- 대용량 파일 (100,000행 이상) 경고 후 진행
-- 출력 파일명: 원본 파일명 기준 (.csv → .xlsx)
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-convert.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-convert.skill.md
deleted file mode 100644
index 43a46bb..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-convert.skill.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-name: data-convert
-label: 데이터 변환기
-description: 데이터 포맷 간 변환, 정제, 필터링, 통계 요약을 수행합니다.
-icon: \uE8AB
-allowed-tools:
- - file_read
- - file_write
- - json_tool
- - csv_create
- - data_pivot
- - excel_create
-tabs: cowork
----
-
-데이터 파일의 포맷 변환, 정제, 필터링, 통계 요약을 수행하세요.
-
-## 지원 변환
-
-| 입력 → | JSON | CSV | Excel | Markdown |
-|--------|------|-----|-------|----------|
-| JSON | — | ✅ | ✅ | ✅ |
-| CSV | ✅ | — | ✅ | ✅ |
-| Excel | ✅ | ✅ | — | ✅ |
-| TSV | ✅ | ✅ | ✅ | ✅ |
-
-## 워크플로우
-
-1. **파일 분석**: 입력 파일의 포맷, 인코딩, 구조 파악
-2. **데이터 정제** (선택):
- - 빈 행/열 제거
- - 중복 제거
- - 데이터 타입 정리 (숫자 문자열 → 숫자)
- - 결측치 처리 (제거 또는 기본값)
-3. **필터링** (선택):
- - 조건 기반 행 필터링
- - 필요 컬럼만 추출
-4. **변환**: 대상 포맷으로 변환
-5. **통계 요약**: 기본 통계 제공
-
-## 정제 옵션
-- `remove_empty`: 빈 행 제거
-- `remove_duplicates`: 중복 행 제거
-- `trim`: 공백 제거
-- `fill_na`: 결측치 채우기 (값 지정)
-
-## 출력
-- 변환된 파일 저장
-- 변환 통계 (원본 행 수, 변환 후 행 수, 제거 행 수)
-- 컬럼별 기본 통계 (수치 컬럼: 합계, 평균, 최소, 최대)
-
-## 규칙
-- 원본 파일은 수정하지 않음 (새 파일로 저장)
-- 인코딩: UTF-8 기본 (EUC-KR 옵션)
-- 대용량 파일 (10MB 이상) 경고
-- 한국어로 안내
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize-adv.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize-adv.skill.md
deleted file mode 100644
index 17b39ba..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize-adv.skill.md
+++ /dev/null
@@ -1,137 +0,0 @@
----
-name: data-visualize-adv
-label: 고급 데이터 시각화
-description: Python matplotlib/seaborn을 사용하여 히트맵, 산점도, 상관관계 등 고급 시각화를 생성합니다.
-icon: \uE9D9
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - process
- - data_pivot
- - chart_create
- - template_render
-tabs: cowork
----
-
-데이터를 고급 시각화 차트로 변환하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 matplotlib/seaborn 경로를 사용하세요.
-- Python 불가: `data_pivot`으로 통계를 계산하고 `chart_create` + `template_render` + `file_write`로 HTML/SVG 리포트를 생성하세요.
-
-
-## 사전 준비
-필요한 패키지를 설치하세요:
-```
-process: pip install matplotlib seaborn pandas numpy
-```
-
-## 작업 절차
-1. **데이터 확인**: 사용자가 제공한 CSV/JSON/Excel 데이터 파일 확인
-2. **데이터 로드**: pandas로 데이터 읽기
-3. **Python 스크립트 작성**: file_write로 시각화 스크립트 생성
-4. **스크립트 실행**: `process`로 실행
-5. **결과 확인**: 생성된 차트 이미지 경로를 사용자에게 안내
-
-## 시각화 유형별 템플릿
-
-### 공통 설정
-```python
-import matplotlib.pyplot as plt
-import seaborn as sns
-import pandas as pd
-import numpy as np
-
-# 한글 폰트 설정
-plt.rcParams['font.family'] = 'Malgun Gothic'
-plt.rcParams['axes.unicode_minus'] = False
-sns.set_theme(style='whitegrid', font='Malgun Gothic')
-```
-
-### 히트맵 (상관관계 행렬)
-```python
-df = pd.read_csv('data.csv')
-corr = df.select_dtypes(include=[np.number]).corr()
-
-fig, ax = plt.subplots(figsize=(10, 8))
-sns.heatmap(corr, annot=True, fmt='.2f', cmap='RdBu_r',
- center=0, square=True, linewidths=0.5, ax=ax)
-ax.set_title('상관관계 히트맵')
-plt.tight_layout()
-plt.savefig('heatmap.png', dpi=150)
-```
-
-### 산점도 (Scatter Plot)
-```python
-df = pd.read_csv('data.csv')
-
-fig, ax = plt.subplots(figsize=(10, 8))
-sns.scatterplot(data=df, x='col_x', y='col_y', hue='category',
- size='value', sizes=(20, 200), alpha=0.7, ax=ax)
-ax.set_title('산점도')
-plt.tight_layout()
-plt.savefig('scatter.png', dpi=150)
-```
-
-### 시계열 분석
-```python
-df = pd.read_csv('data.csv', parse_dates=['date'])
-
-fig, ax = plt.subplots(figsize=(12, 6))
-sns.lineplot(data=df, x='date', y='value', hue='category', ax=ax)
-ax.set_title('시계열 트렌드')
-plt.xticks(rotation=45)
-plt.tight_layout()
-plt.savefig('timeseries.png', dpi=150)
-```
-
-### 분포 비교 (박스플롯 + 바이올린)
-```python
-fig, axes = plt.subplots(1, 2, figsize=(14, 6))
-
-sns.boxplot(data=df, x='group', y='value', ax=axes[0])
-axes[0].set_title('박스플롯')
-
-sns.violinplot(data=df, x='group', y='value', ax=axes[1])
-axes[1].set_title('바이올린 플롯')
-
-plt.tight_layout()
-plt.savefig('distribution.png', dpi=150)
-```
-
-### 다중 차트 대시보드
-```python
-fig, axes = plt.subplots(2, 2, figsize=(14, 12))
-
-# 좌상: 히트맵
-sns.heatmap(corr, annot=True, fmt='.1f', ax=axes[0,0])
-
-# 우상: 산점도
-sns.scatterplot(data=df, x='x', y='y', ax=axes[0,1])
-
-# 좌하: 히스토그램
-sns.histplot(data=df, x='value', kde=True, ax=axes[1,0])
-
-# 우하: 박스플롯
-sns.boxplot(data=df, x='group', y='value', ax=axes[1,1])
-
-fig.suptitle('데이터 분석 대시보드', fontsize=16, fontweight='bold')
-plt.tight_layout()
-plt.savefig('dashboard.png', dpi=150)
-```
-
-### 페어플롯 (변수 간 관계 전체)
-```python
-g = sns.pairplot(df, hue='category', diag_kind='kde')
-g.fig.suptitle('변수 간 관계', y=1.02)
-plt.savefig('pairplot.png', dpi=150)
-```
-
-## 스타일 옵션
-- seaborn 테마: `whitegrid`, `darkgrid`, `white`, `dark`, `ticks`
-- 컬러 팔레트: `Set2`, `husl`, `coolwarm`, `RdBu_r`, `viridis`
-- 출력 형식: png, svg, pdf
-- 해상도: `dpi=150` (기본), `dpi=300` (인쇄용)
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize.skill.md
deleted file mode 100644
index be65f8e..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/data-visualize.skill.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-name: data-visualize
-label: 데이터 시각화
-description: CSV/Excel 데이터를 분석하여 차트가 포함된 HTML 보고서를 생성합니다.
-icon: \uE9D9
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - data_pivot
- - chart_create
- - template_render
-tabs: cowork
----
-
-작업 폴더의 데이터 파일을 분석하고 시각화 보고서를 생성하세요.
-
-다음 도구를 사용하세요:
-1. folder_map — 데이터 파일 탐색
-2. file_read — CSV/Excel 데이터 읽기
-3. file_write — HTML 시각화 보고서 생성
-
-���각화 전략:
-1. **데이터 파악**: 컬럼 타입, 결측치, 기본 통계량 확인
-2. **적절한 차트 선택**:
- - 시계열 → 라인 차트
- - 비교 → 바 차트
- - 비율 → 파이/도넛 차트
- - 분포 → 히스토그램
- - 상관관계 → 산점도
-3. **HTML 보고서 생성**: 인라인 SVG 또는 CSS 기반 차트 (외부 라이브러리 없이)
-
-보고서 구성:
-## 데이터 요약
-- 기본 통계 테이블
-
-## 시각화
-- 데이터 특성에 맞는 2~4개 차트
-- 각 차트에 대한 해석
-
-## 인사이트
-- 데이터에서 발견한 주요 패턴
-- 이상치 또는 주목할 포인트
-
-한국어로 작성하세요. 차트는 CSS/SVG 기반으로 외부 의존성 없이 생성하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/db-schema.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/db-schema.skill.md
deleted file mode 100644
index e94ab56..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/db-schema.skill.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-name: db-schema
-label: DB 스키마 분석
-description: 데이터베이스 스키마를 분석하여 ERD 다이어그램과 테이블 문서를 생성합니다.
-icon: \uE968
-allowed-tools:
- - folder_map
- - grep
- - file_read
- - file_write
- - search_codebase
-tabs: code
----
-
-작업 폴더의 코드에서 데이터베이스 스키마를 분석하고 문서화하세요.
-
-## 분석 대상
-- ORM 모델/엔티티 클래스 (Entity Framework, SQLAlchemy, Sequelize, JPA 등)
-- 마이그레이션 파일
-- SQL DDL 스크립트 (CREATE TABLE)
-- 관계 정의 (FK, Navigation Property)
-
-## 작업 절차
-1. `folder_map` — 프로젝트 구조 파악
-2. `grep` — 엔티티/모델 클래스 검색 (`DbSet`, `@Entity`, `Model.define`, `CREATE TABLE` 등)
-3. `file_read` — 모델 파일 분석 (컬럼, 타입, 관계)
-4. `grep` — 인덱스, 제약 조건 검색
-5. `file_write` — 스키마 문서 + Mermaid ERD 생성
-
-## 출력 형식
-
-### 테이블 문서
-각 테이블에 대해:
-```
-## Users 테이블
-| 컬럼 | 타입 | Null | 기본값 | 설명 |
-|------|------|------|--------|------|
-| Id | int | NO | AUTO_INCREMENT | PK |
-| Name | nvarchar(100) | NO | - | 사용자 이름 |
-| CreatedAt | datetime | NO | GETDATE() | 생성일 |
-
-- **인덱스**: IX_Users_Name (Name)
-- **관계**: Orders (1:N), Profile (1:1)
-```
-
-### Mermaid ERD
-```mermaid
-erDiagram
- Users ||--o{ Orders : "has"
- Users ||--|| Profile : "has"
- Users {
- int Id PK
- string Name
- datetime CreatedAt
- }
- Orders {
- int Id PK
- int UserId FK
- decimal Amount
- }
-```
-
-## 주의사항
-- 코드에서 실제 확인된 스키마만 문서화하세요.
-- 관계(1:1, 1:N, N:M)를 정확히 파악하세요.
-- 마이그레이션이 있으면 최종 상태를 기준으로 작성하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/dependency-audit.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/dependency-audit.skill.md
deleted file mode 100644
index d62e416..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/dependency-audit.skill.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-name: dependency-audit
-label: 의존성 분석
-description: 프로젝트 의존성 그래프를 분석하고 보안 취약점, 라이선스, 업데이트 현황을 보고합니다.
-icon: \uE964
-allowed-tools:
- - file_read
- - grep
- - folder_map
- - glob
- - html_create
- - process
-tabs: code
----
-
-프로젝트의 패키지 의존성을 분석하여 보안, 라이선스, 업데이트 보고서를 생성하세요.
-
-## 워크플로우
-
-1. **패키지 파일 탐지**: glob으로 의존성 파일 검색
- - .NET: `*.csproj`, `packages.config`, `Directory.Build.props`
- - Node: `package.json`, `package-lock.json`, `yarn.lock`
- - Python: `requirements.txt`, `Pipfile`, `pyproject.toml`
- - Java: `pom.xml`, `build.gradle`
-2. **의존성 목록 추출**: file_read로 파일 파싱
-3. **분석 수행**: 각 의존성에 대해 검사
-4. **보고서 생성**: html_create로 분석 보고서 생성
-
-## 분석 항목
-
-### 1. 직접 의존성 목록
-| 패키지 | 현재 버전 | 최신 버전 | 업데이트 필요 |
-|--------|----------|----------|-------------|
-| ... | ... | ... | ✅/⚠/❌ |
-
-### 2. 보안 취약점 (알려진 패턴)
-- 알려진 취약 버전 패턴 탐지
-- 폐기된(deprecated) 패키지 식별
-- 유지보수 중단된 패키지 경고
-
-### 3. 라이선스 검사
-| 라이선스 | 호환성 | 패키지 |
-|---------|--------|--------|
-| MIT | ✅ 허용 | lib-a, lib-b |
-| GPL-3.0 | ⚠ 주의 | lib-c |
-| 상용 | ❌ 검토 필요 | lib-d |
-
-### 4. 의존성 크기 분석
-- 패키지별 예상 크기
-- 전체 node_modules / NuGet 캐시 크기
-- 불필요하게 큰 패키지 식별
-
-### 5. 중복/충돌 검사
-- 동일 기능 중복 패키지 (예: lodash + underscore)
-- 버전 충돌 가능성
-
-## 프레임워크별 검사 명령
-
-### .NET
-```
-dotnet list package --outdated
-dotnet list package --vulnerable
-```
-
-### Node.js
-```
-npm audit
-npm outdated
-```
-
-### Python
-```
-pip list --outdated
-pip-audit
-```
-
-## 출력
-- HTML 보고서: 위험도별 색상 구분, 차트 포함
-- 요약: 총 패키지 수, 업데이트 필요 수, 보안 이슈 수, 라이선스 경고 수
-
-## 규칙
-- 외부 서버 접속 없이 로컬 파일 분석만 수행
-- process 도구 사용 시 `dotnet list` / `npm audit` 등 읽기 전용 명령만
-- 패키지를 직접 업데이트하지 않음 (보고서만)
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/diagram-generator.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/diagram-generator.skill.md
deleted file mode 100644
index 9c09021..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/diagram-generator.skill.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-name: diagram-generator
-label: 다이어그램 생성
-description: Python matplotlib/graphviz를 사용하여 플로차트, 시퀀스, ER 다이어그램 등을 생성합니다.
-icon: \uE9D9
-allowed-tools:
- - file_read
- - file_write
- - process
- - chart_create
- - template_render
-tabs: cowork
----
-
-사용자의 요구에 맞는 다이어그램을 Python으로 생성하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 Graphviz/matplotlib 경로를 사용하세요.
-- Python 불가: `template_render`와 `file_write`로 Mermaid 기반 다이어그램 문서를 생성하고, 필요 시 `chart_create`로 대체 시각화를 제공하세요.
-
-
-## 사전 준비
-필요한 패키지를 설치하세요:
-```
-process: pip install matplotlib graphviz
-```
-시스템에 Graphviz가 설치되어 있어야 합니다 (https://graphviz.org/download/).
-
-## 작업 절차
-1. **요구사항 파악**: 다이어그램 유형, 노드/관계, 스타일 확인
-2. **Python 스크립트 작성**: file_write로 .py 파일 생성
-3. **스크립트 실행**: `process`로 Python 스크립트 실행
-4. **결과 확인**: 생성된 이미지 파일 경로를 사용자에게 안내
-
-## 다이어그램 유형별 템플릿
-
-### 플로차트 (Graphviz)
-```python
-from graphviz import Digraph
-
-dot = Digraph(comment='Flowchart', format='png')
-dot.attr(rankdir='TB', fontname='Malgun Gothic')
-dot.attr('node', shape='box', style='rounded,filled', fillcolor='#E8F0FE')
-
-dot.node('start', '시작', shape='ellipse', fillcolor='#34A853', fontcolor='white')
-dot.node('process1', '데이터 수집')
-dot.node('decision', '조건 확인?', shape='diamond', fillcolor='#FBBC04')
-dot.node('process2', '처리')
-dot.node('end', '종료', shape='ellipse', fillcolor='#EA4335', fontcolor='white')
-
-dot.edge('start', 'process1')
-dot.edge('process1', 'decision')
-dot.edge('decision', 'process2', label='예')
-dot.edge('decision', 'end', label='아니오')
-dot.edge('process2', 'end')
-
-dot.render('flowchart', cleanup=True)
-```
-
-### 시퀀스 다이어그램 (matplotlib)
-```python
-import matplotlib.pyplot as plt
-import matplotlib.patches as patches
-
-fig, ax = plt.subplots(1, 1, figsize=(10, 8))
-# 액터 라이프라인, 메시지 화살표 등을 matplotlib으로 직접 그리기
-ax.set_xlim(0, 10)
-ax.set_ylim(0, 10)
-ax.invert_yaxis()
-ax.axis('off')
-plt.savefig('sequence.png', dpi=150, bbox_inches='tight')
-```
-
-### ER 다이어그램 (Graphviz)
-```python
-from graphviz import Graph
-
-er = Graph('ER', format='png', engine='neato')
-er.attr('node', shape='box', style='filled', fillcolor='#E8F0FE')
-
-er.node('user', 'User\n─────\nid (PK)\nname\nemail')
-er.node('order', 'Order\n─────\nid (PK)\nuser_id (FK)\ntotal')
-
-er.edge('user', 'order', label='1:N')
-er.render('er_diagram', cleanup=True)
-```
-
-### 조직도 (Graphviz)
-```python
-from graphviz import Digraph
-
-org = Digraph(format='png')
-org.attr(rankdir='TB')
-org.attr('node', shape='box', style='rounded,filled', fillcolor='#E3F2FD')
-
-org.node('ceo', 'CEO')
-org.node('cto', 'CTO')
-org.node('cfo', 'CFO')
-org.edges([('ceo', 'cto'), ('ceo', 'cfo')])
-org.render('org_chart', cleanup=True)
-```
-
-## 스타일 옵션
-- 폰트: `fontname='Malgun Gothic'` (한글 지원)
-- 색상: HTML 컬러 코드 지원
-- 출력 형식: png, svg, pdf
-- 레이아웃 엔진: dot(계층), neato(스프링), circo(원형), fdp(포스)
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/docx-creator.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/docx-creator.skill.md
deleted file mode 100644
index 4bd15fd..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/docx-creator.skill.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-name: docx-creator
-label: Word 문서 생성
-description: Python을 사용하여 전문적인 Word 문서(.docx)를 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다.
-icon: \uE8A5
-allowed-tools:
- - folder_map
- - document_read
- - file_read
- - file_write
- - process
- - document_assemble
- - format_convert
-tabs: cowork
----
-
-사용자의 요구에 맞는 전문적인 Word 문서를 Python으로 생성하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 python-docx 경로를 사용하세요.
-- Python 불가: `document_assemble`로 문서 본문을 구성하고 `format_convert`로 docx 산출을 시도하세요. 실패 시 Markdown/HTML 결과와 변환 가이드를 함께 제공하세요.
-
-
-## 사전 준비
-먼저 python-docx 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요:
-```
-process: pip install python-docx
-```
-
-## 양식 활용 (템플릿 모드)
-작업 폴더에 양식 파일이 있으면 **반드시** 활용하세요:
-
-1. **양식 탐색**: `folder_map`으로 작업 폴더를 스캔하여 `.docx` 파일 확인
-2. **양식 후보 판별**:
- - 파일명에 "양식", "template", "서식", "표준", "기본" 포함
- - 또는 사용자가 명시적으로 "XX 양식으로 작성해줘" 요청
- - 또는 사용자가 특정 .docx 파일명을 언급
-3. **양식 구조 파악**: `document_read`로 양식 파일의 구조(스타일, 헤더, 섹션)를 먼저 확인
-4. **양식 기반 생성**:
- ```python
- doc = Document('양식_보고서.docx') # ← 빈 Document() 대신 양식 로드
- # 양식의 스타일, 머리글/바닥글, 로고, 페이지 설정이 자동 상속됨
- # 기존 본문 내용을 지우고 새 내용만 추가
- for paragraph in doc.paragraphs:
- paragraph.clear() # 기존 내용 제거
- # 또는 필요에 따라 특정 섹션만 교체
- ```
-5. **양식이 없으면**: 아래 기본 템플릿으로 새 문서 생성
-
-## 작업 절차
-1. **요구사항 파악**: 사용자가 원하는 문서의 종류, 구조, 내용을 확인
-2. **양식 확인**: folder_map으로 작업 폴더에 양식 .docx 파일이 있는지 확인
-3. **Python 스크립트 작성**: file_write로 .py 파일 생성
-4. **스크립트 실행**: `process`로 Python 스크립트 실행
-5. **결과 확인**: 생성된 .docx 파일 경로를 사용자에게 안내
-
-## Python 스크립트 템플릿
-```python
-from docx import Document
-from docx.shared import Inches, Pt, Cm
-from docx.enum.text import WD_ALIGN_PARAGRAPH
-from docx.enum.style import WD_STYLE_TYPE
-import os
-
-# 양식 파일 자동 감지
-template_keywords = ['양식', 'template', '서식', '표준', '기본']
-template_file = None
-for f in os.listdir('.'):
- if f.endswith('.docx') and any(kw in f.lower() for kw in template_keywords):
- template_file = f
- break
-
-# 양식이 있으면 활용, 없으면 새 문서
-if template_file:
- doc = Document(template_file)
- print(f'양식 활용: {template_file}')
-else:
- doc = Document()
- # 스타일 설정 (양식이 없을 때만)
- style = doc.styles['Normal']
- font = style.font
- font.name = '맑은 고딕'
- font.size = Pt(11)
-
-# 제목
-doc.add_heading('문서 제목', level=0)
-
-# 본문
-doc.add_paragraph('내용을 여기에 작성합니다.')
-
-# 표
-table = doc.add_table(rows=2, cols=3)
-table.style = 'Light Grid Accent 1'
-
-# 저장
-doc.save('output.docx')
-```
-
-## 지원 기능
-- 제목/소제목 계층 구조
-- 표 (스타일, 병합, 서식)
-- 이미지 삽입
-- 머리글/바닥글
-- 페이지 번호
-- 목차
-- 글머리 기호/번호 목록
-- **양식 파일 기반 스타일 상속** (로고, 헤더, 페이지 설정 자동 유지)
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/email-draft.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/email-draft.skill.md
deleted file mode 100644
index a5c1be2..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/email-draft.skill.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-name: email-draft
-label: 비즈니스 이메일 작성
-description: 상황과 톤에 맞는 전문적인 비즈니스 이메일 초안을 생성합니다.
-icon: \uE715
-allowed-tools:
- - clipboard_tool
- - file_write
-tabs: all
----
-
-사용자의 요청에 맞는 전문적인 비즈니스 이메일을 작성하세요.
-
-## 워크플로우
-
-1. 사용자에게 다음 정보를 확인하세요:
- - **수신자**: 이름, 직급, 부서 (알고 있다면)
- - **목적**: 요청 / 보고 / 안내 / 감사 / 사과 / 협조 / 초대 / 회신
- - **핵심 내용**: 전달할 주요 메시지 (1~3가지)
- - **톤**: 공식(格式) / 반공식 / 친근
- - **언어**: 한국어 / 영어 / 일본어
-
-2. 이메일 초안을 작성합니다:
- - 적절한 인사말로 시작
- - 핵심 내용은 **굵게** 강조
- - 요청 사항은 명확하고 구체적으로
- - 마무리 인사와 서명 포함
-
-3. 사용자에게 초안을 보여주고 수정 요청을 받습니다.
-
-4. 최종본을 clipboard_tool로 클립보드에 복사합니다.
-
-## 이메일 구조
-
-```
-제목: [간결하고 명확한 제목]
-
-[수신자] 님께,
-
-[인사말]
-
-[본문 - 목적과 핵심 내용]
-
-[요청 사항 또는 다음 단계]
-
-[마무리 인사]
-
-[서명]
-```
-
-## 규칙
-- 한 문단은 3~4문장을 넘지 않도록 간결하게
-- 수동적 표현보다 능동적 표현 선호
-- 약어는 처음 사용 시 풀어 쓰기
-- 긴급도에 따라 제목에 [긴급], [참고] 등 태그 사용
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/env-setup.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/env-setup.skill.md
deleted file mode 100644
index a6445ed..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/env-setup.skill.md
+++ /dev/null
@@ -1,152 +0,0 @@
----
-name: env-setup
-label: 프로젝트 환경 설정
-description: .gitignore, requirements.txt, .editorconfig 등 프로젝트 환경 설정 파일을 자동 생성합니다.
-icon: \uE835
-tabs: code
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - process
----
-
-프로젝트 유형에 맞는 환경 설정 파일을 자동으로 생성하세요.
-
-## 작업 절차
-
-1. **프로젝트 분석**: folder_map으로 프로젝트 구조를 파악하고 유형 판별
- - `.py` 파일 → Python 프로젝트
- - `package.json` 또는 `.js/.ts` 파일 → Node.js 프로젝트
- - `.csproj` 또는 `.sln` 파일 → .NET 프로젝트
- - `pom.xml` 또는 `.java` 파일 → Java 프로젝트
- - 복합 프로젝트인 경우 모든 유형을 병합
-2. **기존 설정 확인**: 이미 존재하는 설정 파일이 있는지 확인
- - 있으면: 내용을 분석하여 누락된 항목만 추가 제안
- - 없으면: 새로 생성
-3. **생성할 파일 목록 제안**: 사용자에게 생성할 파일 목록을 보여주고 확인
-4. **파일 생성**: file_write로 각 설정 파일 생성
-5. **결과 안내**: 생성된 파일 목록과 주요 설정 내용 요약
-
-## 프로젝트별 템플릿
-
-### Python 프로젝트
-생성 파일: `.gitignore`, `requirements.txt`, `.editorconfig`, `setup.cfg`, `.flake8`
-
-**.gitignore (Python)**:
-```
-__pycache__/
-*.py[cod]
-*$py.class
-*.so
-.Python
-env/
-venv/
-.venv/
-*.egg-info/
-dist/
-build/
-.eggs/
-*.egg
-.mypy_cache/
-.pytest_cache/
-.coverage
-htmlcov/
-.env
-.idea/
-.vscode/
-*.log
-```
-
-**requirements.txt**: 프로젝트에서 import 문을 스캔하여 자동 생성
-
-### Node.js 프로젝트
-생성 파일: `.gitignore`, `.editorconfig`, `.nvmrc`, `.prettierrc`
-
-**.gitignore (Node)**:
-```
-node_modules/
-dist/
-build/
-.env
-.env.local
-*.log
-npm-debug.log*
-.DS_Store
-coverage/
-.nyc_output/
-.idea/
-.vscode/
-*.tgz
-```
-
-### .NET 프로젝트
-생성 파일: `.gitignore`, `.editorconfig`, `Directory.Build.props`
-
-**.gitignore (.NET)**:
-```
-bin/
-obj/
-.vs/
-*.user
-*.suo
-*.cache
-packages/
-*.nupkg
-TestResults/
-.idea/
-*.DotSettings.user
-```
-
-### Java 프로젝트
-생성 파일: `.gitignore`, `.editorconfig`
-
-**.gitignore (Java)**:
-```
-*.class
-*.jar
-*.war
-*.ear
-target/
-.gradle/
-build/
-.idea/
-*.iml
-.settings/
-.classpath
-.project
-out/
-```
-
-## 공통 .editorconfig
-```ini
-root = true
-
-[*]
-indent_style = space
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
-[*.{yml,yaml}]
-indent_size = 2
-
-[*.{json,js,ts,jsx,tsx}]
-indent_size = 2
-
-[Makefile]
-indent_style = tab
-```
-
-## 규칙
-- 기존 설정 파일이 있으면 덮어쓰지 않고, 누락 항목만 제안
-- .env 파일은 생성하지 않음 (보안 — 사용자가 직접 생성)
-- 생성 전 파일 목록을 반드시 사용자에게 확인
-- 프로젝트 루트에 생성 (하위 폴더에 생성하지 않음)
-
-한국어로 안내하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/gen-test.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/gen-test.skill.md
deleted file mode 100644
index 7440869..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/gen-test.skill.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-name: gen-test
-label: 테스트 생성기
-description: 지정 파일의 단위 테스트를 자동 생성하고 실행하여 커버리지를 분석합니다.
-icon: \uE9D5
-allowed-tools:
- - file_read
- - file_write
- - test_loop
- - grep
- - folder_map
- - dev_env_detect
- - build_run
-tabs: code
----
-
-지정된 소스 파일의 단위 테스트를 자동 생성하고 실행하세요.
-
-## 워크플로우
-
-1. **환경 감지**: dev_env_detect로 프로젝트 타입, 테스트 프레임워크 확인
-2. **대상 분석**: file_read로 테스트 대상 파일 분석
- - 공개 메서드/함수 목록 추출
- - 메서드별 입출력 타입 파악
- - 의존성 확인 (Mock 필요 여부)
-3. **테스트 생성**: 각 메서드에 대해 테스트 케이스 작성
- - 정상 케이스 (Happy Path)
- - 경계값 (Boundary)
- - 예외/에러 케이스
- - null/empty 입력
-4. **실행 및 검증**: test_loop으로 테스트 실행
-5. **결과 보고**: 성공/실패 요약, 커버리지 추정
-
-## 테스트 작성 원칙
-
-### 명명 규칙
-- C#: `[메서드명]_[시나리오]_[기대결과]`
-- Python: `test_[메서드명]_[시나리오]`
-- JavaScript: `should [기대 동작] when [조건]`
-
-### 테스트 구조 (AAA 패턴)
-```
-Arrange — 테스트 데이터 준비
-Act — 대상 메서드 실행
-Assert — 결과 검증
-```
-
-### 프레임워크별 지원
-- C#: xUnit, NUnit, MSTest
-- Python: pytest, unittest
-- JavaScript: Jest, Mocha, Vitest
-- Java: JUnit 5
-
-## 출력
-- 테스트 파일 생성 (프로젝트 컨벤션에 맞는 위치)
-- 테스트 실행 결과 요약
-- 커버리지 추정 (메서드별 테스트 유무)
-
-## 규칙
-- 기존 테스트가 있으면 스타일을 따르기
-- 외부 의존성은 Mock/Stub 사용
-- 테스트 간 독립성 보장 (상태 공유 금지)
-- 한국어 주석으로 테스트 의도 설명
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/hook-policy-demo.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/hook-policy-demo.skill.md
deleted file mode 100644
index cfc8d62..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/hook-policy-demo.skill.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-name: hook-policy-demo
-label: Hook Policy Demo
-description: hooks/hook_filters 런타임 정책 적용 예시 스킬입니다.
-icon: \uE943
-tabs: code
-allowed-tools:
- - file_read
- - file_edit
- - grep
- - build_run
-when_to_use: 코드 수정 후 특정 훅만 pre/post로 선택 적용하고 싶을 때
-argument-hint: 대상 파일 경로 또는 변경 목적
-context: fork
-agent: worker
-effort: medium
-sample: true
-hooks:
- file_edit:
- pre:
- - lint-pre
- post:
- - verify-post
- build_run:
- post:
- - verify-post
-hook_filters: lint-pre@pre@file_edit, verify-post@post@file_edit, verify-post@post@build_run
----
-
-이 스킬은 `hooks`/`hook_filters` 정책을 함께 사용하는 예시입니다.
-
-## 목표
-- 수정 전에는 `lint-pre` 훅만 실행
-- 수정 후/빌드 후에는 `verify-post` 훅만 실행
-
-## 실행 가이드
-1. `grep` + `file_read`로 대상 코드와 관련 호출부를 확인합니다.
-2. 필요한 최소 범위만 `file_edit`로 수정합니다.
-3. 수정 후 `build_run`으로 빌드/테스트를 실행해 검증합니다.
-4. 변경 내용/검증 결과/남은 리스크를 간단히 보고합니다.
-
-## 제약
-- `allowed-tools` 목록 외 도구 호출 금지
-- 불필요한 전면 리팩토링 금지
-- 동일 실패 재시도 전에 원인/대안 먼저 제시
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/image-processor.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/image-processor.skill.md
deleted file mode 100644
index d73f60b..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/image-processor.skill.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-name: image-processor
-label: 이미지 처리
-description: Python Pillow를 사용하여 이미지 리사이즈, 크롭, 워터마크, 포맷 변환을 수행합니다.
-icon: \uEB9F
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - process
- - image_analyze
- - format_convert
- - file_manage
-tabs: cowork
----
-
-사용자의 요구에 맞게 이미지를 처리하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 Pillow 경로를 사용하세요.
-- Python 불가: `image_analyze`로 이미지 상태를 점검하고, `file_manage`/`format_convert`/`file_write`로 가능한 변환 및 수동 처리 지침을 제공하세요.
-
-
-## 사전 준비
-먼저 Pillow 패키지가 설치되어 있��지 확인하고, 없으면 설���하세요:
-```
-process: pip install Pillow
-```
-
-## 작업 절��
-1. **요구사항 파악**: 처리할 이미지 파일과 원하는 작업 확인
-2. **Python 스크립트 작성**: file_write로 .py 파일 생성
-3. **스크립트 실행**: `process`로 Python 스크립�� 실행
-4. **결과 확인**: 처리된 이미지 파일 경로를 사용자에게 안내
-
-## 지원 기능
-
-### 리사이즈
-```python
-from PIL import Image
-img = Image.open('input.png')
-img_resized = img.resize((800, 600)) # 고정 크기
-# 또는 비율 유지
-img.thumbnail((800, 800))
-img.save('output.png')
-```
-
-### 크롭
-```python
-img = Image.open('input.png')
-cropped = img.crop((left, top, right, bottom))
-cropped.save('output.png')
-```
-
-### 워터마크
-```python
-from PIL import Image, ImageDraw, ImageFont
-img = Image.open('input.png')
-draw = ImageDraw.Draw(img)
-draw.text((10, 10), "Watermark", fill=(255, 255, 255, 128))
-img.save('output.png')
-```
-
-### 포맷 변환
-```python
-img = Image.open('input.png')
-img.save('output.jpg', 'JPEG', quality=85)
-img.save('output.webp', 'WEBP', quality=80)
-```
-
-### 배치 처리
-```python
-import glob
-for path in glob.glob('*.png'):
- img = Image.open(path)
- img.thumbnail((800, 800))
- img.save(f'resized_{path}')
-```
-
-## 추가 기능
-- 회전/뒤집기 (rotate, transpose)
-- 밝기/대비/선명도 조절 (ImageEnhance)
-- 필터 적용 (ImageFilter: BLUR, SHARPEN, CONTOUR)
-- 이미지 합성 (Image.paste, Image.alpha_composite)
-- EXIF 정보 읽기
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/impact.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/impact.skill.md
deleted file mode 100644
index 89e17bc..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/impact.skill.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-name: impact
-label: 변경 영향 분석
-description: 코드 변경 시 영향받는 파일, 함수, 테스트를 식별합니다.
-icon: \uE946
-allowed-tools:
- - lsp_code_intel
- - grep
- - search_codebase
- - git_tool
- - file_read
- - folder_map
-tabs: code
----
-
-코드 변경이 미치는 영향 범위를 분석하여 안전한 수정을 도와주세요.
-
-## 워크플로우
-
-1. **변경 대상 확인**: 어떤 파일/함수/클래스를 변경할 예정인지 파악
-2. **직접 참조 분석**: lsp_code_intel의 find_references로 직접 호출처 확인
-3. **간접 영향 분석**:
- - grep으로 문자열 기반 참조 검색
- - search_codebase로 의미적 유사 코드 탐색
- - 상속/인터페이스 체인 추적
-4. **테스트 영향**: 관련 테스트 파일 식별
-5. **위험도 평가**: 변경 영향 범위와 위험도 매트릭스 생성
-6. **보고서 작성**: 영향 분석 보고서 생성
-
-## 분석 항목
-
-### 직접 영향
-- 해당 함수/클래스를 직접 호출하는 코드
-- import/using 하는 파일
-- 상속받는 클래스
-
-### 간접 영향
-- 인터페이스 구현체를 통한 호출
-- 리플렉션/동적 호출
-- 설정 파일 참조
-- UI 바인딩
-
-### 테스트 영향
-- 직접 테스트하는 테스트 파일
-- 관련 통합 테스트
-- 테스트 더블(Mock) 대상 여부
-
-## 출력 형식
-
-### 영향 분석 보고서
-
-| 영향 수준 | 파일 | 관련 함수 | 위험도 | 비고 |
-|----------|------|----------|--------|------|
-| 🔴 직접 | A.cs | MethodX() | 높음 | 시그니처 변경 시 컴파일 오류 |
-| 🟡 간접 | B.cs | MethodY() | 중간 | 동적 호출, 런타임 오류 가능 |
-| 🟢 테스트 | A.Tests.cs | Test1() | 낮음 | 테스트 수정 필요 |
-
-### 변경 체크리스트
-- [ ] 직접 참조 N개 확인 및 수정
-- [ ] 테스트 M개 업데이트
-- [ ] 관련 문서 갱신
-
-## 규칙
-- 코드를 직접 수정하지 않음 (분석만 수행)
-- 가능하면 LSP 기반 정확한 참조 분석 우선
-- LSP 불가 시 grep 기반 텍스트 검색으로 대체
-- 위험도는 보수적으로 평가 (의심스러우면 높음)
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/json-schema.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/json-schema.skill.md
deleted file mode 100644
index 55b4fae..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/json-schema.skill.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-name: json-schema
-label: JSON/YAML 스키마 도구
-description: JSON 또는 YAML 데이터에서 스키마를 생성하고, 데이터의 유효성을 검증합니다.
-icon: \uE943
-tabs: code
-allowed-tools:
- - json_tool
- - file_read
- - file_write
- - clipboard_tool
----
-
-JSON/YAML 샘플 데이터에서 스키마를 추출하거나, 기존 스키마로 데이터를 검증하세요.
-
-## 작업 절차
-
-1. **요청 유형 판별**:
- - **스키마 생성**: 샘플 JSON/YAML → JSON Schema 추출
- - **스키마 검증**: 데이터 + 스키마 → 유효성 검사
- - **스키마 문서화**: 기존 스키마 → 사람이 읽을 수 있는 설명 생성
-2. **입력 데이터 확인**: file_read 또는 사용자 입력으로 데이터 로드
-3. **스키마 생성 또는 검증 수행**: json_tool로 처리
-4. **결과 출력**: 생성된 스키마 또는 검증 결과를 표시
-5. **파일 저장**: file_write로 결과를 저장하거나 clipboard_tool로 복사
-
-## 스키마 생성 규칙
-
-### 타입 추론
-| JSON 값 | JSON Schema 타입 | 추가 속성 |
-|---------|-----------------|----------|
-| `"text"` | `string` | — |
-| `123` | `integer` | — |
-| `1.5` | `number` | — |
-| `true` | `boolean` | — |
-| `null` | `null` | nullable 처리 |
-| `[]` | `array` | items 스키마 |
-| `{}` | `object` | properties 스키마 |
-
-### 추론 강화
-- **패턴 감지**: 이메일, URL, 날짜, UUID 등은 `format` 속성 추가
-- **열거형 감지**: 값의 종류가 적으면 `enum` 으로 제안
-- **필수 필드**: 모든 샘플에 존재하는 필드는 `required`로 표시
-- **배열 항목**: 배열 내 모든 항목을 분석하여 통합 스키마 생성
-
-### 출력 형식 (JSON Schema Draft 7)
-```json
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "title": "사용자 정보",
- "description": "사용자 프로필 데이터 스키마",
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "사용자 이름"
- },
- "email": {
- "type": "string",
- "format": "email",
- "description": "이메일 주소"
- },
- "age": {
- "type": "integer",
- "minimum": 0,
- "maximum": 150,
- "description": "나이"
- }
- },
- "required": ["name", "email"],
- "additionalProperties": false
-}
-```
-
-## 검증 결과 형식
-검증 결과는 다음과 같이 표시하세요:
-```
-검증 결과: ❌ 실패 (3건의 오류)
-
-| # | 경로 | 오류 | 기대값 |
-|---|------|------|--------|
-| 1 | $.email | 필수 필드 누락 | string (required) |
-| 2 | $.age | 타입 불일치 | integer (실제: string) |
-| 3 | $.tags[2] | 열거형 불일치 | "A", "B", "C" 중 하나 |
-```
-
-## 스키마 문서화 형식
-기존 스키마를 분석하여 사람이 읽기 쉬운 문서를 생성:
-```
-## 사용자 정보 스키마
-
-| 필드 | 타입 | 필수 | 설명 | 제약 조건 |
-|------|------|------|------|----------|
-| name | string | ✅ | 사용자 이름 | — |
-| email | string | ✅ | 이메일 주소 | format: email |
-| age | integer | — | 나이 | 0~150 |
-| tags | array | — | 태그 목록 | items: string |
-```
-
-## 규칙
-- JSON Schema Draft 7 형식 사용
-- 스키마 생성 시 description 필드를 한국어로 작성
-- 복수 샘플이 제공되면 모든 샘플을 분석하여 통합 스키마 생성
-- 중첩 객체는 재귀적으로 스키마 추출
-- 결과는 파일 저장과 클립보드 복사 모두 제공
-
-한국어로 안내하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/log-analyze.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/log-analyze.skill.md
deleted file mode 100644
index cba086b..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/log-analyze.skill.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-name: log-analyze
-label: 로그 분석기
-description: 로그 파일의 패턴을 분석하고 에러를 요약하며 타임라인을 시각화합니다.
-icon: \uE9D9
-allowed-tools:
- - file_read
- - grep
- - chart_create
- - html_create
- - data_pivot
- - text_summarize
-tabs: cowork
----
-
-로그 파일을 분석하여 패턴, 에러, 추세를 파악하고 보고서를 생성하세요.
-
-## 워크플로우
-
-1. **로그 파일 로드**: file_read로 로그 파일 읽기
-2. **패턴 분석**:
- - grep으로 에러/경고/예외 패턴 검색
- - 시간대별 이벤트 빈도 파악
- - 반복되는 에러 패턴 식별
-3. **통계 생성**: data_pivot으로 집계
-4. **시각화**: chart_create로 타임라인 차트 생성
-5. **보고서**: html_create로 분석 보고서 생성
-
-## 분석 항목
-
-### 에러 분석
-- ERROR, WARN, FATAL, Exception 키워드 추출
-- 에러 유형별 발생 빈도
-- 최초 발생 시점 및 최근 발생 시점
-- 에러 메시지 클러스터링 (유사 에러 그룹화)
-
-### 시간대 분석
-- 시간대별 로그 발생 빈도
-- 피크 시간대 식별
-- 에러 집중 시간대
-
-### 패턴 분석
-- 반복 패턴 (주기적 에러)
-- 연쇄 에러 (A 에러 후 B 에러 발생 패턴)
-- 비정상 패턴 (평소와 다른 로그량)
-
-## 출력 형식
-
-```
-## 로그 분석 보고서
-- 분석 기간: [시작] ~ [끝]
-- 총 로그: N줄
-
-### 에러 요약 (상위 10건)
-| 순위 | 에러 유형 | 발생 횟수 | 최근 발생 |
-|------|----------|----------|----------|
-
-### 타임라인 차트
-[시간대별 이벤트 빈도 차트]
-
-### 상세 분석
-[에러별 상세 내용 및 권장 조치]
-```
-
-## 지원 로그 형식
-- 일반 텍스트 로그 (타임스탬프 자동 감지)
-- JSON 로그 (각 줄이 JSON 객체)
-- CSV 로그 (헤더 포함)
-- syslog 형식
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/markdown-to-doc.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/markdown-to-doc.skill.md
deleted file mode 100644
index 94004f3..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/markdown-to-doc.skill.md
+++ /dev/null
@@ -1,174 +0,0 @@
----
-name: markdown-to-doc
-label: Markdown → 문서 변환
-description: Markdown 파일을 서식이 적용된 Word(.docx) 또는 PDF 문서로 변환합니다.
-icon: \uE8A5
-allowed-tools:
- - file_read
- - file_write
- - process
- - format_convert
- - document_assemble
-tabs: cowork
----
-
-Markdown 파일을 전문적인 Word 또는 PDF 문서로 변환하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 python-docx 경로를 사용하세요.
-- Python 불가: `format_convert`를 우선 사용해 Markdown을 docx/pdf로 변환하고, 변환 제한 시 `file_write`로 보정 가이드를 생성하세요.
-
-
-## 사전 준비
-먼저 필요한 패키지가 설치되어 있는지 확인하고, 없으면 설치하세요:
-```
-process: pip install python-docx markdown
-```
-
-## 작업 절차
-
-1. **Markdown 파일 확인**: file_read로 변환할 Markdown 파일의 내용과 구조를 파악
-2. **변환 옵션 확인**: 사용자에게 다음 옵션을 확인
- - 출력 형식: Word(.docx) 또는 PDF
- - 폰트: 맑은 고딕 (기본) / 사용자 지정
- - 여백, 페이지 크기 설정
- - 머리글/바닥글 포함 여부
-3. **Python 스크립트 작성**: file_write로 변환 스크립트 생성
-4. **스크립트 실행**: `process`로 Python 스크립트 실행
-5. **결과 확인**: 생성된 문서 파일 경로와 페이지 수를 안내
-
-## 스타일 매핑
-
-| Markdown | Word 스타일 | 설명 |
-|----------|------------|------|
-| `# 제목` | Heading 1 | 16pt, 굵게 |
-| `## 소제목` | Heading 2 | 14pt, 굵게 |
-| `### 항목` | Heading 3 | 12pt, 굵게 |
-| 본문 텍스트 | Normal | 11pt |
-| `**굵게**` | Bold run | 굵게 |
-| `*기울임*` | Italic run | 기울임 |
-| `` `코드` `` | 코드 스타일 | Consolas, 배경색 |
-| `> 인용` | Quote | 들여쓰기 + 왼쪽 테두리 |
-| `- 목록` | List Bullet | 글머리 기호 |
-| `1. 번호` | List Number | 번호 목록 |
-| 표 | Table Grid | 테두리 표 |
-| `---` | 페이지 구분 | 가로선 → 페이지 나누기 |
-| 코드 블록 | 코드 단락 | Consolas, 회색 배경 |
-
-## Python 스크립트 템플릿
-```python
-import re
-from docx import Document
-from docx.shared import Inches, Pt, Cm, RGBColor
-from docx.enum.text import WD_ALIGN_PARAGRAPH
-from docx.oxml.ns import qn
-import markdown
-
-# Markdown 파일 읽기
-with open('input.md', 'r', encoding='utf-8') as f:
- md_content = f.read()
-
-doc = Document()
-
-# 기본 스타일 설정
-style = doc.styles['Normal']
-font = style.font
-font.name = '맑은 고딕'
-font.size = Pt(11)
-style.element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕')
-
-# 여백 설정
-for section in doc.sections:
- section.top_margin = Cm(2.54)
- section.bottom_margin = Cm(2.54)
- section.left_margin = Cm(3.17)
- section.right_margin = Cm(3.17)
-
-# Markdown 파싱 및 변환
-lines = md_content.split('\n')
-i = 0
-while i < len(lines):
- line = lines[i]
-
- # 제목 (Heading)
- if line.startswith('#'):
- level = len(line) - len(line.lstrip('#'))
- text = line.lstrip('#').strip()
- doc.add_heading(text, level=min(level, 4))
-
- # 코드 블록
- elif line.startswith('```'):
- code_lines = []
- i += 1
- while i < len(lines) and not lines[i].startswith('```'):
- code_lines.append(lines[i])
- i += 1
- p = doc.add_paragraph()
- run = p.add_run('\n'.join(code_lines))
- run.font.name = 'Consolas'
- run.font.size = Pt(9)
-
- # 인용
- elif line.startswith('>'):
- text = line.lstrip('>').strip()
- p = doc.add_paragraph(text)
- p.paragraph_format.left_indent = Cm(1.27)
-
- # 글머리 기호
- elif line.startswith('- ') or line.startswith('* '):
- text = line[2:].strip()
- doc.add_paragraph(text, style='List Bullet')
-
- # 번호 목록
- elif re.match(r'^\d+\.\s', line):
- text = re.sub(r'^\d+\.\s', '', line).strip()
- doc.add_paragraph(text, style='List Number')
-
- # 가로선 → 페이지 나누기
- elif line.strip() in ('---', '***', '___'):
- doc.add_page_break()
-
- # 빈 줄
- elif line.strip() == '':
- pass
-
- # 일반 텍스트
- else:
- p = doc.add_paragraph()
- # 굵게, 기울임 처리
- parts = re.split(r'(\*\*.*?\*\*|\*.*?\*|`.*?`)', line)
- for part in parts:
- if part.startswith('**') and part.endswith('**'):
- run = p.add_run(part[2:-2])
- run.bold = True
- elif part.startswith('*') and part.endswith('*'):
- run = p.add_run(part[1:-1])
- run.italic = True
- elif part.startswith('`') and part.endswith('`'):
- run = p.add_run(part[1:-1])
- run.font.name = 'Consolas'
- run.font.size = Pt(10)
- else:
- p.add_run(part)
-
- i += 1
-
-# 저장
-doc.save('output.docx')
-print(f'변환 완료: output.docx ({len(doc.paragraphs)}개 단락)')
-```
-
-## 표 변환
-Markdown 표가 있으면 Word 표로 변환합니다:
-- 헤더 행: 굵게, 배경색 적용
-- 셀 정렬: Markdown의 `:---`, `:---:`, `---:` 구문 반영
-- 테두리: 전체 셀에 얇은 테두리
-
-## 규칙
-- 원본 Markdown 파일은 수정하지 않음
-- 인코딩: UTF-8 기본
-- 이미지 링크(``)는 로컬 파일이면 삽입, URL이면 경로만 표시
-- 복잡한 Markdown(수식, 다이어그램)은 지원 범위와 한계를 안내
-- 출력 파일명: 원본 파일명 기준 (.md → .docx)
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/meeting-minutes.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/meeting-minutes.skill.md
deleted file mode 100644
index 9ba9439..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/meeting-minutes.skill.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-name: meeting-minutes
-label: 회의록 정리
-description: 회의 내용을 체계적으로 정리하여 회의록을 생성합니다.
-icon: \uE771
-allowed-tools:
- - file_read
- - file_write
- - text_summarize
- - template_render
-tabs: cowork
----
-
-사용자가 제공한 회의 내용(텍스트, 메모, 파일)을 정리하여 체계적인 회의록을 작성하세요.
-
-다음 도구를 사용하세요:
-1. file_read — 회의 관련 파일 읽기 (필요 시)
-2. file_write — 회의록 파일 생성
-
-회의록 형식:
-## 회의 정보
-- 일시:
-- 참석자:
-- 장소/방법:
-- 주제:
-
-## 안건 및 논의 내용
-각 안건별로:
-- **안건**: 주제
-- **논의 내용**: 주요 발언 및 의견 정리
-- **결정 사항**: 합의된 내용
-
-## 액션 아이템
-| 번호 | 담당자 | 내용 | 기한 | 비고 |
-|------|--------|------|------|------|
-| 1 | - | - | - | - |
-
-## 다음 회의
-- 예정일:
-- 주요 안건:
-
-규칙:
-- 핵심 내용 위주로 간결하게 정리
-- 결정 사항과 액션 아이템은 명확하게 기술
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/ocr-extract.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/ocr-extract.skill.md
deleted file mode 100644
index 31e1876..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/ocr-extract.skill.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-name: ocr-extract
-label: OCR 텍스트 추출
-description: Python pytesseract를 사용하여 이미지/스캔 문서에서 텍스트를 추출합니다.
-icon: \uE8D4
-allowed-tools:
- - file_read
- - file_write
- - process
- - image_analyze
- - text_summarize
-tabs: cowork
----
-
-이미지 또는 스캔된 문서에서 텍스트를 추출하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 pytesseract 경로를 사용하세요.
-- Python 불가: `image_analyze`로 텍스트 후보를 추출하고 `text_summarize` + `file_write`로 정제본을 제공하세요.
-
-
-## 사전 준비
-1. Tesseract OCR 엔진이 시스템에 설치되어 있어야 합니다.
- - Windows: https://github.com/UB-Mannheim/tesseract/wiki 에서 설치
- - 한국어 지원: 설치 시 "Korean" 언어 데이터 선택
-2. Python 패키지 설치:
-```
-process: pip install pytesseract Pillow
-```
-
-## 작업 절차
-1. **이미지 확인**: 사용자가 제공한 이미지 파일 확인
-2. **전처리 (선택)**: 이미지 품질이 낮으면 전처리 스크립트 적용
-3. **OCR 실행**: pytesseract로 텍스트 추출
-4. **결과 저장**: 추출된 텍스트를 파일로 저장하고 사용자에게 안내
-
-## OCR 스크립트 템플릿
-
-### 기본 텍스트 추출
-```python
-import pytesseract
-from PIL import Image
-
-# Windows에서 Tesseract 경로 지정 (필요 시)
-# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
-
-img = Image.open('scan.png')
-text = pytesseract.image_to_string(img, lang='kor+eng')
-print(text)
-
-with open('extracted.txt', 'w', encoding='utf-8') as f:
- f.write(text)
-```
-
-### 이미지 전처리 (품질 개선)
-```python
-from PIL import Image, ImageFilter, ImageEnhance
-
-img = Image.open('scan.png')
-
-# 그레이스케일 변환
-img = img.convert('L')
-
-# 대비 향상
-enhancer = ImageEnhance.Contrast(img)
-img = enhancer.enhance(2.0)
-
-# 선명도 향상
-img = img.filter(ImageFilter.SHARPEN)
-
-# 이진화 (흑백)
-threshold = 128
-img = img.point(lambda x: 255 if x > threshold else 0)
-
-img.save('preprocessed.png')
-text = pytesseract.image_to_string(img, lang='kor+eng')
-```
-
-### 배치 OCR (여러 이미지)
-```python
-import glob
-import pytesseract
-from PIL import Image
-
-results = []
-for path in sorted(glob.glob('*.png')):
- img = Image.open(path)
- text = pytesseract.image_to_string(img, lang='kor+eng')
- results.append(f'--- {path} ---\n{text}\n')
-
-with open('all_extracted.txt', 'w', encoding='utf-8') as f:
- f.write('\n'.join(results))
-```
-
-### 표 영역 추출
-```python
-import pytesseract
-from PIL import Image
-
-img = Image.open('table.png')
-# TSV 형식으로 추출 (표 구조 보존)
-tsv_data = pytesseract.image_to_data(img, lang='kor+eng', output_type=pytesseract.Output.DATAFRAME)
-print(tsv_data)
-```
-
-## 지원 언어
-- `kor` — 한국어
-- `eng` — 영어
-- `kor+eng` — 한국어+영어 혼합 (권장)
-- `jpn` — 일본어
-- `chi_sim` — 중국어 간체
-
-## 팁
-- 스캔 해상도 300dpi 이상이면 인식률이 높습니다
-- 기울어진 이미지는 `img.rotate()` 로 보정 후 추출하세요
-- 손글씨는 인식률이 낮을 수 있습니다
-
-한국어로 안내하세요. 작업 폴더에 Python 스크립트와 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/paper-review.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/paper-review.skill.md
deleted file mode 100644
index 440fb26..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/paper-review.skill.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-name: paper-review
-label: 논문 분석
-description: 논문 또는 기술 문서를 체계적으로 분석하고 핵심 내용을 정리합니다.
-icon: \uE736
-allowed-tools:
- - document_read
- - file_read
- - file_write
- - text_summarize
-tabs: cowork
----
-
-사용자가 제공한 논문 또는 기술 문서를 체계적으로 분석하세요.
-
-## 파일 읽기 전략
-- **PDF 파일**: 반드시 `document_read` 도구를 사용하세요. 페이지 범위 지정이 가능합니다.
- - 먼저 전체 페이지 수를 확인한 후, 초록(1-2페이지)→본문→참고문헌 순으로 읽으세요.
- - `file_read`로 PDF를 읽으면 텍스트가 깨질 수 있으므로 사용하지 마세요.
-- **텍스트 파일** (.txt, .md, .html 등): `file_read` 도구를 사용하세요.
-
-## 사용 도구
-1. document_read — PDF 논문 파일 읽기 (페이지 범위 지정, 초록/참고문헌 추출)
-2. file_read — 텍스트 기반 문서 파일 읽기
-3. file_write — 분석 보고서 생성
-
-## 분석 항목
-## 논문 개요
-- 제목, 저자, 발표 연도/학회
-- 연구 분야 및 키워드
-
-## 연구 목적 및 배경
-- 연구 문제 정의
-- 기존 연구의 한계점
-
-## 방법론
-- 제안 방법의 핵심 아이디어
-- 실험 설계 및 데이터셋
-
-## 주요 결과
-- 핵심 실험 결과 (표/수치 인용)
-- 기존 방법 대비 개선점
-
-## 한계점 및 향후 연구
-- 저자가 인정한 한계
-- 발전 가능성
-
-## 실무 적용 가능성
-- 우리 업무에 적용할 수 있는 포인트
-- 기술 도입 시 고려사항
-
-## 작업 절차
-1. 사용자가 파일명을 언급하면 작업 폴더에서 해당 파일을 찾아 읽기
-2. PDF인 경우 `document_read`로 초록(1-2p) 먼저 읽어 전체 구조 파악
-3. 본문을 페이지 범위별로 나누어 순차 읽기
-4. 위 분석 항목에 따라 체계적으로 정리
-5. `file_write`로 분석 보고서를 마크다운 파일로 저장
-
-한국어로 작성하고, 전문 용어는 원문과 함께 표기하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pdf-processor.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pdf-processor.skill.md
deleted file mode 100644
index 631e7ee..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pdf-processor.skill.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-name: pdf-processor
-label: PDF 처리
-description: Python을 사용하여 PDF에서 텍스트/표를 추출하거나 PDF를 생성합니다.
-icon: \uE9F9
-allowed-tools:
- - folder_map
- - document_read
- - file_read
- - file_write
- - process
- - format_convert
-tabs: cowork
----
-
-PDF 파일을 읽거나 새 PDF를 생성하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 pypdf/pdfplumber/reportlab 경로를 사용하세요.
-- Python 불가: `document_read`로 텍스트/구조를 추출하고, 생성 작업은 `format_convert` + `file_write` 기반으로 대체하세요.
-
-
-## 사전 준비
-필요한 패키지를 확인하고 설치하세요:
-```
-process: pip install pypdf pdfplumber reportlab
-```
-
-## 작업 절차
-
-### PDF 텍스트 추출
-1. **파일 확인**: folder_map으로 PDF 파일 위치 확인
-2. **추출 스크립트 작성**: file_write로 Python 스크립트 생성
-3. **실행**: `process`로 실행
-4. **결과 전달**: 추출된 텍스트를 사용자에게 전달
-
-### PDF 생성
-1. **내용 파악**: 사용자가 원하는 문서 내용 확인
-2. **생성 스크립트 작성**: file_write로 Python 스크립트 생성
-3. **실행 및 확인**: `process`로 실행
-
-## 텍스트 추출 템플릿
-```python
-import pdfplumber
-import json
-
-results = []
-with pdfplumber.open('input.pdf') as pdf:
- for i, page in enumerate(pdf.pages):
- text = page.extract_text() or ''
- tables = page.extract_tables() or []
- results.append({
- 'page': i + 1,
- 'text': text,
- 'tables': tables,
- })
-
-with open('pdf_extracted.json', 'w', encoding='utf-8') as f:
- json.dump(results, f, ensure_ascii=False, indent=2)
-
-for r in results:
- print(f"--- 페이지 {r['page']} ---")
- print(r['text'][:500])
-```
-
-## 지원 기능
-- 텍스트 추출 (페이지별)
-- 표 추출 (구조 보존)
-- PDF 병합 / 분할
-- PDF 생성 (reportlab)
-- 페이지 회전
-- 메타데이터 읽기
-
-한국어로 안내하세요. 원본 PDF는 수정하지 마세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/perf-audit.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/perf-audit.skill.md
deleted file mode 100644
index 6c74697..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/perf-audit.skill.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-name: perf-audit
-label: 성능 감사
-description: 코드 복잡도, 성능 병목, 메모리 이슈를 분석하고 최적화 방안을 제시합니다.
-icon: \uE9D9
-allowed-tools:
- - file_read
- - grep
- - folder_map
- - search_codebase
- - glob
- - html_create
-tabs: code
----
-
-코드베이스의 성능 관련 이슈를 분석하고 최적화 보고서를 생성하세요.
-
-## 워크플로우
-
-1. **프로젝트 분석**: folder_map으로 구조 파악, 언어/프레임워크 식별
-2. **복잡도 분석**: 파일별 줄 수, 메서드 크기, 중첩 깊이 측정
-3. **성능 안티패턴 탐지**: grep으로 알려진 성능 이슈 패턴 검색
-4. **메모리 이슈 탐지**: 리소스 해제 누락, 대용량 할당 패턴
-5. **보고서 생성**: html_create로 성능 감사 보고서
-
-## 분석 항목
-
-### 코드 복잡도 지표
-- **파일 크기**: 500줄 이상 파일 식별
-- **메서드 크기**: 50줄 이상 메서드 식별
-- **중첩 깊이**: 4단계 이상 들여쓰기
-- **매개변수 수**: 5개 이상 파라미터 메서드
-
-### 성능 안티패턴
-
-#### 데이터베이스
-- N+1 쿼리 패턴 (루프 내 DB 호출)
-- SELECT * 사용 (불필요한 컬럼 로드)
-- 인덱스 미사용 쿼리 힌트
-
-#### 메모리
-- IDisposable 미해제 (using 미사용)
-- 대용량 문자열 결합 (StringBuilder 미사용)
-- 정적 컬렉션 무한 증가
-- 이벤트 핸들러 미해제 (메모리 누수)
-
-#### I/O
-- 동기 파일 I/O (async 미사용)
-- 동기 네트워크 호출
-- 불필요한 직렬화/역직렬화
-
-#### 알고리즘
-- O(n²) 이상 루프 (중첩 foreach/for)
-- 반복 계산 (캐싱 미적용)
-- LINQ 체인의 불필요한 ToList()
-
-#### 프론트엔드
-- 불필요한 리렌더링 패턴
-- 대용량 번들 임포트
-- 이미지 최적화 미적용
-
-### .NET 전용 패턴
-```
-탐지 대상:
-- Task.Result / .Wait() (데드락 위험)
-- lock 내부 async 호출
-- GC.Collect() 직접 호출
-- Reflection 반복 사용
-- string + string 반복 (루프 내)
-```
-
-## 출력 형식
-
-### 성능 감사 보고서
-
-**요약 대시보드**
-| 지표 | 값 | 상태 |
-|------|-----|------|
-| 총 파일 수 | ... | — |
-| 대형 파일 (500줄+) | ... | ⚠ |
-| 대형 메서드 (50줄+) | ... | ⚠ |
-| 성능 안티패턴 | ... | 🔴 |
-| 메모리 이슈 | ... | 🟡 |
-
-**상세 이슈 목록**
-| 우선순위 | 파일 | 라인 | 이슈 | 영향 | 권장 조치 |
-|---------|------|------|------|------|----------|
-| 🔴 높음 | ... | ... | N+1 쿼리 | 응답 지연 | 일괄 로드 |
-
-## 규칙
-- 코드를 수정하지 않음 (분석 + 보고서만)
-- 성능 이슈는 영향도와 수정 난이도를 함께 평가
-- 추측보다 패턴 기반 탐지 우선
-- 한국어로 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pptx-creator.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pptx-creator.skill.md
deleted file mode 100644
index a8670e8..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/pptx-creator.skill.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-name: pptx-creator
-label: PPT 프레젠테이션 생성
-description: Python을 사용하여 전문적인 PowerPoint 프레젠테이션을 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다.
-icon: \uE7BE
-allowed-tools:
- - folder_map
- - document_read
- - file_read
- - file_write
- - process
- - pptx_create
- - template_render
-tabs: cowork
----
-
-사용자의 요구에 맞는 PowerPoint 프레젠테이션을 Python으로 생성하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 python-pptx 경로를 사용하세요.
-- Python 불가: `pptx_create`로 슬라이드 초안을 생성하고 `template_render` + `file_write`로 발표자료 구조를 보강하세요.
-
-
-## 사전 준비
-필요한 패키지를 확인하고 설치하세요:
-```
-process: pip install python-pptx
-```
-
-## 양식 활용 (마스터 슬라이드 템플릿)
-작업 폴더에 PPT 양식이 있으면 **반드시** 활용하세요:
-
-1. **양식 탐색**: `folder_map`으로 작업 폴더를 스캔하여 `.pptx` 파일 확인
-2. **양식 후보 판별**:
- - 파일명에 "양식", "template", "서식", "표준", "기본" 포함
- - 또는 사용자가 명시적으로 "XX 양식으로 작성해줘" 요청
- - 또는 사용자가 특정 .pptx 파일명을 언급
-3. **양식 구조 파악**: `document_read`로 양식의 슬라이드 레이아웃 목록 확인
-4. **양식 기반 생성**:
- ```python
- prs = Presentation('양식_발표.pptx')
- # 마스터 슬라이드의 배경, 로고, 색 테마, 폰트가 자동 상속
- # 기존 슬라이드 제거 후 새 내용 추가
- while len(prs.slides) > 0:
- rId = prs.slides._sldIdLst[0].rId
- prs.part.drop_rel(rId)
- del prs.slides._sldIdLst[0]
- ```
-5. **레이아웃 확인** (양식마다 다를 수 있음):
- ```python
- for i, layout in enumerate(prs.slide_layouts):
- print(f'{i}: {layout.name}')
- ```
-6. **양식이 없으면**: 아래 기본 템플릿으로 새 프레젠테이션 생성
-
-## 작업 절차
-1. **요구사항 파악**: 발표 주제, 슬라이드 수, 스타일 확인
-2. **양식 확인**: folder_map으로 작업 폴더에 양식 .pptx 파일이 있는지 확인
-3. **스크립트 작성**: file_write로 Python 스크립트 생성
-4. **실행**: `process`로 스크립트 실행
-5. **결과 안내**: 생성된 .pptx 파일 경로를 사용자에게 전달
-
-## 스크립트 템플릿
-```python
-from pptx import Presentation
-from pptx.util import Inches, Pt, Emu
-from pptx.dml.color import RGBColor
-from pptx.enum.text import PP_ALIGN
-import os
-
-# 양식 파일 자동 감지
-template_keywords = ['양식', 'template', '서식', '표준', '기본']
-template_file = None
-for f in os.listdir('.'):
- if f.endswith('.pptx') and any(kw in f.lower() for kw in template_keywords):
- template_file = f
- break
-
-# 양식이 있으면 활용, 없으면 새 프레젠테이션
-if template_file:
- prs = Presentation(template_file)
- # 기존 슬라이드 제거 (마스터/레이아웃은 유지)
- while len(prs.slides) > 0:
- rId = prs.slides._sldIdLst[0].rId
- prs.part.drop_rel(rId)
- del prs.slides._sldIdLst[0]
- print(f'양식 활용: {template_file}')
- print(f'사용 가능한 레이아웃: {[l.name for l in prs.slide_layouts]}')
-else:
- prs = Presentation()
- prs.slide_width = Inches(13.333)
- prs.slide_height = Inches(7.5)
-
-# 제목 슬라이드
-slide = prs.slides.add_slide(prs.slide_layouts[0])
-slide.shapes.title.text = '프레젠테이션 제목'
-if len(slide.placeholders) > 1:
- slide.placeholders[1].text = '부제목'
-
-# 내용 슬라이드
-slide = prs.slides.add_slide(prs.slide_layouts[1])
-slide.shapes.title.text = '섹션 제목'
-body = slide.placeholders[1]
-body.text = '첫 번째 포인트'
-p = body.text_frame.add_paragraph()
-p.text = '두 번째 포인트'
-
-prs.save('presentation.pptx')
-print('프레젠테이션 생성 완료: presentation.pptx')
-```
-
-## 지원 기능
-- 제목/내용/빈 슬라이드 레이아웃
-- 텍스트 서식 (글꼴, 크기, 색상, 정렬)
-- 표 삽입
-- 이미지 삽입
-- 도형 (사각형, 원, 화살표)
-- 차트 (막대, 선, 원형)
-- 슬라이드 번호
-- 마스터 슬라이드 커스터마이징
-- **양식 파일 기반 마스터/레이아웃 상속** (배경, 로고, 색 테마, 폰트 자동 유지)
-
-한국어로 안내하세요. 작업 폴더에 결과 파일을 저장하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/prd-generator.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/prd-generator.skill.md
deleted file mode 100644
index e284096..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/prd-generator.skill.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-name: prd-generator
-label: 요구사항 정의서 (PRD)
-description: 제품 요구사항 정의서, 유저 스토리, 수용 기준을 체계적으로 생성합니다.
-icon: \uE8A5
-allowed-tools:
- - file_read
- - file_write
- - html_create
- - docx_create
- - document_plan
- - document_assemble
-tabs: cowork
----
-
-제품/기능의 요구사항 정의서(PRD)를 체계적으로 작성하세요.
-
-## 워크플로우
-
-1. **요구사항 수집**: 사용자에게 다음을 확인
- - 제품/기능 이름
- - 목적과 배경
- - 대상 사용자
- - 핵심 기능 목록
- - 제약 조건 (기술, 일정, 예산)
-
-2. **구조화**: document_plan으로 PRD 개요 설계
-
-3. **상세 작성**: 섹션별 상세 내용 작성
- - 유저 스토리 (As a... I want... So that...)
- - 수용 기준 (Given... When... Then...)
- - 기능 우선순위 (MoSCoW)
-
-4. **문서 생성**: document_assemble 또는 html_create로 최종 문서
-
-## PRD 구조
-
-### 1. 개요
-- 제품/기능 이름
-- 버전 / 작성일 / 작성자
-- 문서 목적
-
-### 2. 배경 및 목적
-- 비즈니스 배경
-- 해결하려는 문제
-- 기대 효과 (정량적 KPI)
-
-### 3. 대상 사용자
-- 사용자 페르소나
-- 사용 시나리오
-- 사용자 여정 맵
-
-### 4. 기능 요구사항
-
-#### 유저 스토리 형식
-```
-US-001: [기능명]
-As a [역할],
-I want [기능],
-So that [가치].
-
-수용 기준:
-- Given [사전 조건], When [행동], Then [기대 결과]
-- Given ..., When ..., Then ...
-
-우선순위: Must Have / Should Have / Could Have / Won't Have
-```
-
-### 5. 비기능 요구사항
-- 성능 (응답 시간, 처리량)
-- 보안 (인증, 권한, 암호화)
-- 접근성 (WCAG 수준)
-- 호환성 (브라우저, OS, 디바이스)
-
-### 6. 기술 제약
-- 기술 스택 제한
-- 연동 시스템
-- 데이터 마이그레이션
-
-### 7. 일정 및 마일스톤
-| 마일스톤 | 예정일 | 산출물 |
-|---------|--------|--------|
-| 설계 완료 | ... | 상세 설계서 |
-| 개발 완료 | ... | 릴리즈 빌드 |
-| QA 완료 | ... | 테스트 보고서 |
-
-### 8. 성공 지표
-- 핵심 KPI 및 측정 방법
-- 목표 수치
-
-### 9. 리스크 및 대안
-| 리스크 | 영향 | 대안 |
-|--------|------|------|
-| ... | 높음 | ... |
-
-## 규칙
-- 사용자 관점에서 작성 (기술 용어 최소화)
-- 유저 스토리는 INVEST 원칙 준수 (Independent, Negotiable, Valuable, Estimable, Small, Testable)
-- 수용 기준은 테스트 가능하도록 구체적으로
-- 한국어로 작성 (영어 용어 병기 가능)
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/refactor.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/refactor.skill.md
deleted file mode 100644
index 529cb97..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/refactor.skill.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-name: refactor
-label: 리팩토링 가이드
-description: 코드베이스를 분석하여 리팩토링 포인트를 식별하고 실행 계획을 생성합니다.
-icon: \uE90F
-allowed-tools:
- - search_codebase
- - grep
- - file_read
- - code_review
- - folder_map
- - lsp_code_intel
-tabs: code
-# hooks / hook_filters 예시 (옵션):
-# hooks:
-# file_edit:
-# pre:
-# - lint-pre
-# post: verify-post
-# hook_filters: lint-pre@pre@file_edit, verify-post@post@*
----
-
-코드베이스를 분석하여 리팩토링이 필요한 부분을 식별하고 개선 계획을 수립하세요.
-
-## 워크플로우
-
-1. **구조 파악**: folder_map + grep으로 프로젝트 전체 구조 분석
-2. **코드 스멜 탐지**:
- - 중복 코드 (grep으로 유사 패턴 검색)
- - 긴 메서드/클래스 (file_read로 크기 확인)
- - 복잡한 조건문 (중첩 if/switch)
- - 미사용 코드 (lsp_code_intel로 참조 확인)
-3. **의존성 분석**: lsp_code_intel로 참조 관계 파악
-4. **우선순위 결정**: 영향도 × 난이도 매트릭스
-5. **리팩토링 계획 생성**: 단계별 실행 계획
-
-## 분석 항목
-
-### 코드 스멜 (Code Smells)
-- **중복 코드**: 3곳 이상 반복되는 유사 코드
-- **거대 클래스**: 500줄 이상의 클래스
-- **긴 메서드**: 50줄 이상의 메서드
-- **매개변수 과다**: 5개 이상 파라미터
-- **의존성 순환**: 상호 참조 관계
-- **매직 넘버**: 하드코딩된 숫자/문자열
-- **깊은 중첩**: 4단계 이상 들여쓰기
-
-### 리팩토링 기법 (제안)
-- Extract Method / Extract Class
-- Rename (변수, 메서드, 클래스)
-- Move Method / Move Field
-- Replace Conditional with Polymorphism
-- Introduce Parameter Object
-- Remove Dead Code
-
-## 출력 형식
-
-### 리팩토링 보고서
-| 우선순위 | 파일 | 이슈 | 제안 | 영향도 | 난이도 |
-|---------|------|------|------|--------|--------|
-| 🔴 높음 | ... | ... | ... | ★★★ | ★☆☆ |
-| 🟡 중간 | ... | ... | ... | ★★☆ | ★★☆ |
-
-### 실행 계획
-1. [안전한 변경부터] ...
-2. [테스트 추가 후] ...
-3. [구조 변경] ...
-
-## 규칙
-- 코드를 직접 수정하지 않음 (분석 + 계획만)
-- 기존 테스트가 있으면 테스트 커버리지 확인
-- 팀 컨벤션/스타일 가이드 존중
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/regex-helper.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/regex-helper.skill.md
deleted file mode 100644
index 5d5442e..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/regex-helper.skill.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-name: regex-helper
-label: 정규식 도우미
-description: 정규식 패턴을 생성하고, 기존 패턴을 해석하며, 테스트 케이스로 검증합니다.
-icon: \uE8FD
-tabs: code
-allowed-tools:
- - regex_tool
- - clipboard_tool
- - file_read
----
-
-사용자의 요구에 맞는 정규식 패턴을 작성하거나, 기존 패턴을 해석하고 테스트하세요.
-
-## 작업 절차
-
-1. **요구사항 파악**: 사용자의 요청 유형을 판별
- - **패턴 생성**: "이메일 주소를 찾는 정규식 만들어줘"
- - **패턴 해석**: "이 정규식이 무슨 뜻이야? `^[\w.-]+@[\w.-]+\.\w+$`"
- - **패턴 테스트**: "이 패턴이 이 문자열에 매칭되는지 확인해줘"
-2. **패턴 작성 또는 분석**:
- - 생성: 요구사항을 분석하여 정규식 패턴 작성
- - 해석: 패턴을 구성 요소별로 분해하여 설명
-3. **테스트 수행**: regex_tool로 패턴을 테스트 케이스에 적용
- - 매칭되어야 할 문자열 (positive cases)
- - 매칭되지 않아야 할 문자열 (negative cases)
-4. **결과 설명**: 매칭 결과와 캡처 그룹을 상세히 설명
-5. **최적화 제안**: 성능 또는 가독성 개선이 가능하면 대안 제시
-
-## 패턴 생성 가이드
-
-### 자주 사용되는 패턴
-| 용도 | 패턴 | 설명 |
-|------|------|------|
-| 이메일 | `[\w.-]+@[\w.-]+\.\w{2,}` | 기본 이메일 형식 |
-| 전화번호 (한국) | `0\d{1,2}-\d{3,4}-\d{4}` | 010-1234-5678 형식 |
-| 날짜 (YYYY-MM-DD) | `\d{4}-(?:0[1-9]\|1[0-2])-(?:0[1-9]\|[12]\d\|3[01])` | ISO 날짜 형식 |
-| IP 주소 | `(?:\d{1,3}\.){3}\d{1,3}` | IPv4 기본 |
-| URL | `https?://[\w.-]+(?:/[\w./?#&=-]*)?` | HTTP/HTTPS URL |
-| 한글만 | `[가-힣]+` | 한글 문자 |
-| 사업자등록번호 | `\d{3}-\d{2}-\d{5}` | 123-45-67890 형식 |
-
-### 패턴 해석 형식
-패턴을 해석할 때는 다음 구조로 설명하세요:
-```
-패턴: ^(\d{3})-(\d{2})-(\d{5})$
-해석:
- ^ → 문자열 시작
- (\d{3}) → 캡처 그룹 1: 숫자 3자리
- - → 하이픈 (리터럴)
- (\d{2}) → 캡처 그룹 2: 숫자 2자리
- - → 하이픈 (리터럴)
- (\d{5}) → 캡처 그룹 3: 숫자 5자리
- $ → 문자열 끝
-```
-
-## 테스트 형식
-테스트 결과는 다음 형식으로 표시하세요:
-```
-패턴: \d{3}-\d{2}-\d{5}
-
-✅ 매칭 성공:
- "123-45-67890" → 전체 매칭: "123-45-67890"
- "사업자번호: 123-45-67890입니다" → 부분 매칭: "123-45-67890"
-
-❌ 매칭 실패:
- "12-345-67890" → 형식 불일치
- "abc-de-fghij" → 숫자가 아닌 문자
-```
-
-## 플래그 안내
-| 플래그 | 설명 |
-|--------|------|
-| `i` | 대소문자 무시 |
-| `m` | 멀티라인 (^$가 각 줄에 적용) |
-| `s` | 점(.)이 줄바꿈도 매칭 |
-| `g` | 전역 검색 (모든 매칭) |
-
-## 규칙
-- 패턴 생성 시 positive/negative 테스트 케이스를 반드시 포함
-- 복잡한 패턴은 주석이 포함된 확장 모드(`x`)로 설명
-- 캡처 그룹이 있으면 각 그룹의 의미를 설명
-- 성능에 민감한 경우 탐욕적/게으른 수량자 선택 이유를 설명
-- 최종 패턴은 clipboard_tool로 클립보드에 복사
-
-한국어로 안내하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/release-note.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/release-note.skill.md
deleted file mode 100644
index e4a2f59..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/release-note.skill.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-name: release-note
-label: 릴리즈 노트 생성
-description: 비개발자 대상의 사용자 친화적인 릴리즈 노트를 자동 생성합니다.
-icon: \uE70B
-tabs: code
-allowed-tools:
- - file_read
- - file_write
- - clipboard_tool
- - html_create
----
-
-사용자(비개발자) 대상의 읽기 쉬운 릴리즈 노트를 작성하세요.
-
-## 작업 절차
-
-1. **변경 정보 수집**: 사용자에게 다음 정보를 확인
- - 버전 번호 (예: v1.6.0)
- - 릴리즈 날짜
- - 주요 변경 내용 (기능 추가, 개선, 버그 수정)
- - 참고 자료: CHANGELOG, 커밋 이력, 개발 문서 등
-2. **내용 분류**: 수집된 변경 사항을 사용자 관점으로 분류
- - 기술 용어 → 사용자 언어로 변환
- - 내부 리팩토링 등 사용자에게 무관한 항목은 제외
-3. **릴리즈 노트 초안 작성**: 아래 템플릿 기반으로 작성
-4. **사용자 검토**: 초안을 보여주고 수정 요청 반영
-5. **최종 출력**: Markdown, HTML, 또는 텍스트 형식으로 저장
-
-## 릴리즈 노트 템플릿
-
-```markdown
-# [제품명] v[버전] 업데이트 안내
-
-안녕하세요. [제품명] v[버전] 업데이트 소식을 안내드립니다.
-
-## 🎉 새로운 기능
-
-- **[기능 이름]**: [사용자가 얻는 혜택 중심으로 1~2문장 설명]
-- **[기능 이름]**: [사용자가 얻는 혜택 중심으로 1~2문장 설명]
-
-## ✨ 개선 사항
-
-- **[개선 영역]**: [무엇이 어떻게 좋아졌는지 설명]
-- **[개선 영역]**: [무엇이 어떻게 좋아졌는지 설명]
-
-## 🐛 문제 해결
-
-- [사용자가 겪었던 문제]를 해결했습니다.
-- [사용자가 겪었던 문제]를 해결했습니다.
-
-## ⚠️ 알려진 이슈
-
-- [현재 알려진 제한 사항이나 이슈]
-- [해결 예정 시기 또는 임시 해결 방법]
-
----
-
-문의 사항이 있으시면 [연락처/채널]로 알려주세요.
-감사합니다.
-```
-
-## 작성 원칙
-
-### 사용자 언어로 변환
-| 개발 용어 (사용 금지) | 사용자 표현 (사용) |
-|---------------------|-------------------|
-| API 엔드포인트 추가 | 새로운 연동 기능 추가 |
-| 메모리 누수 수정 | 장시간 사용 시 느려지는 문제 해결 |
-| UI 리팩토링 | 화면 디자인 개선 |
-| 캐시 최적화 | 실행 속도 개선 |
-| null 참조 오류 수정 | 예기치 않은 오류로 종료되는 문제 해결 |
-| 인코딩 이슈 수정 | 한글이 깨져 보이는 문제 해결 |
-| 동시성 버그 수정 | 여러 작업 동시 실행 시 오류 발생 문제 해결 |
-
-### 작성 규칙
-- **혜택 중심**: "무엇을 했다"가 아닌 "사용자에게 어떤 도움이 되는지" 설명
-- **간결**: 한 항목당 1~2문장 이내
-- **구체적**: "성능 개선" → "파일 열기 속도가 약 2배 빨라졌습니다"
-- **긍정적 톤**: 문제를 "해결했습니다", 기능을 "추가했습니다"
-- **이모지 활용**: 섹션별 시각적 구분 (새 기능: 🎉, 개선: ✨, 수정: 🐛, 주의: ⚠️)
-
-## 출력 형식
-- **Markdown**: 기본 출력 형식 (.md)
-- **HTML**: html_create로 스타일이 적용된 웹 페이지 생성
-- **텍스트**: 이메일 본문용 서식 없는 텍스트
-- 사용자가 원하는 형식으로 제공
-
-## 규칙
-- 내부 기술 구현 세부사항은 노출하지 않음
-- 사용자에게 무관한 변경(코드 리팩토링, 테스트 추가 등)은 제외
-- Breaking Change가 있으면 "이전 버전과 달라진 점" 섹션 추가
-- 업데이트 방법 안내를 포함 (인스톨러 경로, 주의사항)
-- 최종 결과는 파일 저장과 클립보드 복사 모두 제공
-
-한국어로 안내하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/report-writer.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/report-writer.skill.md
deleted file mode 100644
index 664802b..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/report-writer.skill.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-name: report-writer
-label: 보고서 작성
-description: 작업 폴더의 데이터를 분석하여 체계적인 업무 보고서를 생성합��다.
-icon: \uE9F9
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - data_pivot
- - chart_create
- - template_render
- - text_summarize
-tabs: cowork
----
-
-작업 폴더의 파일과 데이터를 분석하여 업무 보고서를 작성하세요.
-
-다음 도구를 사용하세요:
-1. folder_map — 작업 폴더의 파일 구조 파악
-2. file_read — 관련 데이터 파일 읽기 (CSV, Excel, 텍스트)
-3. file_write — 보고서 파일 생성 (HTML 또는 Markdown)
-
-보고서 구성:
-## 제목
-- 작성 일시, 작성자 (요청 시)
-
-## 요약 (Executive Summary)
-- 핵심 내용을 3줄 이내로 요약
-
-## 본문
-- 데이터 기반 분석 결과
-- 표/차트를 활용한 시각적 정리
-- 주요 발견 사항
-
-## 결론 및 제안
-- 결론 요약
-- 향후 조치 사항
-
-HTML 보고서 생성 시 현재 적용된 디자인 무드를 반영하세요.
-한국어로 작성하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/security-audit.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/security-audit.skill.md
deleted file mode 100644
index 0fb9144..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/security-audit.skill.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-name: security-audit
-label: 보안 코드 감사
-description: 코드베이스의 보안 취약점을 점검하고 OWASP 기반 보안 보고서를 생성합니다.
-icon: \uE72E
-allowed-tools:
- - file_read
- - grep
- - folder_map
- - search_codebase
- - html_create
- - glob
-tabs: code
----
-
-코드베이스의 보안 취약점을 체계적으로 점검하고 보고서를 생성하세요.
-
-## 워크플로우
-
-1. **스캔 범위 확인**: folder_map으로 프로젝트 구조 파악, 언어/프레임워크 식별
-2. **취약점 패턴 탐지**: grep으로 위험 패턴 검색
-3. **의존성 분석**: 패키지 파일(package.json, *.csproj, requirements.txt) 읽기
-4. **비밀 정보 노출 검사**: API 키, 토큰, 비밀번호 하드코딩 탐지
-5. **보고서 생성**: html_create로 보안 감사 보고서 생성
-
-## OWASP Top 10 점검 항목
-
-### A01 — 접근 제어 취약
-- 인증 없는 API 엔드포인트
-- 하드코딩된 권한 체크
-- 관리자 경로 노출
-
-### A02 — 암호화 실패
-- 평문 비밀번호 저장
-- 약한 해시 알고리즘 (MD5, SHA1)
-- HTTP (비HTTPS) 통신
-
-### A03 — 인젝션
-- SQL 인젝션 (문자열 결합 쿼리)
-- XSS (innerHTML, dangerouslySetInnerHTML)
-- 명령 인젝션 (Process.Start, exec, system)
-- 경로 순회 (../ 미검증)
-
-### A04 — 불안전한 설계
-- 비즈니스 로직 검증 누락
-- 레이트 리밋 미적용
-
-### A05 — 보안 설정 오류
-- 디버그 모드 활성화 상태
-- 기본 자격증명 사용
-- 불필요한 포트/서비스 노출
-
-### A07 — 인증 실패
-- 약한 비밀번호 정책
-- 세션 만료 미설정
-- 브루트포스 방어 부재
-
-### A09 — 로깅/모니터링 부족
-- 보안 이벤트 미기록
-- 민감 정보 로그 출력
-
-## 비밀 정보 탐지 패턴
-
-```
-grep 대상 패턴:
-- password\s*=\s*["'][^"']+["']
-- api[_-]?key\s*=\s*["'][^"']+["']
-- secret\s*=\s*["'][^"']+["']
-- token\s*=\s*["'][A-Za-z0-9+/=]{20,}["']
-- -----BEGIN (RSA |EC )?PRIVATE KEY-----
-- AWS_ACCESS_KEY_ID
-- AKIA[0-9A-Z]{16}
-```
-
-## 출력 형식
-
-### 보안 감사 보고서
-| 위험도 | 카테고리 | 파일 | 라인 | 내용 | 권장 조치 |
-|--------|---------|------|------|------|----------|
-| 🔴 심각 | A03 인젝션 | ... | ... | SQL 문자열 결합 | 파라미터 바인딩 사용 |
-| 🟡 경고 | A02 암호화 | ... | ... | MD5 해시 사용 | SHA-256 이상 전환 |
-| 🟢 참고 | A09 로깅 | ... | ... | 에러 로깅 미흡 | 보안 이벤트 로깅 추가 |
-
-### 요약 통계
-- 심각/경고/참고 건수
-- OWASP 카테고리별 분포
-- 우선 조치 항목 Top 5
-
-## 규칙
-- 코드를 수정하지 않음 (분석 + 보고서만)
-- 발견된 비밀 정보는 마스킹하여 보고 (앞 4자만 표시)
-- 위험도는 보수적으로 평가
-- 한국어로 보고서 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/sql-report.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/sql-report.skill.md
deleted file mode 100644
index c385378..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/sql-report.skill.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-name: sql-report
-label: SQL 리포트
-description: DB 쿼리를 실행하고 결과를 차트화하여 HTML/Excel 보고서로 생성합니다.
-icon: \uE968
-allowed-tools:
- - sql_tool
- - chart_create
- - excel_create
- - html_create
- - data_pivot
-tabs: cowork
----
-
-데이터베이스에서 쿼리를 실행하고 결과를 시각화된 보고서로 생성하세요.
-
-## 워크플로우
-
-1. **DB 확인**: sql_tool로 테이블 목록 및 스키마 확인
-2. **쿼리 작성**: 사용자 요청에 맞는 SQL 쿼리 작성
-3. **데이터 조회**: sql_tool로 쿼리 실행
-4. **데이터 가공**: data_pivot으로 집계/피벗 (필요 시)
-5. **시각화**: chart_create로 차트 생성
-6. **보고서**: html_create 또는 excel_create로 최종 보고서 생성
-
-## 쿼리 작성 원칙
-- SELECT 쿼리만 실행 (데이터 변경 금지)
-- 결과 행 수 제한: LIMIT 1000 (대량 데이터 방지)
-- 인덱스 활용 쿼리 작성
-- 한글 컬럼명은 alias로 변환
-
-## 보고서 구성
-
-### 1. 데이터 요약
-- 조회 조건, 기간, 데이터 건수
-- 기본 통계 (합계, 평균, 최대/최소)
-
-### 2. 시각화
-- 적절한 차트 유형 자동 선택
-- 비교 → 바 차트
-- 추세 → 라인 차트
-- 비율 → 파이/도넛 차트
-
-### 3. 상세 데이터
-- Excel: 원본 데이터 + 서식 + 수식
-- HTML: 테이블 + 정렬/필터
-
-## 규칙
-- DB 경로는 사용자에게 확인
-- 민감 데이터(개인정보) 마스킹 권고
-- 쿼리 실행 전 사용자 승인
-- 한국어로 보고서 작성
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/translate.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/translate.skill.md
deleted file mode 100644
index 1ec0f4d..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/translate.skill.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-name: translate
-label: 번역 + 교정
-description: 문서나 텍스트를 번역하고 전문 용어를 보존하며 교정합니다.
-icon: \uE8C1
-allowed-tools:
- - file_read
- - file_write
- - document_read
- - clipboard_tool
-tabs: all
----
-
-사용자가 제공한 텍스트 또는 문서를 번역하고 교정하세요.
-
-## 워크플로우
-
-1. **입력 확인**: 텍스트 직접 입력 또는 파일 경로 확인
-2. **언어 감지**: 원문 언어를 자동 감지
-3. **번역 실행**:
- - 원문의 뉘앙스와 문맥을 살려 번역
- - 전문 용어는 원어를 괄호 안에 병기: "수율(Yield)"
- - 문화적 차이를 고려한 자연스러운 표현 사용
-4. **교정**: 번역 결과의 문법, 맞춤법, 어색한 표현 수정
-5. **결과 제공**: 번역문 + 주요 용어 대조표
-
-## 번역 원칙
-
-### 정확성
-- 원문의 의미를 정확하게 전달
-- 숫자, 날짜, 고유명사는 원문 그대로 유지
-- 약어는 처음 등장 시 풀어 번역
-
-### 가독성
-- 목표 언어의 자연스러운 문체 사용
-- 긴 문장은 적절히 분리
-- 수동태 → 능동태 변환 (한국어의 경우)
-
-### 전문성
-- 분야별 전문 용어 일관 사용
-- 동일 용어는 문서 전체에서 통일
-- 번역 불가능한 용어는 원어 유지
-
-## 출력 형식
-
-```
-## 번역 결과
-
-[번역된 텍스트]
-
----
-
-## 용어 대조표
-| 원문 | 번역 | 비고 |
-|------|------|------|
-| Yield | 수율 | 반도체 공정 용어 |
-```
-
-## 지원 언어
-한국어 ↔ 영어 / 일본어 / 중국어 (간/번체) / 독일어 / 프랑스어 / 스페인어
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/weekly-report.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/weekly-report.skill.md
deleted file mode 100644
index 304d257..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/weekly-report.skill.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-name: weekly-report
-label: 주간 보고서
-description: 작업 폴더의 변경 이력을 기반으로 자동 주간보고 초안을 생성합니다.
-icon: \uE787
-allowed-tools:
- - git_tool
- - folder_map
- - file_read
- - file_watch
- - html_create
- - docx_create
- - text_summarize
-tabs: cowork
----
-
-작업 폴더의 최근 활동을 분석하여 주간 보고서 초안을 자동 생성하세요.
-
-## 워크플로우
-
-1. **활동 수집**:
- - git_tool로 최근 7일간 커밋 이력 조회
- - file_watch로 최근 변경/생성된 파일 목록 확인
- - folder_map으로 프로젝트 구조 파악
-
-2. **내용 분석**:
- - 커밋 메시지 분류 (기능 추가, 버그 수정, 리팩토링 등)
- - 변경 파일 유형별 분류
- - 주요 변경사항 요약
-
-3. **보고서 작성**:
- - HTML 또는 Word 형식으로 보고서 생성
- - 차트/표로 활동 통계 시각화
-
-## 보고서 구성
-
-### 1. 주간 요약
-- 보고 기간: yyyy-MM-dd ~ yyyy-MM-dd
-- 주요 성과 (3줄 이내)
-
-### 2. 완료 항목
-| 번호 | 구분 | 내용 | 비고 |
-|------|------|------|------|
-| 1 | 기능 | ... | 커밋 참조 |
-
-### 3. 진행 중 항목
-- 현재 작업 중인 사항
-- 진척률 (가능하면)
-
-### 4. 이슈 및 리스크
-- 지연 사항
-- 블로킹 이슈
-
-### 5. 다음 주 계획
-- 예정 작업 항목
-
-### 6. 활동 통계 (차트)
-- 일별 커밋 수
-- 파일 유형별 변경 비율
-
-## 규칙
-- 사실 기반으로 작성 (추측 금지)
-- Git 이력이 없으면 파일 변경 이력만으로 작성
-- 한국어로 작성
-- 보고서 톤: 간결하고 전문적
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/xlsx-analyzer.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/xlsx-analyzer.skill.md
deleted file mode 100644
index 2ede30f..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/xlsx-analyzer.skill.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-name: xlsx-analyzer
-label: Excel 데이터 분석
-description: Python을 사용하여 Excel/CSV 데이터를 분석하고 보고서를 생성합니다. 작업 폴더의 양식 파일을 자동 활용합니다.
-icon: \uE9F9
-allowed-tools:
- - folder_map
- - document_read
- - file_read
- - file_write
- - process
- - data_pivot
- - chart_create
- - template_render
-tabs: cowork
----
-
-작업 폴더의 Excel 또는 CSV 데이터를 Python으로 분석하세요.
-## 실행 경로 선택 (Python 가능/불가)
-- 먼저 `process`로 `python --version`을 확인하세요.
-- Python 가능: 기존 pandas/openpyxl 경로를 사용하세요.
-- Python 불가: `data_pivot`으로 분석 요약을 만들고 `chart_create` + `file_write`로 결과 리포트를 생성하세요.
-
-
-## 사전 준비
-필요한 패키지를 확인하고 설치하세요:
-```
-process: pip install pandas openpyxl
-```
-
-## 양식 활용 (Excel 보고서 템플릿)
-작업 폴더에 Excel 양식 파일이 있으면 **반드시** 활용하세요:
-
-1. **양식 탐색**: `folder_map`으로 작업 폴더에서 `.xlsx` 파일 목록 확인
-2. **양식 후보 판별**:
- - 파일명에 "양식", "template", "서식", "표준", "기본", "보고서양식" 포함
- - 또는 사용자가 "XX 양식에 맞춰서 작성해줘" 요청
- - 또는 사용자가 특정 .xlsx 파일명을 양식으로 지정
-3. **양식 구조 파악**: `document_read`로 양식의 시트 구조, 셀 레이아웃 확인
-4. **양식 기반 데이터 삽입**:
- ```python
- from openpyxl import load_workbook
- wb = load_workbook('양식_보고서.xlsx')
- ws = wb.active
- # 양식의 서식(셀 병합, 테두리, 글꼴, 색상, 열 너비)이 그대로 유지됨
- # 데이터 영역에만 새 값 삽입
- ws['B3'] = '분석 결과값'
- wb.save('결과_보고서.xlsx')
- ```
-5. **양식이 없으면**: 아래 기본 방식으로 분석 결과 생성
-
-## 작업 절차
-1. **데이터 파일 탐색**: folder_map으로 작업 폴더에서 .xlsx, .csv 파일 확인
-2. **양식 확인**: 양식 .xlsx 파일이 있는지 확인 (데이터 파일과 양식 파일 구분)
-3. **데이터 읽기**: file_read 또는 document_read로 파일 구조 파악
-4. **분석 스크립트 작성**: file_write로 Python 분석 스크립트 생성
-5. **실행**: `process`로 스크립트 실행
-6. **결과 보고**: 분석 결과를 사용자에게 정리하여 전달
-
-## 분석 스크립트 템플릿
-```python
-import pandas as pd
-import json
-import os
-
-df = pd.read_excel('data.xlsx') # 또는 pd.read_csv('data.csv')
-
-report = {
- 'shape': list(df.shape),
- 'columns': list(df.columns),
- 'dtypes': {col: str(dtype) for col, dtype in df.dtypes.items()},
- 'missing': df.isnull().sum().to_dict(),
- 'describe': df.describe().to_dict(),
-}
-
-# 양식 파일로 결과 내보내기
-template_keywords = ['양식', 'template', '서식', '표준', '기본']
-template_file = None
-for f in os.listdir('.'):
- if f.endswith('.xlsx') and f != 'data.xlsx' and any(kw in f.lower() for kw in template_keywords):
- template_file = f
- break
-
-if template_file:
- from openpyxl import load_workbook
- wb = load_workbook(template_file)
- ws = wb.active
- # 양식 서식 유지하면서 데이터 삽입
- print(f'양식 활용: {template_file}')
- # TODO: 양식 구조에 맞게 데이터 삽입 로직 작성
- wb.save('결과_보고서.xlsx')
-else:
- # 양식 없으면 JSON으로 저장
- with open('analysis_result.json', 'w', encoding='utf-8') as f:
- json.dump(report, f, ensure_ascii=False, indent=2, default=str)
-
-print(json.dumps(report, ensure_ascii=False, indent=2, default=str))
-```
-
-## 지원 분석
-- 기본 통계 (평균, 중앙값, 표준편차, 분위수)
-- 결측치 분석
-- 컬럼별 고유값 분포
-- 피벗 테이블 / 그룹별 집계
-- 시트 간 비교 분석
-- 필터링 및 조건부 추출
-- 분석 결과를 새 Excel로 내보내기
-- **양식 파일 기반 보고서 생성** (셀 서식, 병합, 테두리, 차트 영역 유지)
-
-한국어로 안내하세요. 원본 파일은 수정하지 마세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/yield-analysis.skill.md b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/yield-analysis.skill.md
deleted file mode 100644
index a9b6038..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/skills/yield-analysis.skill.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-name: yield-analysis
-label: 수율 분석
-description: 제조/연구 데이터의 수율을 분석하고 개선 포인트를 도출합니다.
-icon: \uE9D2
-allowed-tools:
- - folder_map
- - file_read
- - file_write
- - data_pivot
- - chart_create
- - text_summarize
- - template_render
-tabs: cowork
----
-
-작업 폴더의 데이터를 활���하여 수율 분석을 수행하세요.
-
-다음 도구를 사용하세요:
-1. folder_map — 데이터 파일 탐색
-2. file_read — CSV/Excel 데이터 읽기
-3. file_write — 분석 보고서 생성
-
-분석 프로세스:
-## 데이터 개요
-- 분석 대상 데이터셋 설명
-- 데이터 기간, 샘플 수, 주요 변수
-
-## 수율 현황
-- 전체 수율 통계 (평균, 중앙값, 표준편차)
-- 기간별/로트별/공정별 수율 추이
-- 목표 수율 대비 달성률
-
-## 불량 분석
-- 불량 유형별 분류 및 비율
-- 파레토 분석 (상위 불량 원인)
-- 시간대/조건별 불량 패턴
-
-## 상관관계 분석
-- 주요 공정 변수와 수율의 관계
-- 이상치 탐지 및 원인 추정
-
-## 개선 제안
-- 수율 향상을 위한 구체적 조치 사항
-- 우선순위별 개선 로드맵
-- 예상 개선 효과
-
-표와 수치를 적극 활용하세요. 한국어로 작성하세요.
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/system_prompt.txt b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/system_prompt.txt
deleted file mode 100644
index 527f32d..0000000
--- a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/system_prompt.txt
+++ /dev/null
@@ -1 +0,0 @@
-[역할] 당신은 회사 업무의 도움을 주는 매우 유능한 비서입니다. 말투는 정중하게 하며, 욕을 해서는 안됩니다.
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.dll
deleted file mode 100644
index baca50e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.exe b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.exe
deleted file mode 100644
index aef5660..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/testhost.exe and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 02460bc..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 7ebff60..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index 6a43d17..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index cd5f122..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index cc1f907..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.abstractions.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.abstractions.dll
deleted file mode 100644
index d1e90bf..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.abstractions.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.assert.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.assert.dll
deleted file mode 100644
index a09cb40..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.assert.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.core.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.core.dll
deleted file mode 100644
index 1a2cb59..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.core.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.execution.dotnet.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.execution.dotnet.dll
deleted file mode 100644
index 38ee394..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.execution.dotnet.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.reporters.netcoreapp10.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.reporters.netcoreapp10.dll
deleted file mode 100644
index ca76232..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.reporters.netcoreapp10.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.utility.netcoreapp10.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.utility.netcoreapp10.dll
deleted file mode 100644
index c247a4e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.utility.netcoreapp10.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.visualstudio.testadapter.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.visualstudio.testadapter.dll
deleted file mode 100644
index 2c4b812..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/xunit.runner.visualstudio.testadapter.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 1507c61..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 3b5dbe4..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index c621c8c..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index 6412fb1..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index e6273aa..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
deleted file mode 100644
index 49a0415..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll
deleted file mode 100644
index 6852d4e..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
deleted file mode 100644
index f78103d..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
deleted file mode 100644
index c7a729f..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll b/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
deleted file mode 100644
index 2fdf78b..0000000
Binary files a/src/AxCopilot.Tests/bin/Debug/net8.0-windows/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json b/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json
deleted file mode 100644
index 0b680c6..0000000
--- a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.dgspec.json
+++ /dev/null
@@ -1,260 +0,0 @@
-{
- "format": 1,
- "restore": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj": {}
- },
- "projects": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "projectName": "AxCopilot.SDK",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {}
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
- },
- "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj",
- "projectName": "AxCopilot.Tests",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj": {
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj"
- }
- }
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "dependencies": {
- "FluentAssertions": {
- "target": "Package",
- "version": "[6.12.0, )"
- },
- "Microsoft.NET.Test.Sdk": {
- "target": "Package",
- "version": "[17.11.0, )"
- },
- "xunit": {
- "target": "Package",
- "version": "[2.9.0, )"
- },
- "xunit.runner.visualstudio": {
- "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
- "suppressParent": "All",
- "target": "Package",
- "version": "[2.8.2, )"
- }
- },
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- },
- "Microsoft.WindowsDesktop.App.WPF": {
- "privateAssets": "none"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
- },
- "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj": {
- "version": "0.7.3",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj",
- "projectName": "AxCopilot",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj": {
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.SDK\\AxCopilot.SDK.csproj"
- }
- }
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "dependencies": {
- "DocumentFormat.OpenXml": {
- "target": "Package",
- "version": "[3.2.0, )"
- },
- "Markdig": {
- "target": "Package",
- "version": "[0.37.0, )"
- },
- "Microsoft.Data.Sqlite": {
- "target": "Package",
- "version": "[8.0.0, )"
- },
- "Microsoft.Web.WebView2": {
- "target": "Package",
- "version": "[1.0.2903.40, )"
- },
- "System.Security.Cryptography.ProtectedData": {
- "target": "Package",
- "version": "[8.0.0, )"
- },
- "System.ServiceProcess.ServiceController": {
- "target": "Package",
- "version": "[8.0.1, )"
- },
- "UglyToad.PdfPig": {
- "target": "Package",
- "version": "[1.7.0-custom-5, )"
- }
- },
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- },
- "Microsoft.WindowsDesktop.App": {
- "privateAssets": "none"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- },
- "runtimes": {
- "win-x64": {
- "#import": []
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.props b/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.props
deleted file mode 100644
index f459f5a..0000000
--- a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.props
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
- True
- NuGet
- $(MSBuildThisFileDirectory)project.assets.json
- $(UserProfile)\.nuget\packages\
- C:\Users\admin\.nuget\packages\
- PackageReference
- 7.0.0
-
-
-
-
-
-
-
-
-
-
-
-
- C:\Users\admin\.nuget\packages\xunit.analyzers\1.15.0
- C:\Users\admin\.nuget\packages\microsoft.web.webview2\1.0.2903.40
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.targets b/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.targets
deleted file mode 100644
index a964a9e..0000000
--- a/src/AxCopilot.Tests/obj/AxCopilot.Tests.csproj.nuget.g.targets
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
deleted file mode 100644
index 2217181..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
+++ /dev/null
@@ -1,4 +0,0 @@
-//
-using System;
-using System.Reflection;
-[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilo.2027323E.Up2Date b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilo.2027323E.Up2Date
deleted file mode 100644
index e69de29..0000000
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs
deleted file mode 100644
index 15165cc..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfo.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-using System;
-using System.Reflection;
-
-[assembly: System.Reflection.AssemblyCompanyAttribute("AxCopilot.Tests")]
-[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
-[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5c2042847a6f145b530813b6f069fff42f86af73")]
-[assembly: System.Reflection.AssemblyProductAttribute("AxCopilot.Tests")]
-[assembly: System.Reflection.AssemblyTitleAttribute("AxCopilot.Tests")]
-[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
-[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
-[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
-
-// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
-
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache
deleted file mode 100644
index 34a81e6..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.AssemblyInfoInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-21ed519845209e3b09fc80241ddb0962833b4168c949764d9460bc2ace182dc3
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GeneratedMSBuildEditorConfig.editorconfig b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GeneratedMSBuildEditorConfig.editorconfig
deleted file mode 100644
index 8569c14..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GeneratedMSBuildEditorConfig.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-is_global = true
-build_property.TargetFramework = net8.0-windows
-build_property.TargetFrameworkIdentifier = .NETCoreApp
-build_property.TargetFrameworkVersion = v8.0
-build_property.TargetPlatformMinVersion = 7.0
-build_property.UsingMicrosoftNETSdkWeb =
-build_property.ProjectTypeGuids =
-build_property.InvariantGlobalization =
-build_property.PlatformNeutralAssembly =
-build_property.EnforceExtendedAnalyzerRules =
-build_property._SupportedPlatformList = Linux,macOS,Windows
-build_property.RootNamespace = AxCopilot.Tests
-build_property.ProjectDir = E:\AX Copilot - Codex\src\AxCopilot.Tests\
-build_property.EnableComHosting =
-build_property.EnableGeneratedComInterfaceComImportInterop =
-build_property.CsWinRTUseWindowsUIXamlProjections = false
-build_property.EffectiveAnalysisLevelStyle = 8.0
-build_property.EnableCodeStyleSeverity =
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GlobalUsings.g.cs b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GlobalUsings.g.cs
deleted file mode 100644
index e6eff56..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.GlobalUsings.g.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-//
-global using System;
-global using System.Collections.Generic;
-global using System.Linq;
-global using System.Threading;
-global using System.Threading.Tasks;
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.assets.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.assets.cache
deleted file mode 100644
index 1c05f73..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.assets.cache and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache
deleted file mode 100644
index af2a0c0..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.AssemblyReference.cache and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache
deleted file mode 100644
index a663b20..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-6f02cddd1cd82b3dd84ce96214db5bf73fd311a3c565935f27eb62e811b666de
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt
deleted file mode 100644
index 75a86e2..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.csproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,206 +0,0 @@
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\.msCoverageSourceRootsMapping_AxCopilot.Tests
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\WebView2Loader.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\WebView2Loader.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\WebView2Loader.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.deps.json
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.runtimeconfig.json
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_user.enc
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\guide_dev.enc
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\duckduckgo.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\github.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\google.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\namuwiki.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\naver.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\navermap.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\wikipedia.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\SearchEngines\youtube.png
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\system_prompt.txt
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\adr-writer.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\api-docs.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\batch-rename.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\changelog.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\code-scaffold.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\commit-review.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\compare.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\csv-to-xlsx.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-convert.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-visualize-adv.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\data-visualize.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\db-schema.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\dependency-audit.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\diagram-generator.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\docx-creator.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\email-draft.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\env-setup.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\gen-test.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\hook-policy-demo.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\image-processor.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\impact.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\json-schema.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\log-analyze.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\markdown-to-doc.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\meeting-minutes.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\ocr-extract.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\paper-review.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\pdf-processor.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\perf-audit.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\pptx-creator.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\prd-generator.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\refactor.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\regex-helper.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\release-note.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\report-writer.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\security-audit.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\sql-report.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\translate.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\weekly-report.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\xlsx-analyzer.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\skills\yield-analysis.skill.md
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Assets\icon.ico
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.exe
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\testhost.exe
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.visualstudio.testadapter.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.reporters.netcoreapp10.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.runner.utility.netcoreapp10.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.deps.json
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.runtimeconfig.json
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.Tests.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\DocumentFormat.OpenXml.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\DocumentFormat.OpenXml.Framework.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\FluentAssertions.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Markdig.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.CodeCoverage.Shim.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Data.Sqlite.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CoreUtilities.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.PlatformAbstractions.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CommunicationUtilities.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.CrossPlatEngine.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.TestPlatform.Utilities.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.VisualStudio.TestPlatform.Common.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Newtonsoft.Json.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.batteries_v2.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.core.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\SQLitePCLRaw.provider.e_sqlite3.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.Diagnostics.EventLog.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.IO.Packaging.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\System.ServiceProcess.ServiceController.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Core.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Fonts.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Tokenization.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\UglyToad.PdfPig.Tokens.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.abstractions.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.assert.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.core.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\xunit.execution.dotnet.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CoreUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\cs\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\de\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\es\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\fr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\it\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ja\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ko\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pl\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\pt-BR\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\ru\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\tr\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hans\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CommunicationUtilities.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.TestPlatform.CrossPlatEngine.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\zh-Hant\Microsoft.VisualStudio.TestPlatform.Common.resources.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\browser-wasm\nativeassets\net8.0\e_sqlite3.a
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-arm\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-arm64\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-armel\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-mips64\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-arm\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-arm64\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-musl-x64\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-ppc64le\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-s390x\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-x64\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\linux-x86\native\libe_sqlite3.so
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\maccatalyst-arm64\native\libe_sqlite3.dylib
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\maccatalyst-x64\native\libe_sqlite3.dylib
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\osx-arm64\native\libe_sqlite3.dylib
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\osx-x64\native\libe_sqlite3.dylib
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm\native\e_sqlite3.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-arm64\native\e_sqlite3.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x64\native\e_sqlite3.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win-x86\native\e_sqlite3.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win\lib\net8.0\System.Diagnostics.EventLog.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\runtimes\win\lib\net8.0\System.ServiceProcess.ServiceController.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.SDK.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Core.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.WinForms.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Wpf.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\AxCopilot.SDK.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Core.xml
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.WinForms.xml
-E:\AX Copilot - Codex\src\AxCopilot.Tests\bin\Debug\net8.0-windows\Microsoft.Web.WebView2.Wpf.xml
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.csproj.AssemblyReference.cache
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.GeneratedMSBuildEditorConfig.editorconfig
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.AssemblyInfoInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.AssemblyInfo.cs
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.csproj.CoreCompileInputs.cache
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilo.2027323E.Up2Date
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\refint\AxCopilot.Tests.dll
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.pdb
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\AxCopilot.Tests.genruntimeconfig.cache
-E:\AX Copilot - Codex\src\AxCopilot.Tests\obj\Debug\net8.0-windows\ref\AxCopilot.Tests.dll
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll
deleted file mode 100644
index dfcb18d..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.genruntimeconfig.cache b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.genruntimeconfig.cache
deleted file mode 100644
index 5a904df..0000000
--- a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.genruntimeconfig.cache
+++ /dev/null
@@ -1 +0,0 @@
-530a1b5ddb45f7acfb3f0357302b8061d50f25a1969b7141383c7eaa400d008f
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb
deleted file mode 100644
index 56175a0..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/AxCopilot.Tests.pdb and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll
deleted file mode 100644
index d95b161..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/ref/AxCopilot.Tests.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll b/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll
deleted file mode 100644
index d95b161..0000000
Binary files a/src/AxCopilot.Tests/obj/Debug/net8.0-windows/refint/AxCopilot.Tests.dll and /dev/null differ
diff --git a/src/AxCopilot.Tests/obj/project.assets.json b/src/AxCopilot.Tests/obj/project.assets.json
deleted file mode 100644
index a75e617..0000000
--- a/src/AxCopilot.Tests/obj/project.assets.json
+++ /dev/null
@@ -1,2085 +0,0 @@
-{
- "version": 3,
- "targets": {
- "net8.0-windows7.0": {
- "DocumentFormat.OpenXml/3.2.0": {
- "type": "package",
- "dependencies": {
- "DocumentFormat.OpenXml.Framework": "3.2.0"
- },
- "compile": {
- "lib/net8.0/DocumentFormat.OpenXml.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.dll": {
- "related": ".xml"
- }
- }
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "type": "package",
- "dependencies": {
- "System.IO.Packaging": "8.0.1"
- },
- "compile": {
- "lib/net8.0/DocumentFormat.OpenXml.Framework.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/DocumentFormat.OpenXml.Framework.dll": {
- "related": ".xml"
- }
- }
- },
- "FluentAssertions/6.12.0": {
- "type": "package",
- "dependencies": {
- "System.Configuration.ConfigurationManager": "4.4.0"
- },
- "compile": {
- "lib/net6.0/FluentAssertions.dll": {
- "related": ".pdb;.xml"
- }
- },
- "runtime": {
- "lib/net6.0/FluentAssertions.dll": {
- "related": ".pdb;.xml"
- }
- }
- },
- "Markdig/0.37.0": {
- "type": "package",
- "compile": {
- "lib/net8.0/Markdig.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Markdig.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.CodeCoverage/17.11.0": {
- "type": "package",
- "compile": {
- "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {}
- },
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {}
- },
- "build": {
- "build/netstandard2.0/Microsoft.CodeCoverage.props": {},
- "build/netstandard2.0/Microsoft.CodeCoverage.targets": {}
- }
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "8.0.0",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6"
- },
- "compile": {
- "lib/netstandard2.0/_._": {}
- },
- "runtime": {
- "lib/netstandard2.0/_._": {}
- }
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "type": "package",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "compile": {
- "lib/net8.0/Microsoft.Data.Sqlite.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Microsoft.Data.Sqlite.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.NET.Test.Sdk/17.11.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.CodeCoverage": "17.11.0",
- "Microsoft.TestPlatform.TestHost": "17.11.0"
- },
- "compile": {
- "lib/netcoreapp3.1/_._": {}
- },
- "runtime": {
- "lib/netcoreapp3.1/_._": {}
- },
- "build": {
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props": {},
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets": {}
- },
- "buildMultiTargeting": {
- "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {}
- }
- },
- "Microsoft.TestPlatform.ObjectModel/17.11.0": {
- "type": "package",
- "dependencies": {
- "System.Reflection.Metadata": "1.6.0"
- },
- "compile": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}
- },
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}
- },
- "resource": {
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": {
- "locale": "zh-Hant"
- }
- }
- },
- "Microsoft.TestPlatform.TestHost/17.11.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.TestPlatform.ObjectModel": "17.11.0",
- "Newtonsoft.Json": "13.0.1"
- },
- "compile": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {},
- "lib/netcoreapp3.1/testhost.dll": {
- "related": ".deps.json"
- }
- },
- "runtime": {
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {},
- "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {},
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {},
- "lib/netcoreapp3.1/testhost.dll": {
- "related": ".deps.json"
- }
- },
- "resource": {
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "cs"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "de"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "es"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "fr"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "it"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ja"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ko"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "pl"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "pt-BR"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "ru"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "tr"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "zh-Hans"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": {
- "locale": "zh-Hant"
- },
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": {
- "locale": "zh-Hant"
- }
- },
- "build": {
- "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props": {}
- }
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "type": "package",
- "build": {
- "buildTransitive/Microsoft.Web.WebView2.targets": {}
- },
- "runtimeTargets": {
- "runtimes/win-arm64/native/WebView2Loader.dll": {
- "assetType": "native",
- "rid": "win-arm64"
- },
- "runtimes/win-x64/native/WebView2Loader.dll": {
- "assetType": "native",
- "rid": "win-x64"
- },
- "runtimes/win-x86/native/WebView2Loader.dll": {
- "assetType": "native",
- "rid": "win-x86"
- }
- }
- },
- "Newtonsoft.Json/13.0.1": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/Newtonsoft.Json.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard2.0/Newtonsoft.Json.dll": {
- "related": ".xml"
- }
- }
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "type": "package",
- "dependencies": {
- "SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
- "SQLitePCLRaw.provider.e_sqlite3": "2.1.6"
- },
- "compile": {
- "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {}
- },
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {}
- }
- },
- "SQLitePCLRaw.core/2.1.6": {
- "type": "package",
- "dependencies": {
- "System.Memory": "4.5.3"
- },
- "compile": {
- "lib/netstandard2.0/SQLitePCLRaw.core.dll": {}
- },
- "runtime": {
- "lib/netstandard2.0/SQLitePCLRaw.core.dll": {}
- }
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/_._": {}
- },
- "runtime": {
- "lib/netstandard2.0/_._": {}
- },
- "build": {
- "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets": {}
- },
- "runtimeTargets": {
- "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": {
- "assetType": "native",
- "rid": "browser-wasm"
- },
- "runtimes/linux-arm/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-arm"
- },
- "runtimes/linux-arm64/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-arm64"
- },
- "runtimes/linux-armel/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-armel"
- },
- "runtimes/linux-mips64/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-mips64"
- },
- "runtimes/linux-musl-arm/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-musl-arm"
- },
- "runtimes/linux-musl-arm64/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-musl-arm64"
- },
- "runtimes/linux-musl-x64/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-musl-x64"
- },
- "runtimes/linux-ppc64le/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-ppc64le"
- },
- "runtimes/linux-s390x/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-s390x"
- },
- "runtimes/linux-x64/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-x64"
- },
- "runtimes/linux-x86/native/libe_sqlite3.so": {
- "assetType": "native",
- "rid": "linux-x86"
- },
- "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": {
- "assetType": "native",
- "rid": "maccatalyst-arm64"
- },
- "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": {
- "assetType": "native",
- "rid": "maccatalyst-x64"
- },
- "runtimes/osx-arm64/native/libe_sqlite3.dylib": {
- "assetType": "native",
- "rid": "osx-arm64"
- },
- "runtimes/osx-x64/native/libe_sqlite3.dylib": {
- "assetType": "native",
- "rid": "osx-x64"
- },
- "runtimes/win-arm/native/e_sqlite3.dll": {
- "assetType": "native",
- "rid": "win-arm"
- },
- "runtimes/win-arm64/native/e_sqlite3.dll": {
- "assetType": "native",
- "rid": "win-arm64"
- },
- "runtimes/win-x64/native/e_sqlite3.dll": {
- "assetType": "native",
- "rid": "win-x64"
- },
- "runtimes/win-x86/native/e_sqlite3.dll": {
- "assetType": "native",
- "rid": "win-x86"
- }
- }
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "type": "package",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.6"
- },
- "compile": {
- "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {}
- },
- "runtime": {
- "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": {}
- }
- },
- "System.Configuration.ConfigurationManager/4.4.0": {
- "type": "package",
- "dependencies": {
- "System.Security.Cryptography.ProtectedData": "4.4.0"
- },
- "compile": {
- "ref/netstandard2.0/System.Configuration.ConfigurationManager.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll": {}
- }
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "type": "package",
- "compile": {
- "lib/net8.0/System.Diagnostics.EventLog.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/System.Diagnostics.EventLog.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/net6.0/_._": {}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
- "assetType": "runtime",
- "rid": "win"
- },
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
- "System.IO.Packaging/8.0.1": {
- "type": "package",
- "compile": {
- "lib/net8.0/System.IO.Packaging.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/System.IO.Packaging.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/net6.0/_._": {}
- }
- },
- "System.Memory/4.5.3": {
- "type": "package",
- "compile": {
- "ref/netcoreapp2.1/_._": {}
- },
- "runtime": {
- "lib/netcoreapp2.1/_._": {}
- }
- },
- "System.Reflection.Metadata/1.6.0": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/System.Reflection.Metadata.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard2.0/System.Reflection.Metadata.dll": {
- "related": ".xml"
- }
- }
- },
- "System.Security.Cryptography.ProtectedData/8.0.0": {
- "type": "package",
- "compile": {
- "lib/net8.0/System.Security.Cryptography.ProtectedData.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/System.Security.Cryptography.ProtectedData.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/net6.0/_._": {}
- }
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "type": "package",
- "dependencies": {
- "System.Diagnostics.EventLog": "8.0.1"
- },
- "compile": {
- "lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/net6.0/_._": {}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "type": "package",
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Fonts": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "compile": {
- "lib/net6.0/UglyToad.PdfPig.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.dll": {
- "related": ".xml"
- }
- }
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "type": "package",
- "compile": {
- "lib/net6.0/UglyToad.PdfPig.Core.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Core.dll": {
- "related": ".xml"
- }
- }
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "type": "package",
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokenization": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "compile": {
- "lib/net6.0/UglyToad.PdfPig.Fonts.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Fonts.dll": {
- "related": ".xml"
- }
- },
- "contentFiles": {
- "contentFiles/any/any/_._": {
- "buildAction": "None",
- "codeLanguage": "any",
- "copyToOutput": false
- }
- }
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "type": "package",
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5",
- "UglyToad.PdfPig.Tokens": "1.7.0-custom-5"
- },
- "compile": {
- "lib/net6.0/UglyToad.PdfPig.Tokenization.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokenization.dll": {
- "related": ".xml"
- }
- }
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "type": "package",
- "dependencies": {
- "UglyToad.PdfPig.Core": "1.7.0-custom-5"
- },
- "compile": {
- "lib/net6.0/UglyToad.PdfPig.Tokens.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/UglyToad.PdfPig.Tokens.dll": {
- "related": ".xml"
- }
- }
- },
- "xunit/2.9.0": {
- "type": "package",
- "dependencies": {
- "xunit.analyzers": "1.15.0",
- "xunit.assert": "2.9.0",
- "xunit.core": "[2.9.0]"
- }
- },
- "xunit.abstractions/2.0.3": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/xunit.abstractions.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard2.0/xunit.abstractions.dll": {
- "related": ".xml"
- }
- }
- },
- "xunit.analyzers/1.15.0": {
- "type": "package"
- },
- "xunit.assert/2.9.0": {
- "type": "package",
- "compile": {
- "lib/net6.0/xunit.assert.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/xunit.assert.dll": {
- "related": ".xml"
- }
- }
- },
- "xunit.core/2.9.0": {
- "type": "package",
- "dependencies": {
- "xunit.extensibility.core": "[2.9.0]",
- "xunit.extensibility.execution": "[2.9.0]"
- },
- "build": {
- "build/xunit.core.props": {},
- "build/xunit.core.targets": {}
- },
- "buildMultiTargeting": {
- "buildMultiTargeting/xunit.core.props": {},
- "buildMultiTargeting/xunit.core.targets": {}
- }
- },
- "xunit.extensibility.core/2.9.0": {
- "type": "package",
- "dependencies": {
- "xunit.abstractions": "2.0.3"
- },
- "compile": {
- "lib/netstandard1.1/xunit.core.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard1.1/xunit.core.dll": {
- "related": ".xml"
- }
- }
- },
- "xunit.extensibility.execution/2.9.0": {
- "type": "package",
- "dependencies": {
- "xunit.extensibility.core": "[2.9.0]"
- },
- "compile": {
- "lib/netstandard1.1/xunit.execution.dotnet.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard1.1/xunit.execution.dotnet.dll": {
- "related": ".xml"
- }
- }
- },
- "xunit.runner.visualstudio/2.8.2": {
- "type": "package",
- "compile": {
- "lib/net6.0/_._": {}
- },
- "runtime": {
- "lib/net6.0/_._": {}
- },
- "build": {
- "build/net6.0/xunit.runner.visualstudio.props": {}
- }
- },
- "AxCopilot/0.7.3": {
- "type": "project",
- "framework": ".NETCoreApp,Version=v8.0",
- "dependencies": {
- "AxCopilot.SDK": "1.0.0",
- "DocumentFormat.OpenXml": "3.2.0",
- "Markdig": "0.37.0",
- "Microsoft.Data.Sqlite": "8.0.0",
- "Microsoft.Web.WebView2": "1.0.2903.40",
- "System.Security.Cryptography.ProtectedData": "8.0.0",
- "System.ServiceProcess.ServiceController": "8.0.1",
- "UglyToad.PdfPig": "1.7.0-custom-5"
- },
- "compile": {
- "bin/placeholder/AxCopilot.dll": {}
- },
- "runtime": {
- "bin/placeholder/AxCopilot.dll": {}
- },
- "frameworkReferences": [
- "Microsoft.WindowsDesktop.App"
- ]
- },
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "framework": ".NETCoreApp,Version=v8.0",
- "compile": {
- "bin/placeholder/AxCopilot.SDK.dll": {}
- },
- "runtime": {
- "bin/placeholder/AxCopilot.SDK.dll": {}
- }
- }
- }
- },
- "libraries": {
- "DocumentFormat.OpenXml/3.2.0": {
- "sha512": "eDBT9G0sAWUvjgE8l8E5bGCFXgxCZXIecQ8dqUnj2PyxyMR5eBmLahqRRw3Q7uSKM3cKbysaL2mEY0JJbEEOEA==",
- "type": "package",
- "path": "documentformat.openxml/3.2.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "documentformat.openxml.3.2.0.nupkg.sha512",
- "documentformat.openxml.nuspec",
- "icon.png",
- "lib/net35/DocumentFormat.OpenXml.dll",
- "lib/net35/DocumentFormat.OpenXml.xml",
- "lib/net40/DocumentFormat.OpenXml.dll",
- "lib/net40/DocumentFormat.OpenXml.xml",
- "lib/net46/DocumentFormat.OpenXml.dll",
- "lib/net46/DocumentFormat.OpenXml.xml",
- "lib/net8.0/DocumentFormat.OpenXml.dll",
- "lib/net8.0/DocumentFormat.OpenXml.xml",
- "lib/netstandard2.0/DocumentFormat.OpenXml.dll",
- "lib/netstandard2.0/DocumentFormat.OpenXml.xml"
- ]
- },
- "DocumentFormat.OpenXml.Framework/3.2.0": {
- "sha512": "e1neOKqRnSHUom4JQEorAoZ67aiJOp6+Xzsu0fc6IYfFcgQn6roo+w6i2w//N2u/5ilEfvLr35bNO9zaIN7r7g==",
- "type": "package",
- "path": "documentformat.openxml.framework/3.2.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "documentformat.openxml.framework.3.2.0.nupkg.sha512",
- "documentformat.openxml.framework.nuspec",
- "icon.png",
- "lib/net35/DocumentFormat.OpenXml.Framework.dll",
- "lib/net35/DocumentFormat.OpenXml.Framework.xml",
- "lib/net40/DocumentFormat.OpenXml.Framework.dll",
- "lib/net40/DocumentFormat.OpenXml.Framework.xml",
- "lib/net46/DocumentFormat.OpenXml.Framework.dll",
- "lib/net46/DocumentFormat.OpenXml.Framework.xml",
- "lib/net6.0/DocumentFormat.OpenXml.Framework.dll",
- "lib/net6.0/DocumentFormat.OpenXml.Framework.xml",
- "lib/net8.0/DocumentFormat.OpenXml.Framework.dll",
- "lib/net8.0/DocumentFormat.OpenXml.Framework.xml",
- "lib/netstandard2.0/DocumentFormat.OpenXml.Framework.dll",
- "lib/netstandard2.0/DocumentFormat.OpenXml.Framework.xml"
- ]
- },
- "FluentAssertions/6.12.0": {
- "sha512": "ZXhHT2YwP9lajrwSKbLlFqsmCCvFJMoRSK9t7sImfnCyd0OB3MhgxdoMcVqxbq1iyxD6mD2fiackWmBb7ayiXQ==",
- "type": "package",
- "path": "fluentassertions/6.12.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "FluentAssertions.png",
- "fluentassertions.6.12.0.nupkg.sha512",
- "fluentassertions.nuspec",
- "lib/net47/FluentAssertions.dll",
- "lib/net47/FluentAssertions.pdb",
- "lib/net47/FluentAssertions.xml",
- "lib/net6.0/FluentAssertions.dll",
- "lib/net6.0/FluentAssertions.pdb",
- "lib/net6.0/FluentAssertions.xml",
- "lib/netcoreapp2.1/FluentAssertions.dll",
- "lib/netcoreapp2.1/FluentAssertions.pdb",
- "lib/netcoreapp2.1/FluentAssertions.xml",
- "lib/netcoreapp3.0/FluentAssertions.dll",
- "lib/netcoreapp3.0/FluentAssertions.pdb",
- "lib/netcoreapp3.0/FluentAssertions.xml",
- "lib/netstandard2.0/FluentAssertions.dll",
- "lib/netstandard2.0/FluentAssertions.pdb",
- "lib/netstandard2.0/FluentAssertions.xml",
- "lib/netstandard2.1/FluentAssertions.dll",
- "lib/netstandard2.1/FluentAssertions.pdb",
- "lib/netstandard2.1/FluentAssertions.xml"
- ]
- },
- "Markdig/0.37.0": {
- "sha512": "biiu4MTPFjW55qw6v5Aphtj0MjDLJ14x8ndZwkJUHIeqvaSGKeqhLY7S7Vu/S3k7/c9KwhhnaCDP9hdFNUhcNA==",
- "type": "package",
- "path": "markdig/0.37.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net462/Markdig.dll",
- "lib/net462/Markdig.xml",
- "lib/net6.0/Markdig.dll",
- "lib/net6.0/Markdig.xml",
- "lib/net8.0/Markdig.dll",
- "lib/net8.0/Markdig.xml",
- "lib/netstandard2.0/Markdig.dll",
- "lib/netstandard2.0/Markdig.xml",
- "lib/netstandard2.1/Markdig.dll",
- "lib/netstandard2.1/Markdig.xml",
- "markdig.0.37.0.nupkg.sha512",
- "markdig.nuspec",
- "markdig.png",
- "readme.md"
- ]
- },
- "Microsoft.CodeCoverage/17.11.0": {
- "sha512": "QKcOSuw7MZG4XiQ+pCj+Ib6amOwoRDEO7e3DbxqXeOPXSnfyGXYoZQI8I140s1mKQVn1Vh+c5WlKvCvlgMovpg==",
- "type": "package",
- "path": "microsoft.codecoverage/17.11.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "ThirdPartyNotices.txt",
- "build/netstandard2.0/CodeCoverage/CodeCoverage.config",
- "build/netstandard2.0/CodeCoverage/CodeCoverage.exe",
- "build/netstandard2.0/CodeCoverage/VanguardInstrumentationProfiler_x86.config",
- "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe",
- "build/netstandard2.0/CodeCoverage/amd64/VanguardInstrumentationProfiler_x64.config",
- "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll",
- "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll",
- "build/netstandard2.0/CodeCoverage/arm64/VanguardInstrumentationProfiler_arm64.config",
- "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll",
- "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll",
- "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll",
- "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll",
- "build/netstandard2.0/CodeCoverage/covrun32.dll",
- "build/netstandard2.0/CodeCoverage/msdia140.dll",
- "build/netstandard2.0/InstrumentationEngine/alpine/x64/VanguardInstrumentationProfiler_x64.config",
- "build/netstandard2.0/InstrumentationEngine/alpine/x64/libCoverageInstrumentationMethod.so",
- "build/netstandard2.0/InstrumentationEngine/alpine/x64/libInstrumentationEngine.so",
- "build/netstandard2.0/InstrumentationEngine/arm64/MicrosoftInstrumentationEngine_arm64.dll",
- "build/netstandard2.0/InstrumentationEngine/macos/x64/VanguardInstrumentationProfiler_x64.config",
- "build/netstandard2.0/InstrumentationEngine/macos/x64/libCoverageInstrumentationMethod.dylib",
- "build/netstandard2.0/InstrumentationEngine/macos/x64/libInstrumentationEngine.dylib",
- "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/VanguardInstrumentationProfiler_x64.config",
- "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libCoverageInstrumentationMethod.so",
- "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libInstrumentationEngine.so",
- "build/netstandard2.0/InstrumentationEngine/x64/MicrosoftInstrumentationEngine_x64.dll",
- "build/netstandard2.0/InstrumentationEngine/x86/MicrosoftInstrumentationEngine_x86.dll",
- "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll",
- "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.Core.dll",
- "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll",
- "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll",
- "build/netstandard2.0/Microsoft.CodeCoverage.props",
- "build/netstandard2.0/Microsoft.CodeCoverage.targets",
- "build/netstandard2.0/Microsoft.DiaSymReader.dll",
- "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll",
- "build/netstandard2.0/Mono.Cecil.Pdb.dll",
- "build/netstandard2.0/Mono.Cecil.Rocks.dll",
- "build/netstandard2.0/Mono.Cecil.dll",
- "build/netstandard2.0/ThirdPartyNotices.txt",
- "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll",
- "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll",
- "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll",
- "microsoft.codecoverage.17.11.0.nupkg.sha512",
- "microsoft.codecoverage.nuspec"
- ]
- },
- "Microsoft.Data.Sqlite/8.0.0": {
- "sha512": "H+iC5IvkCCKSNHXzL3JARvDn7VpkvuJM91KVB89sKjeTF/KX/BocNNh93ZJtX5MCQKb/z4yVKgkU2sVIq+xKfg==",
- "type": "package",
- "path": "microsoft.data.sqlite/8.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "lib/netstandard2.0/_._",
- "microsoft.data.sqlite.8.0.0.nupkg.sha512",
- "microsoft.data.sqlite.nuspec"
- ]
- },
- "Microsoft.Data.Sqlite.Core/8.0.0": {
- "sha512": "pujbzfszX7jAl7oTbHhqx7pxd9jibeyHHl8zy1gd55XMaKWjDtc5XhhNYwQnrwWYCInNdVoArbaaAvLgW7TwuA==",
- "type": "package",
- "path": "microsoft.data.sqlite.core/8.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "lib/net6.0/Microsoft.Data.Sqlite.dll",
- "lib/net6.0/Microsoft.Data.Sqlite.xml",
- "lib/net8.0/Microsoft.Data.Sqlite.dll",
- "lib/net8.0/Microsoft.Data.Sqlite.xml",
- "lib/netstandard2.0/Microsoft.Data.Sqlite.dll",
- "lib/netstandard2.0/Microsoft.Data.Sqlite.xml",
- "microsoft.data.sqlite.core.8.0.0.nupkg.sha512",
- "microsoft.data.sqlite.core.nuspec"
- ]
- },
- "Microsoft.NET.Test.Sdk/17.11.0": {
- "sha512": "fH7P0LihMXgnlNLtrXGetHd30aQcD+YrSbWXbCPBnrypdRApPgNqd/TgncTlSVY1bbLYdnvpBgts2dcnK37GzA==",
- "type": "package",
- "path": "microsoft.net.test.sdk/17.11.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "build/net462/Microsoft.NET.Test.Sdk.props",
- "build/net462/Microsoft.NET.Test.Sdk.targets",
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.cs",
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.fs",
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.vb",
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props",
- "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets",
- "buildMultiTargeting/Microsoft.NET.Test.Sdk.props",
- "lib/net462/_._",
- "lib/netcoreapp3.1/_._",
- "microsoft.net.test.sdk.17.11.0.nupkg.sha512",
- "microsoft.net.test.sdk.nuspec"
- ]
- },
- "Microsoft.TestPlatform.ObjectModel/17.11.0": {
- "sha512": "PU+CC1yRzbR0IllrtdILaeep7WP5OIrvmWrvCMqG3jB1h4F6Ur7CYHl6ENbDVXPzEvygXh0GWbTyrbjfvgTpAg==",
- "type": "package",
- "path": "microsoft.testplatform.objectmodel/17.11.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll",
- "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll",
- "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll",
- "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll",
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll",
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll",
- "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll",
- "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll",
- "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll",
- "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll",
- "microsoft.testplatform.objectmodel.17.11.0.nupkg.sha512",
- "microsoft.testplatform.objectmodel.nuspec"
- ]
- },
- "Microsoft.TestPlatform.TestHost/17.11.0": {
- "sha512": "KMzJO3dm3+9W8JRQ3IDviu0v7uXP5Lgii6TuxMc5m8ynaqcGnn7Y18cMb5AsP2xp59uUHO474WZrssxBdb8ZxQ==",
- "type": "package",
- "path": "microsoft.testplatform.testhost/17.11.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "ThirdPartyNotices.txt",
- "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props",
- "build/netcoreapp3.1/x64/testhost.dll",
- "build/netcoreapp3.1/x64/testhost.exe",
- "build/netcoreapp3.1/x86/testhost.x86.dll",
- "build/netcoreapp3.1/x86/testhost.x86.exe",
- "lib/net462/_._",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll",
- "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll",
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll",
- "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll",
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/testhost.deps.json",
- "lib/netcoreapp3.1/testhost.dll",
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/x64/msdia140.dll",
- "lib/netcoreapp3.1/x86/msdia140.dll",
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll",
- "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll",
- "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll",
- "microsoft.testplatform.testhost.17.11.0.nupkg.sha512",
- "microsoft.testplatform.testhost.nuspec"
- ]
- },
- "Microsoft.Web.WebView2/1.0.2903.40": {
- "sha512": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==",
- "type": "package",
- "path": "microsoft.web.webview2/1.0.2903.40",
- "hasTools": true,
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.txt",
- "NOTICE.txt",
- "WebView2.idl",
- "WebView2.tlb",
- "build/Common.targets",
- "build/Microsoft.Web.WebView2.targets",
- "build/WebView2Rules.Project.xml",
- "build/native/Microsoft.Web.WebView2.targets",
- "build/native/arm64/WebView2Loader.dll",
- "build/native/arm64/WebView2Loader.dll.lib",
- "build/native/arm64/WebView2LoaderStatic.lib",
- "build/native/include-winrt/WebView2Interop.h",
- "build/native/include-winrt/WebView2Interop.idl",
- "build/native/include-winrt/WebView2Interop.tlb",
- "build/native/include/WebView2.h",
- "build/native/include/WebView2EnvironmentOptions.h",
- "build/native/x64/WebView2Loader.dll",
- "build/native/x64/WebView2Loader.dll.lib",
- "build/native/x64/WebView2LoaderStatic.lib",
- "build/native/x86/WebView2Loader.dll",
- "build/native/x86/WebView2Loader.dll.lib",
- "build/native/x86/WebView2LoaderStatic.lib",
- "build/wv2winrt.targets",
- "buildTransitive/Microsoft.Web.WebView2.targets",
- "lib/Microsoft.Web.WebView2.Core.winmd",
- "lib/net462/Microsoft.Web.WebView2.Core.dll",
- "lib/net462/Microsoft.Web.WebView2.Core.xml",
- "lib/net462/Microsoft.Web.WebView2.WinForms.dll",
- "lib/net462/Microsoft.Web.WebView2.WinForms.xml",
- "lib/net462/Microsoft.Web.WebView2.Wpf.dll",
- "lib/net462/Microsoft.Web.WebView2.Wpf.xml",
- "lib_manual/net5.0-windows10.0.17763.0/Microsoft.Web.WebView2.Wpf.dll",
- "lib_manual/net5.0-windows10.0.17763.0/Microsoft.Web.WebView2.Wpf.xml",
- "lib_manual/net6.0-windows10.0.17763.0/Microsoft.Web.WebView2.Core.Projection.dll",
- "lib_manual/net8.0-windows10.0.17763.0/Microsoft.Web.WebView2.Core.Projection.dll",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.Core.dll",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.Core.xml",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.dll",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.WinForms.xml",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.dll",
- "lib_manual/netcoreapp3.0/Microsoft.Web.WebView2.Wpf.xml",
- "microsoft.web.webview2.1.0.2903.40.nupkg.sha512",
- "microsoft.web.webview2.nuspec",
- "runtimes/win-arm64/native/WebView2Loader.dll",
- "runtimes/win-arm64/native_uap/Microsoft.Web.WebView2.Core.dll",
- "runtimes/win-x64/native/WebView2Loader.dll",
- "runtimes/win-x64/native_uap/Microsoft.Web.WebView2.Core.dll",
- "runtimes/win-x86/native/WebView2Loader.dll",
- "runtimes/win-x86/native_uap/Microsoft.Web.WebView2.Core.dll",
- "tools/VisualStudioToolsManifest.xml",
- "tools/wv2winrt/Antlr3.Runtime.dll",
- "tools/wv2winrt/Antlr4.StringTemplate.dll",
- "tools/wv2winrt/System.Buffers.dll",
- "tools/wv2winrt/System.CommandLine.DragonFruit.dll",
- "tools/wv2winrt/System.CommandLine.Rendering.dll",
- "tools/wv2winrt/System.CommandLine.dll",
- "tools/wv2winrt/System.Memory.dll",
- "tools/wv2winrt/System.Numerics.Vectors.dll",
- "tools/wv2winrt/System.Runtime.CompilerServices.Unsafe.dll",
- "tools/wv2winrt/codegen_util.dll",
- "tools/wv2winrt/concrt140_app.dll",
- "tools/wv2winrt/cs/System.CommandLine.resources.dll",
- "tools/wv2winrt/de/System.CommandLine.resources.dll",
- "tools/wv2winrt/es/System.CommandLine.resources.dll",
- "tools/wv2winrt/fr/System.CommandLine.resources.dll",
- "tools/wv2winrt/it/System.CommandLine.resources.dll",
- "tools/wv2winrt/ja/System.CommandLine.resources.dll",
- "tools/wv2winrt/ko/System.CommandLine.resources.dll",
- "tools/wv2winrt/msvcp140_1_app.dll",
- "tools/wv2winrt/msvcp140_2_app.dll",
- "tools/wv2winrt/msvcp140_app.dll",
- "tools/wv2winrt/pl/System.CommandLine.resources.dll",
- "tools/wv2winrt/pt-BR/System.CommandLine.resources.dll",
- "tools/wv2winrt/ru/System.CommandLine.resources.dll",
- "tools/wv2winrt/tr/System.CommandLine.resources.dll",
- "tools/wv2winrt/type_hierarchy.dll",
- "tools/wv2winrt/vcamp140_app.dll",
- "tools/wv2winrt/vccorlib140_app.dll",
- "tools/wv2winrt/vcomp140_app.dll",
- "tools/wv2winrt/vcruntime140_app.dll",
- "tools/wv2winrt/winrt_winmd.dll",
- "tools/wv2winrt/winrt_winmd.winmd",
- "tools/wv2winrt/wv2winrt.exe",
- "tools/wv2winrt/wv2winrt.exe.config",
- "tools/wv2winrt/wv2winrt.xml",
- "tools/wv2winrt/zh-Hans/System.CommandLine.resources.dll",
- "tools/wv2winrt/zh-Hant/System.CommandLine.resources.dll"
- ]
- },
- "Newtonsoft.Json/13.0.1": {
- "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
- "type": "package",
- "path": "newtonsoft.json/13.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.md",
- "lib/net20/Newtonsoft.Json.dll",
- "lib/net20/Newtonsoft.Json.xml",
- "lib/net35/Newtonsoft.Json.dll",
- "lib/net35/Newtonsoft.Json.xml",
- "lib/net40/Newtonsoft.Json.dll",
- "lib/net40/Newtonsoft.Json.xml",
- "lib/net45/Newtonsoft.Json.dll",
- "lib/net45/Newtonsoft.Json.xml",
- "lib/netstandard1.0/Newtonsoft.Json.dll",
- "lib/netstandard1.0/Newtonsoft.Json.xml",
- "lib/netstandard1.3/Newtonsoft.Json.dll",
- "lib/netstandard1.3/Newtonsoft.Json.xml",
- "lib/netstandard2.0/Newtonsoft.Json.dll",
- "lib/netstandard2.0/Newtonsoft.Json.xml",
- "newtonsoft.json.13.0.1.nupkg.sha512",
- "newtonsoft.json.nuspec",
- "packageIcon.png"
- ]
- },
- "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
- "sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
- "type": "package",
- "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/monoandroid90/SQLitePCLRaw.batteries_v2.dll",
- "lib/net461/SQLitePCLRaw.batteries_v2.dll",
- "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.dll",
- "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.xml",
- "lib/net6.0-ios14.0/SQLitePCLRaw.batteries_v2.dll",
- "lib/net6.0-ios14.2/SQLitePCLRaw.batteries_v2.dll",
- "lib/net6.0-tvos10.0/SQLitePCLRaw.batteries_v2.dll",
- "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll",
- "lib/xamarinios10/SQLitePCLRaw.batteries_v2.dll",
- "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512",
- "sqlitepclraw.bundle_e_sqlite3.nuspec"
- ]
- },
- "SQLitePCLRaw.core/2.1.6": {
- "sha512": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==",
- "type": "package",
- "path": "sqlitepclraw.core/2.1.6",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/netstandard2.0/SQLitePCLRaw.core.dll",
- "sqlitepclraw.core.2.1.6.nupkg.sha512",
- "sqlitepclraw.core.nuspec"
- ]
- },
- "SQLitePCLRaw.lib.e_sqlite3/2.1.6": {
- "sha512": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==",
- "type": "package",
- "path": "sqlitepclraw.lib.e_sqlite3/2.1.6",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "buildTransitive/net461/SQLitePCLRaw.lib.e_sqlite3.targets",
- "buildTransitive/net6.0/SQLitePCLRaw.lib.e_sqlite3.targets",
- "buildTransitive/net7.0/SQLitePCLRaw.lib.e_sqlite3.targets",
- "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets",
- "lib/net461/_._",
- "lib/netstandard2.0/_._",
- "runtimes/browser-wasm/nativeassets/net6.0/e_sqlite3.a",
- "runtimes/browser-wasm/nativeassets/net7.0/e_sqlite3.a",
- "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a",
- "runtimes/linux-arm/native/libe_sqlite3.so",
- "runtimes/linux-arm64/native/libe_sqlite3.so",
- "runtimes/linux-armel/native/libe_sqlite3.so",
- "runtimes/linux-mips64/native/libe_sqlite3.so",
- "runtimes/linux-musl-arm/native/libe_sqlite3.so",
- "runtimes/linux-musl-arm64/native/libe_sqlite3.so",
- "runtimes/linux-musl-x64/native/libe_sqlite3.so",
- "runtimes/linux-ppc64le/native/libe_sqlite3.so",
- "runtimes/linux-s390x/native/libe_sqlite3.so",
- "runtimes/linux-x64/native/libe_sqlite3.so",
- "runtimes/linux-x86/native/libe_sqlite3.so",
- "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib",
- "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib",
- "runtimes/osx-arm64/native/libe_sqlite3.dylib",
- "runtimes/osx-x64/native/libe_sqlite3.dylib",
- "runtimes/win-arm/native/e_sqlite3.dll",
- "runtimes/win-arm64/native/e_sqlite3.dll",
- "runtimes/win-x64/native/e_sqlite3.dll",
- "runtimes/win-x86/native/e_sqlite3.dll",
- "runtimes/win10-arm/nativeassets/uap10.0/e_sqlite3.dll",
- "runtimes/win10-arm64/nativeassets/uap10.0/e_sqlite3.dll",
- "runtimes/win10-x64/nativeassets/uap10.0/e_sqlite3.dll",
- "runtimes/win10-x86/nativeassets/uap10.0/e_sqlite3.dll",
- "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512",
- "sqlitepclraw.lib.e_sqlite3.nuspec"
- ]
- },
- "SQLitePCLRaw.provider.e_sqlite3/2.1.6": {
- "sha512": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==",
- "type": "package",
- "path": "sqlitepclraw.provider.e_sqlite3/2.1.6",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll",
- "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll",
- "lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll",
- "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512",
- "sqlitepclraw.provider.e_sqlite3.nuspec"
- ]
- },
- "System.Configuration.ConfigurationManager/4.4.0": {
- "sha512": "gWwQv/Ug1qWJmHCmN17nAbxJYmQBM/E94QxKLksvUiiKB1Ld3Sc/eK1lgmbSjDFxkQhVuayI/cGFZhpBSodLrg==",
- "type": "package",
- "path": "system.configuration.configurationmanager/4.4.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/net461/System.Configuration.ConfigurationManager.dll",
- "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll",
- "ref/net461/System.Configuration.ConfigurationManager.dll",
- "ref/net461/System.Configuration.ConfigurationManager.xml",
- "ref/netstandard2.0/System.Configuration.ConfigurationManager.dll",
- "ref/netstandard2.0/System.Configuration.ConfigurationManager.xml",
- "system.configuration.configurationmanager.4.4.0.nupkg.sha512",
- "system.configuration.configurationmanager.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "System.Diagnostics.EventLog/8.0.1": {
- "sha512": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==",
- "type": "package",
- "path": "system.diagnostics.eventlog/8.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "PACKAGE.md",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/net461/System.Diagnostics.EventLog.targets",
- "buildTransitive/net462/_._",
- "buildTransitive/net6.0/_._",
- "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets",
- "lib/net462/System.Diagnostics.EventLog.dll",
- "lib/net462/System.Diagnostics.EventLog.xml",
- "lib/net6.0/System.Diagnostics.EventLog.dll",
- "lib/net6.0/System.Diagnostics.EventLog.xml",
- "lib/net7.0/System.Diagnostics.EventLog.dll",
- "lib/net7.0/System.Diagnostics.EventLog.xml",
- "lib/net8.0/System.Diagnostics.EventLog.dll",
- "lib/net8.0/System.Diagnostics.EventLog.xml",
- "lib/netstandard2.0/System.Diagnostics.EventLog.dll",
- "lib/netstandard2.0/System.Diagnostics.EventLog.xml",
- "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll",
- "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll",
- "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml",
- "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll",
- "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll",
- "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml",
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll",
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll",
- "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml",
- "system.diagnostics.eventlog.8.0.1.nupkg.sha512",
- "system.diagnostics.eventlog.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.IO.Packaging/8.0.1": {
- "sha512": "KYkIOAvPexQOLDxPO2g0BVoWInnQhPpkFzRqvNrNrMhVT6kqhVr0zEb6KCHlptLFukxnZrjuMVAnxK7pOGUYrw==",
- "type": "package",
- "path": "system.io.packaging/8.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/net461/System.IO.Packaging.targets",
- "buildTransitive/net462/_._",
- "buildTransitive/net6.0/_._",
- "buildTransitive/netcoreapp2.0/System.IO.Packaging.targets",
- "lib/net462/System.IO.Packaging.dll",
- "lib/net462/System.IO.Packaging.xml",
- "lib/net6.0/System.IO.Packaging.dll",
- "lib/net6.0/System.IO.Packaging.xml",
- "lib/net7.0/System.IO.Packaging.dll",
- "lib/net7.0/System.IO.Packaging.xml",
- "lib/net8.0/System.IO.Packaging.dll",
- "lib/net8.0/System.IO.Packaging.xml",
- "lib/netstandard2.0/System.IO.Packaging.dll",
- "lib/netstandard2.0/System.IO.Packaging.xml",
- "system.io.packaging.8.0.1.nupkg.sha512",
- "system.io.packaging.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.Memory/4.5.3": {
- "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==",
- "type": "package",
- "path": "system.memory/4.5.3",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/netcoreapp2.1/_._",
- "lib/netstandard1.1/System.Memory.dll",
- "lib/netstandard1.1/System.Memory.xml",
- "lib/netstandard2.0/System.Memory.dll",
- "lib/netstandard2.0/System.Memory.xml",
- "ref/netcoreapp2.1/_._",
- "system.memory.4.5.3.nupkg.sha512",
- "system.memory.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "System.Reflection.Metadata/1.6.0": {
- "sha512": "COC1aiAJjCoA5GBF+QKL2uLqEBew4JsCkQmoHKbN3TlOZKa2fKLz5CpiRQKDz0RsAOEGsVKqOD5bomsXq/4STQ==",
- "type": "package",
- "path": "system.reflection.metadata/1.6.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/netstandard1.1/System.Reflection.Metadata.dll",
- "lib/netstandard1.1/System.Reflection.Metadata.xml",
- "lib/netstandard2.0/System.Reflection.Metadata.dll",
- "lib/netstandard2.0/System.Reflection.Metadata.xml",
- "lib/portable-net45+win8/System.Reflection.Metadata.dll",
- "lib/portable-net45+win8/System.Reflection.Metadata.xml",
- "system.reflection.metadata.1.6.0.nupkg.sha512",
- "system.reflection.metadata.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "System.Security.Cryptography.ProtectedData/8.0.0": {
- "sha512": "+TUFINV2q2ifyXauQXRwy4CiBhqvDEDZeVJU7qfxya4aRYOKzVBpN+4acx25VcPB9ywUN6C0n8drWl110PhZEg==",
- "type": "package",
- "path": "system.security.cryptography.protecteddata/8.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "PACKAGE.md",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/net461/System.Security.Cryptography.ProtectedData.targets",
- "buildTransitive/net462/_._",
- "buildTransitive/net6.0/_._",
- "buildTransitive/netcoreapp2.0/System.Security.Cryptography.ProtectedData.targets",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net462/System.Security.Cryptography.ProtectedData.dll",
- "lib/net462/System.Security.Cryptography.ProtectedData.xml",
- "lib/net6.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/net6.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/net7.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/net7.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/net8.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/net8.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "system.security.cryptography.protecteddata.8.0.0.nupkg.sha512",
- "system.security.cryptography.protecteddata.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.ServiceProcess.ServiceController/8.0.1": {
- "sha512": "02I0BXo1kmMBgw03E8Hu4K6nTqur4wpQdcDZrndczPzY2fEoGvlinE35AWbyzLZ2h2IksEZ6an4tVt3hi9j1oA==",
- "type": "package",
- "path": "system.serviceprocess.servicecontroller/8.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "PACKAGE.md",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/net461/System.ServiceProcess.ServiceController.targets",
- "buildTransitive/net462/_._",
- "buildTransitive/net6.0/_._",
- "buildTransitive/netcoreapp2.0/System.ServiceProcess.ServiceController.targets",
- "lib/net462/System.ServiceProcess.ServiceController.dll",
- "lib/net462/System.ServiceProcess.ServiceController.xml",
- "lib/net6.0/System.ServiceProcess.ServiceController.dll",
- "lib/net6.0/System.ServiceProcess.ServiceController.xml",
- "lib/net7.0/System.ServiceProcess.ServiceController.dll",
- "lib/net7.0/System.ServiceProcess.ServiceController.xml",
- "lib/net8.0/System.ServiceProcess.ServiceController.dll",
- "lib/net8.0/System.ServiceProcess.ServiceController.xml",
- "lib/netstandard2.0/System.ServiceProcess.ServiceController.dll",
- "lib/netstandard2.0/System.ServiceProcess.ServiceController.xml",
- "runtimes/win/lib/net6.0/System.ServiceProcess.ServiceController.dll",
- "runtimes/win/lib/net6.0/System.ServiceProcess.ServiceController.xml",
- "runtimes/win/lib/net7.0/System.ServiceProcess.ServiceController.dll",
- "runtimes/win/lib/net7.0/System.ServiceProcess.ServiceController.xml",
- "runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll",
- "runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.xml",
- "system.serviceprocess.servicecontroller.8.0.1.nupkg.sha512",
- "system.serviceprocess.servicecontroller.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "UglyToad.PdfPig/1.7.0-custom-5": {
- "sha512": "mddnoBg+XV5YZJg+lp/LlXQ9NY9/oV/MoNjLbbLHw0uTymfyuinVePQB4ff/ELRv3s6n0G7h8q3Ycb3KYg+hgQ==",
- "type": "package",
- "path": "uglytoad.pdfpig/1.7.0-custom-5",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net451/UglyToad.PdfPig.dll",
- "lib/net451/UglyToad.PdfPig.xml",
- "lib/net452/UglyToad.PdfPig.dll",
- "lib/net452/UglyToad.PdfPig.xml",
- "lib/net46/UglyToad.PdfPig.dll",
- "lib/net46/UglyToad.PdfPig.xml",
- "lib/net461/UglyToad.PdfPig.dll",
- "lib/net461/UglyToad.PdfPig.xml",
- "lib/net462/UglyToad.PdfPig.dll",
- "lib/net462/UglyToad.PdfPig.xml",
- "lib/net47/UglyToad.PdfPig.dll",
- "lib/net47/UglyToad.PdfPig.xml",
- "lib/net6.0/UglyToad.PdfPig.dll",
- "lib/net6.0/UglyToad.PdfPig.xml",
- "lib/netstandard2.0/UglyToad.PdfPig.dll",
- "lib/netstandard2.0/UglyToad.PdfPig.xml",
- "uglytoad.pdfpig.1.7.0-custom-5.nupkg.sha512",
- "uglytoad.pdfpig.nuspec"
- ]
- },
- "UglyToad.PdfPig.Core/1.7.0-custom-5": {
- "sha512": "bChQUAYApM6/vgBis0+fBTZyAVqjXdqshjZDCgI3dgwUplfLJxXRrnkCOdNj0a6JNcF32R4aLpnGpTc9QmmVmg==",
- "type": "package",
- "path": "uglytoad.pdfpig.core/1.7.0-custom-5",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net451/UglyToad.PdfPig.Core.dll",
- "lib/net451/UglyToad.PdfPig.Core.xml",
- "lib/net452/UglyToad.PdfPig.Core.dll",
- "lib/net452/UglyToad.PdfPig.Core.xml",
- "lib/net46/UglyToad.PdfPig.Core.dll",
- "lib/net46/UglyToad.PdfPig.Core.xml",
- "lib/net461/UglyToad.PdfPig.Core.dll",
- "lib/net461/UglyToad.PdfPig.Core.xml",
- "lib/net462/UglyToad.PdfPig.Core.dll",
- "lib/net462/UglyToad.PdfPig.Core.xml",
- "lib/net47/UglyToad.PdfPig.Core.dll",
- "lib/net47/UglyToad.PdfPig.Core.xml",
- "lib/net6.0/UglyToad.PdfPig.Core.dll",
- "lib/net6.0/UglyToad.PdfPig.Core.xml",
- "lib/netstandard2.0/UglyToad.PdfPig.Core.dll",
- "lib/netstandard2.0/UglyToad.PdfPig.Core.xml",
- "uglytoad.pdfpig.core.1.7.0-custom-5.nupkg.sha512",
- "uglytoad.pdfpig.core.nuspec"
- ]
- },
- "UglyToad.PdfPig.Fonts/1.7.0-custom-5": {
- "sha512": "Z6SBBAIL8wRkJNhXGYaz0CrHnNrNeuNtmwRbBtQUA1b3TDhRQppOmHCIuhjb6Vu/Rirp6FIOtzAU1lXsGik90w==",
- "type": "package",
- "path": "uglytoad.pdfpig.fonts/1.7.0-custom-5",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "content/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net451/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net452/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net46/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net461/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net462/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net47/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/net6.0/Resources/AdobeFontMetrics/MustRead.html",
- "contentFiles/any/netstandard2.0/Resources/AdobeFontMetrics/MustRead.html",
- "lib/net451/UglyToad.PdfPig.Fonts.dll",
- "lib/net451/UglyToad.PdfPig.Fonts.xml",
- "lib/net452/UglyToad.PdfPig.Fonts.dll",
- "lib/net452/UglyToad.PdfPig.Fonts.xml",
- "lib/net46/UglyToad.PdfPig.Fonts.dll",
- "lib/net46/UglyToad.PdfPig.Fonts.xml",
- "lib/net461/UglyToad.PdfPig.Fonts.dll",
- "lib/net461/UglyToad.PdfPig.Fonts.xml",
- "lib/net462/UglyToad.PdfPig.Fonts.dll",
- "lib/net462/UglyToad.PdfPig.Fonts.xml",
- "lib/net47/UglyToad.PdfPig.Fonts.dll",
- "lib/net47/UglyToad.PdfPig.Fonts.xml",
- "lib/net6.0/UglyToad.PdfPig.Fonts.dll",
- "lib/net6.0/UglyToad.PdfPig.Fonts.xml",
- "lib/netstandard2.0/UglyToad.PdfPig.Fonts.dll",
- "lib/netstandard2.0/UglyToad.PdfPig.Fonts.xml",
- "uglytoad.pdfpig.fonts.1.7.0-custom-5.nupkg.sha512",
- "uglytoad.pdfpig.fonts.nuspec"
- ]
- },
- "UglyToad.PdfPig.Tokenization/1.7.0-custom-5": {
- "sha512": "U8VVH7VJjv6czP7qWyzDq6CRaiJQe7/sESUCL8H3kiEa3zi0l9TonIKlD/YidQ5DlgTumracii6zjLyKPEFKwA==",
- "type": "package",
- "path": "uglytoad.pdfpig.tokenization/1.7.0-custom-5",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net451/UglyToad.PdfPig.Tokenization.dll",
- "lib/net451/UglyToad.PdfPig.Tokenization.xml",
- "lib/net452/UglyToad.PdfPig.Tokenization.dll",
- "lib/net452/UglyToad.PdfPig.Tokenization.xml",
- "lib/net46/UglyToad.PdfPig.Tokenization.dll",
- "lib/net46/UglyToad.PdfPig.Tokenization.xml",
- "lib/net461/UglyToad.PdfPig.Tokenization.dll",
- "lib/net461/UglyToad.PdfPig.Tokenization.xml",
- "lib/net462/UglyToad.PdfPig.Tokenization.dll",
- "lib/net462/UglyToad.PdfPig.Tokenization.xml",
- "lib/net47/UglyToad.PdfPig.Tokenization.dll",
- "lib/net47/UglyToad.PdfPig.Tokenization.xml",
- "lib/net6.0/UglyToad.PdfPig.Tokenization.dll",
- "lib/net6.0/UglyToad.PdfPig.Tokenization.xml",
- "lib/netstandard2.0/UglyToad.PdfPig.Tokenization.dll",
- "lib/netstandard2.0/UglyToad.PdfPig.Tokenization.xml",
- "uglytoad.pdfpig.tokenization.1.7.0-custom-5.nupkg.sha512",
- "uglytoad.pdfpig.tokenization.nuspec"
- ]
- },
- "UglyToad.PdfPig.Tokens/1.7.0-custom-5": {
- "sha512": "m/j5RVfL4eF/OwX6ASprzK+yzD3l7xdgQ7zQPgENhjxfuXD+hj6FSeZlmxSTt9ywvWcTCjGKAILl9XTK9iQgCQ==",
- "type": "package",
- "path": "uglytoad.pdfpig.tokens/1.7.0-custom-5",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net451/UglyToad.PdfPig.Tokens.dll",
- "lib/net451/UglyToad.PdfPig.Tokens.xml",
- "lib/net452/UglyToad.PdfPig.Tokens.dll",
- "lib/net452/UglyToad.PdfPig.Tokens.xml",
- "lib/net46/UglyToad.PdfPig.Tokens.dll",
- "lib/net46/UglyToad.PdfPig.Tokens.xml",
- "lib/net461/UglyToad.PdfPig.Tokens.dll",
- "lib/net461/UglyToad.PdfPig.Tokens.xml",
- "lib/net462/UglyToad.PdfPig.Tokens.dll",
- "lib/net462/UglyToad.PdfPig.Tokens.xml",
- "lib/net47/UglyToad.PdfPig.Tokens.dll",
- "lib/net47/UglyToad.PdfPig.Tokens.xml",
- "lib/net6.0/UglyToad.PdfPig.Tokens.dll",
- "lib/net6.0/UglyToad.PdfPig.Tokens.xml",
- "lib/netstandard2.0/UglyToad.PdfPig.Tokens.dll",
- "lib/netstandard2.0/UglyToad.PdfPig.Tokens.xml",
- "uglytoad.pdfpig.tokens.1.7.0-custom-5.nupkg.sha512",
- "uglytoad.pdfpig.tokens.nuspec"
- ]
- },
- "xunit/2.9.0": {
- "sha512": "PtU3rZ0ThdmdJqTbK7GkgFf6iBaCR6Q0uvJHznID+XEYk2v6O/b7sRxqnbi3B2gRDXxjTqMkVNayzwsqsFUxRw==",
- "type": "package",
- "path": "xunit/2.9.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "xunit.2.9.0.nupkg.sha512",
- "xunit.nuspec"
- ]
- },
- "xunit.abstractions/2.0.3": {
- "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==",
- "type": "package",
- "path": "xunit.abstractions/2.0.3",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net35/xunit.abstractions.dll",
- "lib/net35/xunit.abstractions.xml",
- "lib/netstandard1.0/xunit.abstractions.dll",
- "lib/netstandard1.0/xunit.abstractions.xml",
- "lib/netstandard2.0/xunit.abstractions.dll",
- "lib/netstandard2.0/xunit.abstractions.xml",
- "xunit.abstractions.2.0.3.nupkg.sha512",
- "xunit.abstractions.nuspec"
- ]
- },
- "xunit.analyzers/1.15.0": {
- "sha512": "s+M8K/Rtlgr6CmD7AYQKrNTvT5sh0l0ZKDoZ3Z/ExhlIwfV9mGAMR4f7KqIB7SSK7ZOhqDTgTUMYPmKfmvWUWQ==",
- "type": "package",
- "path": "xunit.analyzers/1.15.0",
- "hasTools": true,
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "analyzers/dotnet/cs/xunit.analyzers.dll",
- "analyzers/dotnet/cs/xunit.analyzers.fixes.dll",
- "tools/install.ps1",
- "tools/uninstall.ps1",
- "xunit.analyzers.1.15.0.nupkg.sha512",
- "xunit.analyzers.nuspec"
- ]
- },
- "xunit.assert/2.9.0": {
- "sha512": "Z/1pyia//860wEYTKn6Q5dmgikJdRjgE4t5AoxJkK8oTmidzPLEPG574kmm7LFkMLbH6Frwmgb750kcyR+hwoA==",
- "type": "package",
- "path": "xunit.assert/2.9.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "lib/net6.0/xunit.assert.dll",
- "lib/net6.0/xunit.assert.xml",
- "lib/netstandard1.1/xunit.assert.dll",
- "lib/netstandard1.1/xunit.assert.xml",
- "xunit.assert.2.9.0.nupkg.sha512",
- "xunit.assert.nuspec"
- ]
- },
- "xunit.core/2.9.0": {
- "sha512": "uRaop9tZsZMCaUS4AfbSPGYHtvywWnm8XXFNUqII7ShWyDBgdchY6gyDNgO4AK1Lv/1NNW61Zq63CsDV6oH6Jg==",
- "type": "package",
- "path": "xunit.core/2.9.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "build/xunit.core.props",
- "build/xunit.core.targets",
- "buildMultiTargeting/xunit.core.props",
- "buildMultiTargeting/xunit.core.targets",
- "xunit.core.2.9.0.nupkg.sha512",
- "xunit.core.nuspec"
- ]
- },
- "xunit.extensibility.core/2.9.0": {
- "sha512": "zjDEUSxsr6UNij4gIwCgMqQox+oLDPRZ+mubwWLci+SssPBFQD1xeRR4SvgBuXqbE0QXCJ/STVTp+lxiB5NLVA==",
- "type": "package",
- "path": "xunit.extensibility.core/2.9.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "lib/net452/xunit.core.dll",
- "lib/net452/xunit.core.dll.tdnet",
- "lib/net452/xunit.core.xml",
- "lib/net452/xunit.runner.tdnet.dll",
- "lib/net452/xunit.runner.utility.net452.dll",
- "lib/netstandard1.1/xunit.core.dll",
- "lib/netstandard1.1/xunit.core.xml",
- "xunit.extensibility.core.2.9.0.nupkg.sha512",
- "xunit.extensibility.core.nuspec"
- ]
- },
- "xunit.extensibility.execution/2.9.0": {
- "sha512": "5ZTQZvmPLlBw6QzCOwM0KnMsZw6eGjbmC176QHZlcbQoMhGIeGcYzYwn5w9yXxf+4phtplMuVqTpTbFDQh2bqQ==",
- "type": "package",
- "path": "xunit.extensibility.execution/2.9.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "lib/net452/xunit.execution.desktop.dll",
- "lib/net452/xunit.execution.desktop.xml",
- "lib/netstandard1.1/xunit.execution.dotnet.dll",
- "lib/netstandard1.1/xunit.execution.dotnet.xml",
- "xunit.extensibility.execution.2.9.0.nupkg.sha512",
- "xunit.extensibility.execution.nuspec"
- ]
- },
- "xunit.runner.visualstudio/2.8.2": {
- "sha512": "vm1tbfXhFmjFMUmS4M0J0ASXz3/U5XvXBa6DOQUL3fEz4Vt6YPhv+ESCarx6M6D+9kJkJYZKCNvJMas1+nVfmQ==",
- "type": "package",
- "path": "xunit.runner.visualstudio/2.8.2",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "_content/README.md",
- "_content/logo-128-transparent.png",
- "build/net462/xunit.abstractions.dll",
- "build/net462/xunit.runner.reporters.net452.dll",
- "build/net462/xunit.runner.utility.net452.dll",
- "build/net462/xunit.runner.visualstudio.props",
- "build/net462/xunit.runner.visualstudio.testadapter.dll",
- "build/net6.0/xunit.abstractions.dll",
- "build/net6.0/xunit.runner.reporters.netcoreapp10.dll",
- "build/net6.0/xunit.runner.utility.netcoreapp10.dll",
- "build/net6.0/xunit.runner.visualstudio.props",
- "build/net6.0/xunit.runner.visualstudio.testadapter.dll",
- "lib/net462/_._",
- "lib/net6.0/_._",
- "xunit.runner.visualstudio.2.8.2.nupkg.sha512",
- "xunit.runner.visualstudio.nuspec"
- ]
- },
- "AxCopilot/0.7.3": {
- "type": "project",
- "path": "../AxCopilot/AxCopilot.csproj",
- "msbuildProject": "../AxCopilot/AxCopilot.csproj"
- },
- "AxCopilot.SDK/1.0.0": {
- "type": "project",
- "path": "../AxCopilot.SDK/AxCopilot.SDK.csproj",
- "msbuildProject": "../AxCopilot.SDK/AxCopilot.SDK.csproj"
- }
- },
- "projectFileDependencyGroups": {
- "net8.0-windows7.0": [
- "AxCopilot >= 0.7.3",
- "FluentAssertions >= 6.12.0",
- "Microsoft.NET.Test.Sdk >= 17.11.0",
- "xunit >= 2.9.0",
- "xunit.runner.visualstudio >= 2.8.2"
- ]
- },
- "packageFolders": {
- "C:\\Users\\admin\\.nuget\\packages\\": {}
- },
- "project": {
- "version": "1.0.0",
- "restore": {
- "projectUniqueName": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj",
- "projectName": "AxCopilot.Tests",
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj",
- "packagesPath": "C:\\Users\\admin\\.nuget\\packages\\",
- "outputPath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\obj\\",
- "projectStyle": "PackageReference",
- "configFilePaths": [
- "C:\\Users\\admin\\AppData\\Roaming\\NuGet\\NuGet.Config",
- "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
- ],
- "originalTargetFrameworks": [
- "net8.0-windows"
- ],
- "sources": {
- "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
- "https://api.nuget.org/v3/index.json": {}
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "projectReferences": {
- "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj": {
- "projectPath": "E:\\AX Copilot - Codex\\src\\AxCopilot\\AxCopilot.csproj"
- }
- }
- }
- },
- "warningProperties": {
- "warnAsError": [
- "NU1605"
- ]
- },
- "restoreAuditProperties": {
- "enableAudit": "true",
- "auditLevel": "low",
- "auditMode": "direct"
- },
- "SdkAnalysisLevel": "10.0.200"
- },
- "frameworks": {
- "net8.0-windows7.0": {
- "targetAlias": "net8.0-windows",
- "dependencies": {
- "FluentAssertions": {
- "target": "Package",
- "version": "[6.12.0, )"
- },
- "Microsoft.NET.Test.Sdk": {
- "target": "Package",
- "version": "[17.11.0, )"
- },
- "xunit": {
- "target": "Package",
- "version": "[2.9.0, )"
- },
- "xunit.runner.visualstudio": {
- "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
- "suppressParent": "All",
- "target": "Package",
- "version": "[2.8.2, )"
- }
- },
- "imports": [
- "net461",
- "net462",
- "net47",
- "net471",
- "net472",
- "net48",
- "net481"
- ],
- "assetTargetFallback": true,
- "warn": true,
- "frameworkReferences": {
- "Microsoft.NETCore.App": {
- "privateAssets": "all"
- },
- "Microsoft.WindowsDesktop.App.WPF": {
- "privateAssets": "none"
- }
- },
- "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.201/PortableRuntimeIdentifierGraph.json"
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/AxCopilot.Tests/obj/project.nuget.cache b/src/AxCopilot.Tests/obj/project.nuget.cache
deleted file mode 100644
index 7d635a9..0000000
--- a/src/AxCopilot.Tests/obj/project.nuget.cache
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "version": 2,
- "dgSpecHash": "2y1BzTJnw9I=",
- "success": true,
- "projectFilePath": "E:\\AX Copilot - Codex\\src\\AxCopilot.Tests\\AxCopilot.Tests.csproj",
- "expectedPackageFiles": [
- "C:\\Users\\admin\\.nuget\\packages\\documentformat.openxml\\3.2.0\\documentformat.openxml.3.2.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\documentformat.openxml.framework\\3.2.0\\documentformat.openxml.framework.3.2.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\fluentassertions\\6.12.0\\fluentassertions.6.12.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\markdig\\0.37.0\\markdig.0.37.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.codecoverage\\17.11.0\\microsoft.codecoverage.17.11.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.data.sqlite\\8.0.0\\microsoft.data.sqlite.8.0.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.data.sqlite.core\\8.0.0\\microsoft.data.sqlite.core.8.0.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.net.test.sdk\\17.11.0\\microsoft.net.test.sdk.17.11.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.11.0\\microsoft.testplatform.objectmodel.17.11.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.testplatform.testhost\\17.11.0\\microsoft.testplatform.testhost.17.11.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\microsoft.web.webview2\\1.0.2903.40\\microsoft.web.webview2.1.0.2903.40.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.6\\sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.configuration.configurationmanager\\4.4.0\\system.configuration.configurationmanager.4.4.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.1\\system.diagnostics.eventlog.8.0.1.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.io.packaging\\8.0.1\\system.io.packaging.8.0.1.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.reflection.metadata\\1.6.0\\system.reflection.metadata.1.6.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.security.cryptography.protecteddata\\8.0.0\\system.security.cryptography.protecteddata.8.0.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\system.serviceprocess.servicecontroller\\8.0.1\\system.serviceprocess.servicecontroller.8.0.1.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\uglytoad.pdfpig\\1.7.0-custom-5\\uglytoad.pdfpig.1.7.0-custom-5.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\uglytoad.pdfpig.core\\1.7.0-custom-5\\uglytoad.pdfpig.core.1.7.0-custom-5.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\uglytoad.pdfpig.fonts\\1.7.0-custom-5\\uglytoad.pdfpig.fonts.1.7.0-custom-5.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\uglytoad.pdfpig.tokenization\\1.7.0-custom-5\\uglytoad.pdfpig.tokenization.1.7.0-custom-5.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\uglytoad.pdfpig.tokens\\1.7.0-custom-5\\uglytoad.pdfpig.tokens.1.7.0-custom-5.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit\\2.9.0\\xunit.2.9.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.analyzers\\1.15.0\\xunit.analyzers.1.15.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.assert\\2.9.0\\xunit.assert.2.9.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.core\\2.9.0\\xunit.core.2.9.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.extensibility.core\\2.9.0\\xunit.extensibility.core.2.9.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.extensibility.execution\\2.9.0\\xunit.extensibility.execution.2.9.0.nupkg.sha512",
- "C:\\Users\\admin\\.nuget\\packages\\xunit.runner.visualstudio\\2.8.2\\xunit.runner.visualstudio.2.8.2.nupkg.sha512"
- ],
- "logs": []
-}
\ No newline at end of file
diff --git a/src/AxCopilot/App.xaml.cs b/src/AxCopilot/App.xaml.cs
index 1154f88..852a987 100644
--- a/src/AxCopilot/App.xaml.cs
+++ b/src/AxCopilot/App.xaml.cs
@@ -536,7 +536,11 @@ public partial class App : System.Windows.Application
}
/// ChatWindow 등 외부에서 설정 창을 여는 공개 메서드.
- public void OpenSettingsFromChat() => Dispatcher.Invoke(OpenSettings);
+ public void OpenSettingsFromChat() => Dispatcher.Invoke(() =>
+ {
+ OpenSettings();
+ _settingsWindow?.SelectAgentSettingsTab();
+ });
/// AX Agent 창을 열고 전용 설정창을 바로 표시합니다.
public void OpenAgentSettingsInChat()
diff --git a/src/AxCopilot/Models/AppSettings.cs b/src/AxCopilot/Models/AppSettings.cs
index b2aa3e3..dc6ce92 100644
--- a/src/AxCopilot/Models/AppSettings.cs
+++ b/src/AxCopilot/Models/AppSettings.cs
@@ -577,6 +577,12 @@ public class LlmSettings
[JsonPropertyName("promptTemplates")]
public List PromptTemplates { get; set; } = new();
+ [JsonPropertyName("favoritePromptTemplates")]
+ public List FavoritePromptTemplates { get; set; } = new();
+
+ [JsonPropertyName("recentPromptTemplates")]
+ public List RecentPromptTemplates { get; set; } = new();
+
/// 작업 폴더 경로. 빈 문자열이면 미선택.
[JsonPropertyName("workFolder")]
public string WorkFolder { get; set; } = "";
@@ -596,7 +602,7 @@ public class LlmSettings
///
/// 파일 접근 권한 수준.
/// Default = 매번 확인 | AcceptEdits = 파일 편집 자동 허용 | Plan = 계획/승인 중심
- /// BypassPermissions = 모든 확인 생략 | DontAsk = 권한 질문 없이 진행 | Deny = 읽기 전용
+ /// BypassPermissions = 모든 확인 생략 | Deny = 읽기 전용
///
[JsonPropertyName("filePermission")]
public string FilePermission { get; set; } = "Deny";
diff --git a/src/AxCopilot/Models/ChatModels.cs b/src/AxCopilot/Models/ChatModels.cs
index 9ae4ba6..c371aa0 100644
--- a/src/AxCopilot/Models/ChatModels.cs
+++ b/src/AxCopilot/Models/ChatModels.cs
@@ -173,6 +173,9 @@ public class DraftQueueItem
[JsonPropertyName("priority")]
public string Priority { get; set; } = "next";
+ [JsonPropertyName("kind")]
+ public string Kind { get; set; } = "message";
+
[JsonPropertyName("state")]
public string State { get; set; } = "queued";
diff --git a/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs b/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs
index fbfaca8..62571bb 100644
--- a/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs
+++ b/src/AxCopilot/Services/Agent/PermissionModeCatalog.cs
@@ -17,12 +17,10 @@ public static class PermissionModeCatalog
public static readonly IReadOnlyList UserSelectableModes = new[]
{
- Deny,
Default,
AcceptEdits,
Plan,
BypassPermissions,
- DontAsk,
};
///
@@ -56,11 +54,11 @@ public static class PermissionModeCatalog
"fullauto" => BypassPermissions,
"완전자동" => BypassPermissions,
"완전 자동" => BypassPermissions,
- "dontask" => DontAsk,
- "don't ask" => DontAsk,
- "silent" => DontAsk,
- "질문없이진행" => DontAsk,
- "질문 없이 진행" => DontAsk,
+ "dontask" => BypassPermissions,
+ "don't ask" => BypassPermissions,
+ "silent" => BypassPermissions,
+ "질문없이진행" => BypassPermissions,
+ "질문 없이 진행" => BypassPermissions,
"allow" => AcceptEdits,
"none" => Deny,
"disabled" => Deny,
@@ -115,7 +113,6 @@ public static class PermissionModeCatalog
var normalized = NormalizeGlobalMode(mode);
return !IsAcceptEdits(normalized)
&& !IsBypassPermissions(normalized)
- && !IsDontAsk(normalized)
&& !string.Equals(normalized, Deny, StringComparison.OrdinalIgnoreCase);
}
@@ -128,7 +125,6 @@ public static class PermissionModeCatalog
AcceptEdits => "편집 자동 승인",
Plan => "계획 모드",
BypassPermissions => "권한 건너뛰기",
- DontAsk => "질문 없이 진행",
Deny => "읽기 전용",
_ => normalized,
};
diff --git a/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs b/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs
index a20b484..e12ad81 100644
--- a/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs
+++ b/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs
@@ -11,12 +11,6 @@ internal static class PermissionModePresentationCatalog
{
public static readonly IReadOnlyList Ordered = new[]
{
- new PermissionModePresentation(
- PermissionModeCatalog.Deny,
- "\uE711",
- "읽기 전용",
- "파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.",
- "#107C10"),
new PermissionModePresentation(
PermissionModeCatalog.Default,
"\uE8D7",
@@ -39,14 +33,8 @@ internal static class PermissionModePresentationCatalog
PermissionModeCatalog.BypassPermissions,
"\uE814",
"권한 건너뛰기",
- "모든 권한을 허용합니다.",
+ "파일 편집과 명령 실행까지 모두 자동 허용합니다.",
"#B45309"),
- new PermissionModePresentation(
- PermissionModeCatalog.DontAsk,
- "\uE8A5",
- "질문 없이 진행",
- "권한 질문 없이 진행합니다. 자동 실행 범위를 점검하세요.",
- "#B91C1C"),
};
public static PermissionModePresentation Resolve(string? mode)
@@ -54,6 +42,6 @@ internal static class PermissionModePresentationCatalog
var normalized = PermissionModeCatalog.NormalizeGlobalMode(mode);
return Ordered.FirstOrDefault(item =>
string.Equals(item.Mode, normalized, StringComparison.OrdinalIgnoreCase))
- ?? Ordered[1];
+ ?? Ordered[0];
}
}
diff --git a/src/AxCopilot/Services/AppStateService.cs b/src/AxCopilot/Services/AppStateService.cs
index 228cd88..91c28c3 100644
--- a/src/AxCopilot/Services/AppStateService.cs
+++ b/src/AxCopilot/Services/AppStateService.cs
@@ -506,7 +506,7 @@ public sealed class AppStateService
if (string.IsNullOrWhiteSpace(conversation?.Permission))
effective = defaultMode;
- var risk = PermissionModeCatalog.IsBypassPermissions(effective) || PermissionModeCatalog.IsDontAsk(effective)
+ var risk = PermissionModeCatalog.IsBypassPermissions(effective)
? "critical"
: PermissionModeCatalog.IsAcceptEdits(effective)
? "high"
@@ -522,7 +522,6 @@ public sealed class AppStateService
"Deny" => "파일 읽기만 허용하고 생성/수정/삭제는 차단합니다.",
"Plan" => "계획/승인 흐름을 우선 적용한 뒤 파일 작업을 진행합니다.",
"BypassPermissions" => "모든 권한 확인을 생략합니다. 주의해서 사용해야 합니다.",
- "DontAsk" => "권한 질문 없이 진행합니다. 자동 실행 범위를 반드시 점검해야 합니다.",
_ => "파일 작업 전마다 사용자 확인을 요청합니다.",
};
diff --git a/src/AxCopilot/Services/ChatSessionStateService.cs b/src/AxCopilot/Services/ChatSessionStateService.cs
index f80eb87..e09c5a2 100644
--- a/src/AxCopilot/Services/ChatSessionStateService.cs
+++ b/src/AxCopilot/Services/ChatSessionStateService.cs
@@ -438,7 +438,7 @@ public sealed class ChatSessionStateService
return conv;
}
- public DraftQueueItem? EnqueueDraft(string tab, string text, string priority = "next", ChatStorageService? storage = null)
+ public DraftQueueItem? EnqueueDraft(string tab, string text, string priority = "next", ChatStorageService? storage = null, string kind = "message")
{
var trimmed = text?.Trim() ?? "";
if (string.IsNullOrWhiteSpace(trimmed))
@@ -446,7 +446,7 @@ public sealed class ChatSessionStateService
var conv = EnsureCurrentConversation(tab);
conv.DraftQueueItems ??= new List();
- var item = _draftQueue.CreateItem(trimmed, priority);
+ var item = _draftQueue.CreateItem(trimmed, priority, kind);
conv.DraftQueueItems.Add(item);
TouchConversation(storage, tab);
return item;
diff --git a/src/AxCopilot/Services/DraftQueueService.cs b/src/AxCopilot/Services/DraftQueueService.cs
index 406558b..d77a261 100644
--- a/src/AxCopilot/Services/DraftQueueService.cs
+++ b/src/AxCopilot/Services/DraftQueueService.cs
@@ -20,12 +20,13 @@ public sealed class DraftQueueService
public DateTime? NextReadyAt { get; init; }
}
- public DraftQueueItem CreateItem(string text, string priority = "next")
+ public DraftQueueItem CreateItem(string text, string priority = "next", string kind = "message")
{
return new DraftQueueItem
{
Text = text.Trim(),
Priority = NormalizePriority(priority),
+ Kind = string.IsNullOrWhiteSpace(kind) ? "message" : kind.Trim().ToLowerInvariant(),
State = "queued",
CreatedAt = DateTime.Now,
};
diff --git a/src/AxCopilot/Services/TokenEstimator.cs b/src/AxCopilot/Services/TokenEstimator.cs
index d15e79e..494ff87 100644
--- a/src/AxCopilot/Services/TokenEstimator.cs
+++ b/src/AxCopilot/Services/TokenEstimator.cs
@@ -67,7 +67,7 @@ public static class TokenEstimator
public static string Format(int count) => count switch
{
>= 1_000_000 => $"{count / 1_000_000.0:0.#}M",
- >= 1_000 => $"{count / 1_000.0:0.#}k",
+ >= 1_000 => $"{count / 1_000.0:0.#}K",
_ => count.ToString(),
};
diff --git a/src/AxCopilot/Themes/AgentClawDark.xaml b/src/AxCopilot/Themes/AgentClawDark.xaml
index 72c8542..a9eb923 100644
--- a/src/AxCopilot/Themes/AgentClawDark.xaml
+++ b/src/AxCopilot/Themes/AgentClawDark.xaml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AxCopilot/Themes/AgentClawLight.xaml b/src/AxCopilot/Themes/AgentClawLight.xaml
index 62884f2..da652c0 100644
--- a/src/AxCopilot/Themes/AgentClawLight.xaml
+++ b/src/AxCopilot/Themes/AgentClawLight.xaml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AxCopilot/Themes/AgentClawSystem.xaml b/src/AxCopilot/Themes/AgentClawSystem.xaml
index 66e0a55..9dd7d2f 100644
--- a/src/AxCopilot/Themes/AgentClawSystem.xaml
+++ b/src/AxCopilot/Themes/AgentClawSystem.xaml
@@ -1,17 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AxCopilot/Themes/AgentSlateSystem.xaml b/src/AxCopilot/Themes/AgentSlateSystem.xaml
new file mode 100644
index 0000000..7945b73
--- /dev/null
+++ b/src/AxCopilot/Themes/AgentSlateSystem.xaml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AxCopilot/ViewModels/SettingsViewModel.cs b/src/AxCopilot/ViewModels/SettingsViewModel.cs
index 77ad4d2..b0e93ae 100644
--- a/src/AxCopilot/ViewModels/SettingsViewModel.cs
+++ b/src/AxCopilot/ViewModels/SettingsViewModel.cs
@@ -149,6 +149,10 @@ public class SettingsViewModel : INotifyPropertyChanged
private bool _snippetAutoExpand;
private string _language;
private string _indexSpeed;
+ private bool _aiEnabled = true;
+ private string _operationMode = "internal";
+ private string _agentTheme = "system";
+ private string _agentThemePreset = "claw";
// 기능 토글
private bool _showNumberBadges;
@@ -237,7 +241,7 @@ public class SettingsViewModel : INotifyPropertyChanged
public int LlmMaxContextTokens
{
get => _llmMaxContextTokens;
- set { _llmMaxContextTokens = value; OnPropertyChanged(); }
+ set { _llmMaxContextTokens = Math.Clamp(value, 1024, 1_000_000); OnPropertyChanged(); }
}
public int LlmRetentionDays
{
@@ -688,6 +692,30 @@ public class SettingsViewModel : INotifyPropertyChanged
set { _indexSpeed = value; OnPropertyChanged(); OnPropertyChanged(nameof(IndexSpeedHint)); }
}
+ public bool AiEnabled
+ {
+ get => _aiEnabled;
+ set { _aiEnabled = value; OnPropertyChanged(); }
+ }
+
+ public string OperationMode
+ {
+ get => _operationMode;
+ set { _operationMode = string.IsNullOrWhiteSpace(value) ? "internal" : value.Trim().ToLowerInvariant(); OnPropertyChanged(); }
+ }
+
+ public string AgentTheme
+ {
+ get => _agentTheme;
+ set { _agentTheme = string.IsNullOrWhiteSpace(value) ? "system" : value.Trim().ToLowerInvariant(); OnPropertyChanged(); }
+ }
+
+ public string AgentThemePreset
+ {
+ get => _agentThemePreset;
+ set { _agentThemePreset = string.IsNullOrWhiteSpace(value) ? "claw" : value.Trim().ToLowerInvariant(); OnPropertyChanged(); }
+ }
+
public string IndexSpeedHint => _indexSpeed switch
{
"fast" => "CPU 사용률이 높아질 수 있습니다. 고성능 PC에 권장합니다.",
@@ -1025,7 +1053,7 @@ public class SettingsViewModel : INotifyPropertyChanged
var llm = s.Llm;
_llmService = NormalizeServiceKey(llm.Service);
_llmStreaming = llm.Streaming;
- _llmMaxContextTokens = llm.MaxContextTokens;
+ _llmMaxContextTokens = Math.Clamp(llm.MaxContextTokens, 1024, 1_000_000);
_llmRetentionDays = llm.RetentionDays;
_llmTemperature = llm.Temperature;
_defaultAgentPermission = PermissionModeCatalog.NormalizeGlobalMode(llm.DefaultAgentPermission);
@@ -1038,6 +1066,10 @@ public class SettingsViewModel : INotifyPropertyChanged
_contextCompactTriggerPercent = llm.ContextCompactTriggerPercent > 0
? Math.Clamp(llm.ContextCompactTriggerPercent, 50, 95)
: 80;
+ _aiEnabled = _service.Settings.AiEnabled;
+ _operationMode = string.IsNullOrWhiteSpace(_service.Settings.OperationMode) ? "internal" : _service.Settings.OperationMode;
+ _agentTheme = string.IsNullOrWhiteSpace(llm.AgentTheme) ? "system" : llm.AgentTheme;
+ _agentThemePreset = string.IsNullOrWhiteSpace(llm.AgentThemePreset) ? "claw" : llm.AgentThemePreset;
_agentLogLevel = llm.AgentLogLevel;
_agentUiExpressionLevel = (llm.AgentUiExpressionLevel ?? "balanced").Trim().ToLowerInvariant() switch
{
@@ -1463,7 +1495,7 @@ public class SettingsViewModel : INotifyPropertyChanged
// LLM 공통 설정 저장
s.Llm.Service = _llmService;
s.Llm.Streaming = _llmStreaming;
- s.Llm.MaxContextTokens = _llmMaxContextTokens;
+ s.Llm.MaxContextTokens = Math.Clamp(_llmMaxContextTokens, 1024, 1_000_000);
s.Llm.RetentionDays = _llmRetentionDays;
s.Llm.Temperature = _llmTemperature;
s.Llm.DefaultAgentPermission = PermissionModeCatalog.NormalizeGlobalMode(_defaultAgentPermission);
@@ -1474,6 +1506,10 @@ public class SettingsViewModel : INotifyPropertyChanged
s.Llm.MaxRetryOnError = _maxRetryOnError;
s.Llm.EnableProactiveContextCompact = _enableProactiveContextCompact;
s.Llm.ContextCompactTriggerPercent = _contextCompactTriggerPercent;
+ s.AiEnabled = _aiEnabled;
+ s.OperationMode = _operationMode;
+ s.Llm.AgentTheme = _agentTheme;
+ s.Llm.AgentThemePreset = _agentThemePreset;
s.Llm.AgentLogLevel = _agentLogLevel;
s.Llm.AgentUiExpressionLevel = _agentUiExpressionLevel;
s.Llm.PlanDiffSeverityMediumCount = _planDiffSeverityMediumCount;
diff --git a/src/AxCopilot/Views/AgentSettingsWindow.xaml b/src/AxCopilot/Views/AgentSettingsWindow.xaml
index 52c0e04..2e0e0f2 100644
--- a/src/AxCopilot/Views/AgentSettingsWindow.xaml
+++ b/src/AxCopilot/Views/AgentSettingsWindow.xaml
@@ -207,6 +207,7 @@
-
+
diff --git a/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs b/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs
index a01c4dc..e7f4f52 100644
--- a/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs
+++ b/src/AxCopilot/Views/AgentSettingsWindow.xaml.cs
@@ -19,6 +19,7 @@ public partial class AgentSettingsWindow : Window
private string _reasoningMode = "detailed";
private string _folderDataUsage = "active";
private string _operationMode = OperationModePolicy.InternalMode;
+ private string _selectedModel = string.Empty;
public AgentSettingsWindow(SettingsService settings)
{
@@ -30,14 +31,14 @@ public partial class AgentSettingsWindow : Window
private void LoadFromSettings()
{
- ModelInput.Text = _llm.Model ?? "";
+ _selectedModel = _llm.Model ?? "";
+ ModelInput.Text = _selectedModel;
_permissionMode = PermissionModeCatalog.NormalizeGlobalMode(_llm.FilePermission);
_planMode = string.IsNullOrWhiteSpace(_llm.PlanMode) ? "off" : _llm.PlanMode;
_reasoningMode = string.IsNullOrWhiteSpace(_llm.AgentDecisionLevel) ? "detailed" : _llm.AgentDecisionLevel;
_folderDataUsage = string.IsNullOrWhiteSpace(_llm.FolderDataUsage) ? "active" : _llm.FolderDataUsage;
_operationMode = OperationModePolicy.Normalize(_settings.Settings.OperationMode);
- ChkVllmAllowInsecureTls.IsChecked = _llm.VllmAllowInsecureTls;
ChkEnableProactiveCompact.IsChecked = _llm.EnableProactiveContextCompact;
TxtContextCompactTriggerPercent.Text = Math.Clamp(_llm.ContextCompactTriggerPercent, 10, 95).ToString();
TxtMaxContextTokens.Text = Math.Max(1024, _llm.MaxContextTokens).ToString();
@@ -154,7 +155,13 @@ public partial class AgentSettingsWindow : Window
Foreground = TryFindResource("PrimaryText") as Brush ?? Brushes.White,
},
};
- border.MouseLeftButtonUp += (_, _) => ModelInput.Text = captured;
+ SetCardSelection(border, string.Equals(captured, _selectedModel, StringComparison.OrdinalIgnoreCase));
+ border.MouseLeftButtonUp += (_, _) =>
+ {
+ _selectedModel = captured;
+ ModelInput.Text = captured;
+ BuildModelChips();
+ };
ModelChipPanel.Children.Add(border);
}
}
@@ -328,7 +335,7 @@ public partial class AgentSettingsWindow : Window
PermissionModeCatalog.Default => PermissionModeCatalog.AcceptEdits,
PermissionModeCatalog.AcceptEdits => PermissionModeCatalog.Plan,
PermissionModeCatalog.Plan => PermissionModeCatalog.BypassPermissions,
- // 기본 순환에서는 코어 모드만 순환하고 dontAsk는 명시 선택으로만 진입.
+ // 권한 표면 모드는 코어 4단계만 순환합니다.
PermissionModeCatalog.BypassPermissions => PermissionModeCatalog.Deny,
PermissionModeCatalog.DontAsk => PermissionModeCatalog.Deny,
_ => PermissionModeCatalog.Deny,
@@ -371,14 +378,13 @@ public partial class AgentSettingsWindow : Window
private void BtnSave_Click(object sender, RoutedEventArgs e)
{
- _llm.Model = ModelInput.Text.Trim();
+ _llm.Model = string.IsNullOrWhiteSpace(_selectedModel) ? (_llm.Model ?? "") : _selectedModel.Trim();
_llm.FilePermission = _permissionMode;
_llm.PlanMode = _planMode;
_llm.AgentDecisionLevel = _reasoningMode;
_llm.FolderDataUsage = _folderDataUsage;
_llm.AgentUiExpressionLevel = "rich";
- _llm.VllmAllowInsecureTls = ChkVllmAllowInsecureTls.IsChecked == true;
_llm.EnableProactiveContextCompact = ChkEnableProactiveCompact.IsChecked == true;
_llm.ContextCompactTriggerPercent = ParseInt(TxtContextCompactTriggerPercent.Text, 80, 10, 95);
_llm.MaxContextTokens = ParseInt(TxtMaxContextTokens.Text, 4096, 1024, 200000);
diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml
index 6f8f17c..290ff83 100644
--- a/src/AxCopilot/Views/ChatWindow.xaml
+++ b/src/AxCopilot/Views/ChatWindow.xaml
@@ -50,6 +50,48 @@
+
+
+
+
+