"""Prepend new known-issue entry to known-issues.md""" import sys ki_path = r"c:\Users\Variet-Worker\Desktop\gravity_control\.agents\references\known-issues.md" new_entry = """### [2026-04-12] [SDK/DOM] AG Native 세션은 Cascade SDK API에 등록되지 않음 — DOM이 유일한 데이터 소스 - **증상**: AG Native 세션에서 Discord 릴레이로 AI 응답이 전혀 전달되지 않고, 대신 UI 노이즈(`content_copy`, `Always run`, `keyboard_arrow_up`, `Cancel`)가 전송됨 - **원인 1 (SDK)**: `GetCascadeTrajectorySteps(cascadeId=세션ID)` → `500 trajectory not found`. `GetDiagnostics` → `404`. AG Native 세션은 Cascade trajectory API에 전혀 등록되지 않는 별도 시스템 - **원인 2 (DOM)**: `observer-script.ts` v6의 `scanChatBodies()`가 `.text-ide-message-block-bot-color` 컨테이너의 `textContent`를 통째로 가져오면서 내부 버튼/아이콘 텍스트까지 포함 - **해결**: `observer-script.ts` v7로 전면 재설계: 1. `[data-testid="conversation-view"]` + `[data-step-index]` 기반 step-aware 파싱 2. `extractCleanStepText()`: 클론 후 button/svg/icon 엘리먼트 제거 → 마크다운 텍스트만 추출 3. `extractStepContext()`: `getStepContainer()` → step 헤더 + code 블록만 추출 4. `NOISE_RE`: Material icon 이름, 버튼 레이블, UI 텍스트 전면 차단 5. 최초 `conversation-view` 감지 시 DOM 구조 자동 덤프 (`/dump-html`) - **주의**: SDK 경로(step-probe RT-CAPTURE)는 AG Native에서 사용 불가. DOM이 유일한 콘텐츠 소스이므로 AG UI 업데이트 시 `data-testid`/`data-step-index` 속성 존재 여부 반드시 확인 필요 """ with open(ki_path, 'rb') as f: raw = f.read() try: content = raw.decode('utf-8') except: content = raw.decode('cp949', errors='replace') # Find the "---" separator and insert after it marker = "---\n" idx = content.find(marker, content.find("archive")) if idx >= 0: insert_pos = idx + len(marker) + 1 # after ---\n\n # Find actual end of marker section after_marker = content[idx + len(marker):] # Insert new entry new_content = content[:idx + len(marker)] + "\n" + new_entry + after_marker with open(ki_path, 'w', encoding='utf-8') as f: f.write(new_content) print("OK: known-issue entry added") else: print("ERROR: could not find insertion point")