AQIT
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
session_memory_store.py
Go to the documentation of this file.
1
# Copyright (c) 2025-present Aquin Labs Private Limited. All Rights Reserved.
2
# This file is part of the Aquin Engine. Unauthorized copying, modification,
3
# distribution, or use of this file, via any medium, is strictly prohibited.
4
# Proprietary and confidential. See LICENSE for terms.
5
6
"""Session memory — local disk + cloud (with event replay fallback)."""
7
from
__future__
import
annotations
8
9
import
json
10
from
pathlib
import
Path
11
from
typing
import
Any
12
13
_MEMORY_DIR = Path.home() /
".aquin"
/
"session_memory"
14
15
16
def
_memory_path
(session_id: str) -> Path:
17
safe = session_id.replace(
"/"
,
"_"
)
18
return
_MEMORY_DIR / f
"{safe}.json"
19
20
21
def
load_local_memory
(session_id: str) -> dict[str, Any]:
22
if
not
session_id:
23
return
{}
24
path =
_memory_path
(session_id)
25
if
not
path.is_file():
26
return
{}
27
try
:
28
data = json.loads(path.read_text(encoding=
"utf-8"
))
29
return
data
if
isinstance(data, dict)
else
{}
30
except
Exception:
31
return
{}
32
33
34
def
save_local_memory
(session_id: str, memory: dict[str, Any]) ->
None
:
35
if
not
session_id:
36
return
37
_MEMORY_DIR.mkdir(parents=
True
, exist_ok=
True
)
38
_memory_path
(session_id).write_text(
39
json.dumps(memory, ensure_ascii=
False
, default=str),
40
encoding=
"utf-8"
,
41
)
42
43
44
def
patch_local_memory
(session_id: str, key: str, value: Any) -> dict[str, Any]:
45
mem =
load_local_memory
(session_id)
46
mem[key] = value
47
save_local_memory
(session_id, mem)
48
return
mem
49
50
51
def
memory_from_sync_events
(events: list[Any]) -> dict[str, Any]:
52
"""Replay session.meta memory patches from stored sync events."""
53
mem: dict[str, Any] = {}
54
for
ev
in
events:
55
if
not
isinstance(ev, dict):
56
continue
57
event_type = ev.get(
"event_type"
)
or
ev.get(
"type"
)
58
if
event_type !=
"session.meta"
:
59
continue
60
payload = ev.get(
"payload"
)
or
{}
61
patch = payload.get(
"patch"
)
if
isinstance(payload, dict)
else
{}
62
if
not
isinstance(patch, dict):
63
continue
64
chunk = patch.get(
"memory"
)
65
if
isinstance(chunk, dict):
66
mem.update(chunk)
67
return
mem
aquin.engine.session_memory_store._memory_path
Path _memory_path(str session_id)
Definition
session_memory_store.py:20
aquin.engine.session_memory_store.save_local_memory
None save_local_memory(str session_id, dict[str, Any] memory)
Definition
session_memory_store.py:38
aquin.engine.session_memory_store.patch_local_memory
dict[str, Any] patch_local_memory(str session_id, str key, Any value)
Definition
session_memory_store.py:48
aquin.engine.session_memory_store.memory_from_sync_events
dict[str, Any] memory_from_sync_events(list[Any] events)
Definition
session_memory_store.py:55
aquin.engine.session_memory_store.load_local_memory
dict[str, Any] load_local_memory(str session_id)
Definition
session_memory_store.py:25
aquin
engine
session_memory_store.py
AQIT · Aquin Labs Private Limited · Apache 2.0 · Generated by
1.18.0