feat: implement Hermes session manager with SQLite + JSONL support (Phase 6)

- Add hermes.rs session provider with dual-source scanning:
  SQLite (state.db) as primary, JSONL transcripts as fallback
- Dynamic schema discovery via PRAGMA table_info for SQLite resilience
- Use read_head_tail_lines for efficient JSONL metadata extraction
  (head 30 lines for metadata, tail 10 for last_active_at)
- Support both flat and nested JSONL message formats
- Add SQLite session loading and transactional deletion
- Register hermes in parallel session scan (thread::scope)
- Add "hermes" to frontend ProviderFilter type
- 7 unit tests covering JSONL parsing, SQLite source parsing, deletion
This commit is contained in:
Jason
2026-04-15 21:17:36 +08:00
parent 240969d8c7
commit e8953c286f
4 changed files with 621 additions and 7 deletions
@@ -62,7 +62,8 @@ type ProviderFilter =
| "claude"
| "opencode"
| "openclaw"
| "gemini";
| "gemini"
| "hermes";
export function SessionManagerPage({ appId }: { appId: string }) {
const { t } = useTranslation();