fix: bind server/adapter contextvars per WS task; fix session pre-create call
Two live-deployment bugs found during end-to-end verification: 1. server.py: ContextVars set in adapter.connect() do not propagate into aiohttp handler tasks, so hermes_bridge._current_server()/_current_adapter() resolved to None inside message handlers (conversation.list returned empty snapshots, broadcast fan-out and notification paths silently no-oped). Bind both contextvars at the top of _handle_ws — the per-connection task owns the context for all its handler dispatch and agent-thread bridges. 2. hermes_bridge.py: create_conversation passed two extra positional args to SessionStore.get_or_create_session() (source, False, False) — the actual signature is (source, force_new=False). TypeError was swallowed by the guard, so pre-creating an empty Hermes session at conversation.create always failed; sessions were only created on first message. Verified live against the running gateway: full 11-point E2E (auth 401, hello/ready, conversation list/create/delete with persistence, chat.send round-trip through the agent, run lifecycle events, models.current, reasoning.current). 46/46 unit tests pass.
This commit is contained in:
@@ -134,7 +134,7 @@ async def create_conversation(server: Any, name: Optional[str]) -> str:
|
||||
if store is not None:
|
||||
try:
|
||||
await asyncio.to_thread(
|
||||
store.get_or_create_session, _source_for(cid), False, False)
|
||||
store.get_or_create_session, _source_for(cid))
|
||||
if name:
|
||||
await rename_conversation(cid, name)
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user