File size: 1,234 Bytes
22dcdfd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
from contextlib import AbstractAsyncContextManager, asynccontextmanager
from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver
from langgraph.store.memory import InMemoryStore
from core.settings import settings
def get_sqlite_saver() -> AbstractAsyncContextManager[AsyncSqliteSaver]:
"""Initialize and return a SQLite saver instance."""
return AsyncSqliteSaver.from_conn_string(settings.SQLITE_DB_PATH)
class AsyncInMemoryStore:
"""Wrapper for InMemoryStore that provides an async context manager interface."""
def __init__(self):
self.store = InMemoryStore()
async def __aenter__(self):
return self.store
async def __aexit__(self, exc_type, exc_val, exc_tb):
# No cleanup needed for InMemoryStore
pass
async def setup(self):
# No-op method for compatibility with PostgresStore
pass
@asynccontextmanager
async def get_sqlite_store():
"""Initialize and return a store instance for long-term memory.
Note: SQLite-specific store isn't available in LangGraph,
so we use InMemoryStore wrapped in an async context manager for compatibility.
"""
store_manager = AsyncInMemoryStore()
yield await store_manager.__aenter__()
|