Files
gravity_control/docs/devlog/entries/20260416-001.md

2.1 KiB

v16 터미널 출력 필터 + v15 Stale LS 자동복구 + Heartbeat Probe (v0.5.50)

  • 시간: 2026-04-16 04:52~05:00
  • Commit: 7ade31e
  • Vikunja: #619 → 진행중

결정 사항

터미널 출력(stdout)이 명령어로 추출되는 버그 수정 (v16)

증상: Discord에 cmd="No extension.log found", cmd="AG CLI not found...", cmd="Log found: C:\..." 등 터미널의 출력 텍스트가 명령어로 전송됨.

원인: Observer의 extractContextFromNearby()가 code 블록 2개를 찾음:

  1. ci=0: 프롬프트+명령어 (…\gravity_control > $log = ...) → JUNK_CODE_RE로 스킵
  2. ci=1: 터미널 출력 (No extension.log found) → 유효한 code로 판단 → description에 포함

http-bridge enrichment에서 description에 prompt marker(>)가 없으면 rawDesc 전체를 enrichedCmd로 채택하여 Discord로 전송.

해결: promptMatch 실패 시 (description에 > 없음) → 터미널 OUTPUT으로 판단하여 즉시 필터. 실제 명령어는 항상 …\project > command 형식의 프롬프트를 포함.

step-probe v15 — Stale LS 자동감지 + Heartbeat Probe

  • Stale LS: 모든 세션이 5분 이상 오래되면 주기적으로 fixLSConnection() 시도
  • Heartbeat Probe: 매 10 polls마다 GetCascadeTrajectorySteps를 직접 호출하여 summary API가 frozen일 때도 step 변화 감지
  • fixLSConnection() fallback: --workspace_id 없는 LS 프로세스(AG 재시작 직후 주로 발생)도 fallback으로 매칭

검증 결과

  • Observer v14 동작 중 — POST /pending 신호 정상
  • Generic button 필터 작동 — "Always run" desc="Always run" → 필터됨
  • Command enrichment 작동 — "Always run" → "git diff --stat" 등 정상 추출
  • 다수 명령어(git, cmd /c, Get-Content, code, Remove-Item 등) 정상 추출 확인
  • 터미널 출력 텍스트 누출 버그 발견 → v16에서 수정

미완료

  • AG 재시작 후 v0.5.50 실제 동작 확인 필요
  • v15 stale LS 자동복구 + heartbeat probe 실동작 확인 (장시간 세션 필요)