v1.0.1 - Hermes Registration Fix
Open Second Brain v1.0.1 - Hermes Registration Fix
A fresh Hermes gateway now registers the Open Second Brain memory provider with its full curated tool set - "Memory provider 'open-second-brain' registered (10 tools)" - instead of zero, so every brain_* call from the model routes through the memory manager rather than dying as "Unknown tool". Hermes builds its memory-tool routing table once, at provider registration, before any provider initializes, and never rebuilds it; the provider now serves vendored static copies of its curated tool schemas through that window and hands back to live tools/list schemas the moment its o2b mcp bridge is up.
What ships
- Static schema fallback at registration.
get_tool_schemas()returns vendored (name, description, inputSchema) copies of the 10 curated MEMORY_TOOLS whenever the bridge is not available - beforeinitialize()runs, and also when a live listing fails after a degraded start. Once the bridge is up, livetools/listschemas win exactly as before. Thehandle_tool_call()initialization guard is untouched: by the time the model can call a tool, initialization has already happened. - Anti-drift guard. The vendored copies in
plugins/hermes/_schemas.pyare verbatim projections of the live server'stools/list, andtests/python/test_static_schemas.pycompares them field by field against a liveo2b mcpin CI - a schema change in the TypeScript core that is not re-vendored fails the build instead of shipping stale copies. The test skips with a visible reason when the Bun runtime is unavailable, so unit runs without the toolchain stay green. - Hermes-ordering regression tests. The exact gateway sequence - routing table built from
get_tool_schemas()pre-init,initialize()afterwards, tool call dispatched through that table - is now an end-to-end test, alongside pre/post-init name-set identity and listing-failure fallback cases. - Install doc verify step.
install/hermes.mddocuments the expected registration log line:(10 tools)is the health signal,(0 tools)means a version older than 1.0.1.
Process wins
- The gateway log itself becomes the verification surface - no tool call needed to detect a dead memory surface.
- The fix lives entirely on the provider side: no Hermes patch required, no public API change (1.0.0 freeze respected), no new dependencies in the stdlib-only shim.
- Lifecycle hooks (prefetch, sync_turn, system prompt block, pre-compress, session end) were never affected and are unchanged.
- Quality record: Python 70/70 (61 baseline + 9 new, no regressions), anti-drift green against the live server, TypeScript 4248/0, tsc clean, an independent reviewer pass with zero blocking findings, and a real-environment smoke test reproducing the exact Hermes registration ordering.
Notes
- Patch release: no behavior change for any non-Hermes runtime; the static copies add a few kilobytes to the shim and zero I/O at gateway boot.
- A follow-up proposal for upstream hermes-agent (rebuild
_tool_to_providerafterinitialize_all(), or resolve lazily at dispatch) is documented in the task; with it, providers with init-time discovery would work without vendored schemas. - Release image: terminal-style overview (animated GIF in this body; static PNG and the SVG source attached as assets).
