Skip to content

feat(transcript): read Hermes conversations from state.db - #31

Merged
tak-bro merged 1 commit into
mainfrom
feat/hermes-transcript
Nov 1, 2026
Merged

tak-bro merged 1 commit into
mainfrom
feat/hermes-transcript

Conversation

@tak-bro

@tak-bro tak-bro commented Nov 1, 2026

Copy link
Copy Markdown
Member

요약

hermes 패널의 대화(프롬프트·답·도구 호출/결과)를 hwip 세션 기록(타임라인)에 싣는다. hermes 는 transcript 파일이 없고 ~/.hermes/state.db 의 messages 테이블에 쓰므로, opencode 와 같은 모양의 SQLite TranscriptReader + projector 를 추가하고 hermes 행에 연결했다.

  • src/hermes-transcript.ts 신규: <db>#<sessionId> 경로, 읽기 전용 SQL(id 정규식 검증·active=1·tool_calls 를 SQL 에서 축약), hermesLinesOf, readHermesTranscript(DB stamp·1초 간격·messages.id 커서), projectHermesEntries.
  • command/cmd 인자는 이벤트에 싣지 않는다(path·pattern·url 류만 target).
  • src/remote-agents.ts: hermes 행에 resolveTranscript(기존 detectHermesResumeId 재사용)·projectTranscript·readTranscript.
  • README 세션 기록 표에 hermes 행.
  • Ovis 코드는 옮기지 않았다(모양만 참고) — MIT 고지 불필요.

검증

  • npx vitest run --exclude src/http-proxy.test.ts: 209 파일 5597 passed (http-proxy 8건은 main 에서도 실패하는 기존 문제). tsc --noEmit 통과.
  • 이 머신 실제 ~/.hermes/state.db 에 hermesRowsSql 을 돌려 행→이벤트 변환 확인.
  • 전제 확인: ① sqlite3 -readonly 읽기 OK ② sessions.id = messages.session_id(FK) ③ hermes_state.py 에 messages INSERT 만 있고 content UPDATE 없음(UPDATE 는 display_*·active/compacted) → id 커서 안전.

남은 것

  • tool_result 는 항상 ok: true(스키마에 오류 신호 없음). 대용량 tool 출력의 줄 수 계산이 SQL 전체 길이를 훑는다(리뷰 Nice-to-have).
  • 로컬 DB 에 tool 행이 없어 tool_calls 경로는 합성 행 테스트만.

Hermes keeps no transcript file; messages live in ~/.hermes/state.db. Add a SQLite-backed TranscriptReader and projector (same shape as opencode's) and wire them onto the hermes agent row.
@tak-bro tak-bro self-assigned this Nov 1, 2026
@tak-bro
tak-bro marked this pull request as ready for review November 1, 2026 02:01
@tak-bro
tak-bro merged commit 108d764 into main Nov 1, 2026
4 checks passed
@tak-bro
tak-bro deleted the feat/hermes-transcript branch November 1, 2026 02:01
@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 0.1.16 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant