Saltar al contenido principal

ILabMemory

ILabMemory es el único entry point público de la librería. Todo método que vayas a llamar vive en esta clase. Internamente compone session lifecycle, search, upsert y storage — pero esos módulos no son parte de la API pública.

nota

Contrato hexagonal: ILabMemory es el único consumidor del ABC Store. No importes SQLiteStore directo — usá from_path.

Constructor

ILabMemory(store: Store, config: Config | None = None)

Inyectá una implementación de Store propia. Usalo solo si necesitás un backend que no sea SQLite o querés controlar la creación del store explícitamente. Para el 99% de los casos, usá from_path.

Parámetros

ParámetroTipoRequeridoDescripción
storeStorePort de persistencia hexagonal. Tiene que implementar el ABC Store de ilab_memory.core.store. El orchestrator es el único módulo que puede llamarlo.
configConfig | Noneno (default None)Configuración de la librería. Por defecto es Config(db_path=":memory:") (sentinel — db_path se ignora cuando inyectás el store directo).

from_path

ILabMemory.from_path(db_path: str | Path, config: Config | None = None) -> ILabMemory

Factory recomendada. Crea un ILabMemory respaldado por una base SQLite en db_path. Usá :memory: para tests y runs efímeros.

Parámetros

ParámetroTipoRequeridoDescripción
db_pathstr | PathPath en disco a la base SQLite (o ":memory:"). Se crea en el primer uso; idempotente.
configConfig | Noneno (default None)Config opcional. Si lo pasás, su db_path queda overrideado por el db_path del argumento — así el config siempre matchea el path real del store.

Returns

Una instancia ILabMemory lista para usar.

Context manager

ILabMemory implementa __enter__ / __exit__, así que podés usarlo dentro de un with para garantizar que el store cierre limpio.

from ilab_memory import ILabMemory

with ILabMemory.from_path("./memory.db") as mem:
mem.mem_session_start("alice")
# ... tu trabajo ...
# el store se cierra acá automáticamente

También podés llamar mem.close() explícito. El método es idempotente.

Ejemplos

from ilab_memory import ILabMemory

mem = ILabMemory.from_path("./memory.db")
response = mem.mem_session_start(user_id="alice")
print(response.session_id, response.is_new)

Thread safety

Single-threaded en v0.1. El SQLiteStore por defecto usa una sola conexión; el caller es dueño de la concurrencia. Si necesitás multi-thread, envolvé las llamadas en tu propio lock o usá un Store custom que maneje aislamiento.

Ver también