The Hermes Agent adapter (src/adapters/hermes.ts) is derived from Hermes's source and validated against a synthetic fixture built to it (fixtures/hermes/ (generate/ builds state.db, the live copy and the golden)). It has not been run against a real Hermes Agent session — the adapter header says so. If you use Hermes Agent, this is the most useful thing you can do for the adapter, and it needs no code unless the real log disagrees.
Steps
npm install -g agitsh.
- agit import ~/.hermes/state.db --thread — the log lives at
~/.hermes/state.db (SQLite; agit reads it without node:sqlite).
- On what it imported:
agit ls, agit show <id>, agit verify <id>, agit replay <id> --timeline.
Report
- Hermes Agent version.
- The import's summary line: events written, and the skipped counters by name — every record the adapter could not map is counted by its native type, never guessed at. An unmapped type that carries something a reader would want is the finding.
- Whether what you see matches what Hermes Agent did: message order, tool calls paired with their results,
write_file verified only when Hermes's own bytes_written matches the content, patch replace diffs applied, cost aggregated per model, totals held until the end under a live share.
agit verify result, and whether a second agit import of the same file says "already imported" (byte-identical re-import).
Paste sanitized snippets (keys and shapes, not content) — a session log holds whatever the agent saw — and never attach a raw one. If the real log contradicts the adapter, the adapter is what gets fixed, not the fixture (CONTRIBUTING.md); tests go in test/hermes-adapter.test.ts (and test/live-db.test.ts for the live share).
The Hermes Agent adapter (src/adapters/hermes.ts) is derived from Hermes's source and validated against a synthetic fixture built to it (fixtures/hermes/ (
generate/buildsstate.db, the live copy and the golden)). It has not been run against a real Hermes Agent session — the adapter header says so. If you use Hermes Agent, this is the most useful thing you can do for the adapter, and it needs no code unless the real log disagrees.Steps
npm install -g agitsh.~/.hermes/state.db(SQLite; agit reads it withoutnode:sqlite).agit ls,agit show <id>,agit verify <id>,agit replay <id> --timeline.Report
write_fileverified only when Hermes's ownbytes_writtenmatches the content,patchreplace diffs applied, cost aggregated per model, totals held until the end under a live share.agit verifyresult, and whether a secondagit importof the same file says "already imported" (byte-identical re-import).Paste sanitized snippets (keys and shapes, not content) — a session log holds whatever the agent saw — and never attach a raw one. If the real log contradicts the adapter, the adapter is what gets fixed, not the fixture (CONTRIBUTING.md); tests go in test/hermes-adapter.test.ts (and test/live-db.test.ts for the live share).