feat(bridge): renderer v3 deep DOM traversal (iframe/webview/shadow) #task-255
- deepFindButtons(): traverse iframe contentDocument, webview.executeJavaScript, shadow DOMs - dumpDOMStructure(): startup diagnostic dump of all iframes/webviews/buttons - 3-phase trigger-click: deep DOM → webview execJS → iframe direct - known-issues: webview iframe isolation confirmed, v3 solution documented
This commit is contained in:
@@ -172,7 +172,17 @@
|
||||
- `ResolveOutstandingSteps` → `run state not found` (500 에러, 실제로는 CANCEL 동작)
|
||||
- `sendChatActionMessage`, `executeCascadeAction` → 119개 명령 중 미등록
|
||||
- 존재하는 approval-like 명령: `agentAcceptAllInFile` (코드 diff), `agentAcceptFocusedHunk` (hunk), `acceptCompletion` (자동완성) — 터미널 승인과 무관
|
||||
- **해결**: Renderer DOM Click 구현됨 (미검증). Extension→Renderer HTTP `/trigger-click` 엔드포인트. **AG 완전 재시작 필요** (Reload Window 불가). 실패 시 → `TerminalExecutionPolicy.EAGER` 탐색
|
||||
- **주의**: `agentPanel.focus`도 미등록, `agentSidePanel.focus`만 존재. Renderer가 webview iframe 내부 버튼에 접근 가능한지 미확인
|
||||
- **해결**: ~~Renderer DOM Click 구현됨 (미검증)~~ → **v1 검증 실패: webview iframe 격리 확인**. v3 `deepFindButtons()`로 업그레이드 (iframe contentDocument + webview.executeJavaScript + shadow DOM). AG 완전 재시작 후 DOM-DUMP로 접근 가능 여부 확인 필요
|
||||
- **주의**: `agentPanel.focus`도 미등록, `agentSidePanel.focus`만 존재
|
||||
|
||||
### [2026-03-09] Renderer DOM — webview iframe 격리 확인 + v3 deep traversal
|
||||
- **증상**: Renderer trigger-click이 `document.querySelectorAll('button')`으로 버튼 검색 → Run 버튼 미발견. 감지된 것은 외부 DOM의 trust-level 버튼(`RunAlt+?`)뿐
|
||||
- **원인**: Run/Accept 버튼은 AG 채팅 webview iframe (`vscode-webview://` origin) 안에 렌더링. 외부 workbench DOM (`vscode-file://` origin)에서 cross-origin으로 접근 불가
|
||||
- **해결**: Renderer v3 `deepFindButtons()` 구현:
|
||||
1. Main document 검색 (기존)
|
||||
2. `iframe.contentDocument` 접근 시도 (same-origin이면 성공)
|
||||
3. `<webview>.executeJavaScript()` 접근 시도 (Electron API)
|
||||
4. Shadow DOM 재귀 탐색
|
||||
→ **미검증** (AG 재시작 후 DOM-DUMP 결과 필요)
|
||||
- **주의**: 커뮤니티 auto-accept 확장들은 CDP(Chrome DevTools Protocol)를 사용하지만, 이는 `--remote-debugging-port` 플래그가 필요한 비표준 접근. 먼저 표준 DOM API로 관통 가능한지 확인
|
||||
|
||||
|
||||
Reference in New Issue
Block a user