1.8 KiB
1.8 KiB
First Light Report — Evennia to Nexus Bridge
Issue:
- #727 Feed Evennia room/command events into the Nexus websocket bridge
What was implemented:
nexus/evennia_ws_bridge.py— reads Evennia telemetry JSONL and publishes normalized Evennia→Nexus events into the local websocket bridgeEVENNIA_NEXUS_EVENT_PROTOCOL.md— canonical event family contractnexus/evennia_event_adapter.py— normalization helpers (already merged in #725)nexus/perception_adapter.pysupport forevennia.actor_located,evennia.room_snapshot, andevennia.command_result- tests locking the bridge parsing and event contract
Proof method:
- Start local Nexus websocket bridge on
ws://127.0.0.1:8765 - Open a websocket listener
- Replay a real committed Evennia example trace from
timmy-home - Confirm normalized events are received over the websocket
Observed received messages (excerpt):
[
{
"type": "evennia.session_bound",
"hermes_session_id": "world-basics-trace.example",
"evennia_account": "Timmy",
"evennia_character": "Timmy"
},
{
"type": "evennia.command_issued",
"actor_id": "timmy",
"command_text": "look"
},
{
"type": "evennia.command_result",
"actor_id": "timmy",
"command_text": "look",
"output_text": "Chapel A quiet room set apart for prayer, conscience, grief, and right alignment...",
"success": true
}
]
Interpretation:
- Evennia world telemetry can now be published into the Nexus websocket bridge without inventing a second world model.
- The bridge is thin: it translates and forwards.
- Nexus-side perception code can now consume these events as part of Timmy's sensorium.
Why this matters: This is the first live seam where Timmy's persistent Evennia place can begin to appear inside the Nexus-facing world model.