Coverage for src / lilbee / server / routes / memory.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-06-28 01:01 +0000

1"""Memory route handlers: list, remember, update flags, forget. 

2 

3``GET`` is ``@read_only`` so a read-only session token can list memories; 

4the mutating routes are unmarked so read-only tokens cannot write memory. 

5""" 

6 

7from __future__ import annotations 

8 

9from litestar import delete, get, patch, post 

10 

11from lilbee.server.auth import read_only 

12from lilbee.server.handlers.memory import ( 

13 list_local_memories, 

14 remember_memory, 

15 remove_memory, 

16 update_memory_shared, 

17) 

18from lilbee.server.models import ( 

19 MemoryFlagsResponse, 

20 MemoryListResponse, 

21 MemoryRemoveResponse, 

22 MemorySharedRequest, 

23 RememberRequest, 

24 RememberResponse, 

25) 

26 

27 

28@get("/api/memories") 

29@read_only 

30async def memories_list_route() -> MemoryListResponse: 

31 """List the human's stored memories.""" 

32 return await list_local_memories() 

33 

34 

35@post("/api/memories") 

36async def memories_remember_route(data: RememberRequest) -> RememberResponse: 

37 """Store a fact or preference in the human's memory.""" 

38 return await remember_memory(data.text, data.kind, data.shared) 

39 

40 

41@patch("/api/memories/{memory_id:str}") 

42async def memories_update_route(memory_id: str, data: MemorySharedRequest) -> MemoryFlagsResponse: 

43 """Set a memory's shared-with-agents flag.""" 

44 return await update_memory_shared(memory_id, data.shared) 

45 

46 

47@delete("/api/memories/{memory_id:str}", status_code=200) 

48async def memories_remove_route(memory_id: str) -> MemoryRemoveResponse: 

49 """Delete a memory by id.""" 

50 return await remove_memory(memory_id)