feat(matrix): add adapter baseline and platform-aware command hints
This commit is contained in:
parent
bcdaea5143
commit
82eb711844
20 changed files with 1127 additions and 3 deletions
50
adapter/matrix/store.py
Normal file
50
adapter/matrix/store.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from core.store import StateStore
|
||||
|
||||
ROOM_META_PREFIX = "matrix_room:"
|
||||
USER_META_PREFIX = "matrix_user:"
|
||||
ROOM_STATE_PREFIX = "matrix_state:"
|
||||
SKILLS_MSG_PREFIX = "matrix_skills_msg:"
|
||||
|
||||
|
||||
async def get_room_meta(store: StateStore, room_id: str) -> dict | None:
|
||||
return await store.get(f"{ROOM_META_PREFIX}{room_id}")
|
||||
|
||||
|
||||
async def set_room_meta(store: StateStore, room_id: str, meta: dict) -> None:
|
||||
await store.set(f"{ROOM_META_PREFIX}{room_id}", meta)
|
||||
|
||||
|
||||
async def get_user_meta(store: StateStore, matrix_user_id: str) -> dict | None:
|
||||
return await store.get(f"{USER_META_PREFIX}{matrix_user_id}")
|
||||
|
||||
|
||||
async def set_user_meta(store: StateStore, matrix_user_id: str, meta: dict) -> None:
|
||||
await store.set(f"{USER_META_PREFIX}{matrix_user_id}", meta)
|
||||
|
||||
|
||||
async def get_room_state(store: StateStore, room_id: str) -> str:
|
||||
data = await store.get(f"{ROOM_STATE_PREFIX}{room_id}")
|
||||
return data["state"] if data else "idle"
|
||||
|
||||
|
||||
async def set_room_state(store: StateStore, room_id: str, state: str) -> None:
|
||||
await store.set(f"{ROOM_STATE_PREFIX}{room_id}", {"state": state})
|
||||
|
||||
|
||||
async def get_skills_message_id(store: StateStore, room_id: str) -> str | None:
|
||||
data = await store.get(f"{SKILLS_MSG_PREFIX}{room_id}")
|
||||
return data["event_id"] if data else None
|
||||
|
||||
|
||||
async def set_skills_message_id(store: StateStore, room_id: str, event_id: str) -> None:
|
||||
await store.set(f"{SKILLS_MSG_PREFIX}{room_id}", {"event_id": event_id})
|
||||
|
||||
|
||||
async def next_chat_id(store: StateStore, matrix_user_id: str) -> str:
|
||||
meta = await get_user_meta(store, matrix_user_id) or {}
|
||||
index = int(meta.get("next_chat_index", 1))
|
||||
meta["next_chat_index"] = index + 1
|
||||
await set_user_meta(store, matrix_user_id, meta)
|
||||
return f"C{index}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue