docs: add approval strategy decision chain to known-issues (handoff clarity)
This commit is contained in:
@@ -184,5 +184,44 @@
|
||||
3. `<webview>.executeJavaScript()` 접근 시도 (Electron API)
|
||||
4. Shadow DOM 재귀 탐색
|
||||
→ **미검증** (AG 재시작 후 DOM-DUMP 결과 필요)
|
||||
- **주의**: 커뮤니티 auto-accept 확장들은 CDP(Chrome DevTools Protocol)를 사용하지만, 이는 `--remote-debugging-port` 플래그가 필요한 비표준 접근. 먼저 표준 DOM API로 관통 가능한지 확인
|
||||
- **주의**: CDP(Chrome DevTools Protocol)는 **사용자 결정에 의해 명시적으로 거부됨** (`--remote-debugging-port` 필요, 비표준 접근). 표준 DOM API/Electron API 범위 내에서만 해결할 것
|
||||
|
||||
### [2026-03-09] Deep Inspect HTTP Endpoint — curl로 DOM 분석 트리거
|
||||
- **증상**: AG DevTools 콘솔에 붙여넣기 불가 (Chromium 보안 정책)
|
||||
- **원인**: Electron 렌더러 DevTools에서 `allow pasting`이 SyntaxError 발생 (`Unexpected identifier 'pasting'`)
|
||||
- **해결**: Extension HTTP bridge에 `/deep-inspect` 엔드포인트 추가. `curl.exe http://127.0.0.1:34332/deep-inspect`로 bridge→renderer→재귀 DOM 분석→결과 JSON 반환. 결과는 `~/.gemini/antigravity/bridge/deep-inspect-result.json`에도 저장됨
|
||||
- **주의**: 시작 3초 후 자동 실행 + curl로 재트리거 가능. renderer가 2초마다 `/deep-inspect-trigger` 폴링
|
||||
|
||||
---
|
||||
|
||||
## 승인 전략 결정 체인 (다음 세션 필독)
|
||||
|
||||
> **이 섹션은 2026-03-08~09 전체 세션의 시행착오를 요약합니다.**
|
||||
> **다음 세션은 이미 거부된 접근을 다시 시도하지 마세요.**
|
||||
|
||||
### ❌ 시도 후 거부된 접근 (재시도 금지)
|
||||
|
||||
| # | 접근 | 결과 | 거부 사유 |
|
||||
|---|------|------|-----------|
|
||||
| 1 | LS RPC `HandleCascadeUserInteraction` | `socket hang up` | AG 빌드에서 핸들러 미구현 |
|
||||
| 2 | LS RPC `ResolveOutstandingSteps` | CANCEL 동작 (승인이 아님) | 명칭과 달리 step을 취소함 |
|
||||
| 3 | VS Code 7개 승인 명령 (`terminalCommand.run` 등) | `command not found` | AG 런타임에 미등록 |
|
||||
| 4 | 키보드 시뮬레이션 (`type {Enter}`) | 빈 메시지 전송 | Chat input에 캡처됨 |
|
||||
| 5 | `sendChatActionMessage` / `executeCascadeAction` | 미등록 | 119개 명령에 없음 |
|
||||
| 6 | pywinauto (OS 레벨) | 사용자 결정 폐기 | 크로스플랫폼 불가, 창 겹침 문제 |
|
||||
| 7 | CDP (Chrome DevTools Protocol) | **사용자 명시적 거부** | 비표준, `--remote-debugging-port` 필요 |
|
||||
| 8 | Renderer v1 DOM Click (flat scan) | Run 버튼 미발견 | webview iframe 격리 |
|
||||
|
||||
### ✅ 현재 진행 중인 접근
|
||||
|
||||
| # | 접근 | 상태 | 다음 단계 |
|
||||
|---|------|------|-----------|
|
||||
| 1 | **Renderer v3 Deep DOM Traversal** | 구현 완료, **미검증** | AG 재시작 → `/deep-inspect` 결과 확인 |
|
||||
| 2 | `<webview>.executeJavaScript()` | v3에 포함, **미검증** | 위 결과에서 `hasExecJS=true`이면 유력 |
|
||||
| 3 | TerminalExecutionPolicy.EAGER (Turbo) | 미시도, **최후 수단** | 통제권 포기이므로 사용자 승인 필요 |
|
||||
|
||||
### 🔑 핵심 전제
|
||||
- Run/Accept 버튼은 **`vscode-webview://` origin의 격리된 iframe** 안에 있음
|
||||
- 외부 workbench DOM에서 `querySelector`로 접근 **불가** (cross-origin)
|
||||
- `<webview>.executeJavaScript()`가 **유일한 표준 관통 경로** (Electron API)
|
||||
- AG 패치 후 **반드시 풀 프로세스 재시작** 필요 (Reload Window 불충분)
|
||||
|
||||
Reference in New Issue
Block a user