agent memory

This commit is contained in:
Roger
2026-10-02 21:00:50 +02:00
parent f9a11bf4ca
commit e9e27d1101
40 changed files with 4407 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
from memory import MemoryStore
store: MemoryStore | None = None
session_id: str | None = None
def configure_memory(memory_store: MemoryStore, active_session_id: str) -> None:
global store, session_id
store = memory_store
session_id = active_session_id
def read_memory(scope: str) -> str:
return _get_store().read_notes(scope)
def append_memory(scope: str, content: str) -> str:
return _get_store().append_notes(scope, content)
def list_sessions() -> str:
sessions = _get_store().list_sessions()
if not sessions:
return "No saved sessions."
return "\n".join(
f"{item['id']} | {item['updated_at']} | {item['summary'][:160] or '(no summary)'}"
for item in sessions
)
def search_sessions(query: str) -> str:
sessions = _get_store().search_sessions(query)
if not sessions:
return "No matching sessions."
return "\n".join(
f"{item['id']} | {item['updated_at']} | {item['summary'][:500] or '(no summary)'}"
for item in sessions
)
def read_session(session_id: str) -> str:
session = _get_store().load_session(session_id)
transcript = "\n".join(
f"{message.get('role', 'unknown')}: {message.get('content') or '[tool call]'}"
for message in session.get("messages", [])
)
return f"Summary:\n{session.get('summary') or '(no summary)'}\n\nTranscript:\n{transcript[:12000]}"
def write_session_summary(summary: str) -> str:
if session_id is None:
raise RuntimeError("Memory has not been configured.")
return _get_store().write_summary(session_id, summary)
def _get_store() -> MemoryStore:
if store is None:
raise RuntimeError("Memory has not been configured.")
return store