feat(collector): Add Hermes Agent harness via state.db - #95
Conversation
Hermes Agent stores all transcripts in a local SQLite state.db (sessions + messages tables). Add it as a skill-doctor session source: - discover_hermes_databases: HERMES_HOME env, ~/.hermes, or explicit --hermes-home; read-only connections only - parse_hermes_session: normalizes sessions/messages rows to the shared transcript shape; detects skill usage from tool_calls JSON, including explicit skill_view arguments - find_hermes_sessions: epoch-timestamp cutoff filtering, newest first - subagent sessions skipped unless --include-subagents Verified against a live Hermes home: 122 sessions in window, skill detection working (skill-vet, graphify, rtk-token-compressor observed).
|
Every PR must be linked to a same-repo issue before Oz can review it. Next step: open or find a same-repo issue describing this change, then link it to this PR by adding Powered by Oz |
There was a problem hiding this comment.
Every PR must be linked to a same-repo issue before Oz can review it.
Next step: open or find a same-repo issue describing this change, then link it to this PR by adding Closes #123 to the PR description (or using the "Development" sidebar on GitHub). A maintainer will mark the issue ready-to-implement when it is ready. Once it is marked, comment /warp-agent-review to re-trigger review.
Powered by Oz
What
Adds Hermes Agent as a skill-doctor session source, closing the gap where Hermes users' local conversations were invisible to /skill-doctor.
Why
skill-doctor reads local transcripts to grade agent skills, but Hermes Agent stores everything in a local SQLite
state.db(tables:sessions,messages) instead of JSONL files. The collector ignored this source entirely.How
discover_hermes_databases()— findsstate.dbunderHERMES_HOME,~/.hermes, or explicit--hermes-homeparse_hermes_session()— normalizessessions+messagesrows into the shared transcript shape; detects skill usage from tool-call arguments JSON (incl. explicitskill_viewpayloads)find_hermes_sessions()— epoch-seconds cutoff filter, newest-first orderingparent_session_id) skipped unless--include-subagentsmode=ro+query_onlypragma) — collector never writes--harness hermeschoice +--hermes-homeflag; docs updated (supported-harnesses.md)Testing
28 passed(was 25)Follows the existing per-harness collector pattern (Warp SQLite collector as template).
Closes #96