Skip to content

feat(collector): Add Hermes Agent harness via state.db - #95

Open
ruslanlap wants to merge 1 commit into
warpdotdev:mainfrom
ruslanlap:feat/hermes-harness
Open

feat(collector): Add Hermes Agent harness via state.db#95
ruslanlap wants to merge 1 commit into
warpdotdev:mainfrom
ruslanlap:feat/hermes-harness

Conversation

@ruslanlap

@ruslanlap ruslanlap commented Sep 3, 2026

Copy link
Copy Markdown

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() — finds state.db under HERMES_HOME, ~/.hermes, or explicit --hermes-home
  • parse_hermes_session() — normalizes sessions+messages rows into the shared transcript shape; detects skill usage from tool-call arguments JSON (incl. explicit skill_view payloads)
  • find_hermes_sessions() — epoch-seconds cutoff filter, newest-first ordering
  • Subagent sessions (parent_session_id) skipped unless --include-subagents
  • Read-only SQLite connections (mode=ro + query_only pragma) — collector never writes
  • --harness hermes choice + --hermes-home flag; docs updated (supported-harnesses.md)

Testing

  • 3 new unit tests (parse stats/skills, subagent skip, cutoff filter)
  • Full suite: 28 passed (was 25)
  • Live verification against a real Hermes home: 122 sessions in window, skill detection confirmed (skill-vet, graphify, rtk-token-compressor observed in transcripts)

Follows the existing per-harness collector pattern (Warp SQLite collector as template).

Closes #96

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).
@warp-for-oss

warp-for-oss Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

@ruslanlap

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

@warp-for-oss warp-for-oss Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ruslanlap

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

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

skill-doctor: support Hermes Agent sessions (state.db)

1 participant