Files
the-nexus/nexus/evennia_event_adapter.py
Alexander Whitestone 8ead4cd13f
Some checks failed
CI / validate (pull_request) Failing after 4s
feat: add thin Evennia to Nexus event adapter
2026-03-28 16:02:27 -04:00

67 lines
2.2 KiB
Python

"""Thin Evennia -> Nexus event normalization helpers."""
from __future__ import annotations
from datetime import datetime, timezone
def _ts(value: str | None = None) -> str:
return value or datetime.now(timezone.utc).isoformat()
def session_bound(hermes_session_id: str, evennia_account: str = "Timmy", evennia_character: str = "Timmy", timestamp: str | None = None) -> dict:
return {
"type": "evennia.session_bound",
"hermes_session_id": hermes_session_id,
"evennia_account": evennia_account,
"evennia_character": evennia_character,
"timestamp": _ts(timestamp),
}
def actor_located(actor_id: str, room_key: str, room_name: str | None = None, timestamp: str | None = None) -> dict:
return {
"type": "evennia.actor_located",
"actor_id": actor_id,
"room_id": room_key,
"room_key": room_key,
"room_name": room_name or room_key,
"timestamp": _ts(timestamp),
}
def room_snapshot(room_key: str, title: str, desc: str, exits: list[dict] | None = None, objects: list[dict] | None = None, occupants: list[dict] | None = None, timestamp: str | None = None) -> dict:
return {
"type": "evennia.room_snapshot",
"room_id": room_key,
"room_key": room_key,
"title": title,
"desc": desc,
"exits": exits or [],
"objects": objects or [],
"occupants": occupants or [],
"timestamp": _ts(timestamp),
}
def command_issued(hermes_session_id: str, actor_id: str, command_text: str, timestamp: str | None = None) -> dict:
return {
"type": "evennia.command_issued",
"hermes_session_id": hermes_session_id,
"actor_id": actor_id,
"command_text": command_text,
"timestamp": _ts(timestamp),
}
def command_result(hermes_session_id: str, actor_id: str, command_text: str, output_text: str, success: bool = True, timestamp: str | None = None) -> dict:
return {
"type": "evennia.command_result",
"hermes_session_id": hermes_session_id,
"actor_id": actor_id,
"command_text": command_text,
"output_text": output_text,
"success": success,
"timestamp": _ts(timestamp),
}