Updated folder structure (for Docker)
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""
|
||||
Memory context using contextvars.
|
||||
|
||||
Provides thread-safe and async-safe access to the Memory instance
|
||||
without passing it explicitly through all function calls.
|
||||
|
||||
Usage:
|
||||
# At application startup
|
||||
from infrastructure.persistence import init_memory, get_memory
|
||||
|
||||
init_memory("memory_data")
|
||||
|
||||
# Anywhere in the code
|
||||
memory = get_memory()
|
||||
memory.ltm.set_config("key", "value")
|
||||
"""
|
||||
|
||||
from contextvars import ContextVar
|
||||
|
||||
from .memory import Memory
|
||||
|
||||
_memory_ctx: ContextVar[Memory | None] = ContextVar("memory", default=None)
|
||||
|
||||
|
||||
def init_memory(storage_dir: str = "memory_data") -> Memory:
|
||||
"""
|
||||
Initialize the memory and set it in the context.
|
||||
|
||||
Call this once at application startup.
|
||||
|
||||
Args:
|
||||
storage_dir: Directory for persistent storage.
|
||||
|
||||
Returns:
|
||||
The initialized Memory instance.
|
||||
"""
|
||||
memory = Memory(storage_dir=storage_dir)
|
||||
_memory_ctx.set(memory)
|
||||
return memory
|
||||
|
||||
|
||||
def set_memory(memory: Memory) -> None:
|
||||
"""
|
||||
Set an existing Memory instance in the context.
|
||||
|
||||
Useful for testing or when injecting a specific instance.
|
||||
|
||||
Args:
|
||||
memory: Memory instance to set.
|
||||
"""
|
||||
_memory_ctx.set(memory)
|
||||
|
||||
|
||||
def get_memory() -> Memory:
|
||||
"""
|
||||
Get the Memory instance from the context.
|
||||
|
||||
Returns:
|
||||
The Memory instance.
|
||||
|
||||
Raises:
|
||||
RuntimeError: If memory has not been initialized.
|
||||
"""
|
||||
memory = _memory_ctx.get()
|
||||
if memory is None:
|
||||
raise RuntimeError(
|
||||
"Memory not initialized. Call init_memory() at application startup."
|
||||
)
|
||||
return memory
|
||||
|
||||
|
||||
def has_memory() -> bool:
|
||||
"""
|
||||
Check if memory has been initialized.
|
||||
|
||||
Returns:
|
||||
True if memory is available, False otherwise.
|
||||
"""
|
||||
return _memory_ctx.get() is not None
|
||||
Reference in New Issue
Block a user