diff --git a/docs/devlog/2026-04-10.md b/docs/devlog/2026-04-10.md index a0f4f74..9f8de9f 100644 --- a/docs/devlog/2026-04-10.md +++ b/docs/devlog/2026-04-10.md @@ -5,4 +5,5 @@ | NNN | HH:MM | 작업 설명 | 커밋해시 | 완료 방면 | |---|---|---|---|---| | 001 | 15:53 | Gravity Bridge AI 응답 텍스트가 누락되는 버그 픽스 (extractPlannerText 적용 및 Nested 조회 추가) | TBD | ✅ | -| 002 | 16:05 | Gravity Bridge 빠른 응답 누락 오류 해결 (IDLE-to-IDLE 패스 로직 완화) | TBD | ✅ | \ No newline at end of file +| 002 | 16:05 | Gravity Bridge 빠른 응답 누락 오류 해결 (IDLE-to-IDLE 패스 로직 완화) | TBD | ✅ || 003 | 16:12 | [Bridge] DOM Observer Ž (PATS Ȱȭ) ڵ ˸ | TBD | ? | + diff --git a/docs/devlog/entries/20260410-003.md b/docs/devlog/entries/20260410-003.md new file mode 100644 index 0000000..c6bf440 --- /dev/null +++ b/docs/devlog/entries/20260410-003.md @@ -0,0 +1,15 @@ +# [Bridge] Disable DOM Observer Proactive Pending to Fix Empty Bots + +- **시간**: 2026-04-10 16:12 +- **Commit**: TBD +- **Vikunja**: TBD + +## 문제 원인 +- 디스코드에 Running 1 comman d 나 내용 없는 Allow 가 반복적으로 전송되는 문제. +- 원인은 v3 DOM Observer 스크립트가 Native UI에서 발생시키는 빈 껍데기 알림(POST /pending)들이, 정상적으로 본문 정보를 모두 추출해 기다리고 있는 step-probe.ts의 완벽한 Pending을 덮어씌우거나 먼저 처리되어버렸기 때문임. +- 단어 경계(\b) 정규식 필터조차 VS Code 렌더링 시 노드 줄바꿈 이슈 등으로 인해 완벽한 방어가 불가능했음. + +## 해결 방법 +- observer-script.ts에서 버튼 텍스트를 감지해 능동적으로 Pending을 생성하는 기능(PATS 배열)을 **전면 비활성화(배열 비움)**. +- 이로써, 오직 100% 신뢰 가능한 SDK RPC(step-probe.ts)만이 대기 상태(WAITING)와 명령어 상세 정보를 포착해 Pending을 생성함. +- DOM Observer는 브릿지가 보내는 /trigger-click 폴링 명령어를 받아 실제 물리 클릭만 수행하는 '수동적 렌더러' 역할로 격하됨. diff --git a/extension/src/observer-script.ts b/extension/src/observer-script.ts index 6873cad..432ce79 100644 --- a/extension/src/observer-script.ts +++ b/extension/src/observer-script.ts @@ -275,12 +275,9 @@ export function generateApprovalObserverScript(_port: number): string { // ONLY positive triggers should initiate a pending request group. // Negative/secondary buttons (Deny, Reject, Dismiss) will be collected as siblings. var PATS=[ - {re:/^(?:Always\s*)?Run\b/i, type:'terminal_command'}, - {re:/^(?:Always\s*)?Accept(?: all)?\b/i, type:'diff_review'}, - {re:/^(?:Always\s*)?Accept\b/i, type:'agent_step'}, - {re:/^(?:Always\s*)?Allow\b/i, type:'permission'}, - {re:/^(?:Always\s*)?Approve\b/i, type:'agent_step'}, - {re:/^Retry\b/i, type:'error_recovery'}, + // ALL PATS removed to prevent UI-level False Positives and "Empty Body" payloads. + // 100% of pending detection is now handled by step-probe.ts which has full RPC context. + // The DOM observer remains strictly for 'trigger-click' (executing physical clicks on fallback). ]; // ALL actionable button patterns (for grouping siblings in same container)