yc1838
fix
6b91a00
Raw
History Blame Contribute Delete
1.12 kB
from __future__ import annotations
import importlib
import logging
import sqlite3
from pathlib import Path
from typing import Any
log = logging.getLogger(__name__)
def build_checkpointer(lilith_home: Path) -> Any:
"""Create the graph checkpointer, preferring SQLite persistence when available."""
lilith_home.mkdir(parents=True, exist_ok=True)
db_path = lilith_home / "threads.sqlite"
try:
sqlite_module = importlib.import_module("langgraph.checkpoint.sqlite")
sqlite_saver_cls = sqlite_module.SqliteSaver
except ModuleNotFoundError as exc:
memory_module = importlib.import_module("langgraph.checkpoint.memory")
in_memory_saver_cls = memory_module.InMemorySaver
log.warning(
"langgraph-checkpoint-sqlite missing; using InMemorySaver instead. "
"Install langgraph-checkpoint-sqlite to restore persistent thread checkpoints. "
"Original import error: %s",
exc,
)
return in_memory_saver_cls()
conn = sqlite3.connect(str(db_path), check_same_thread=False)
return sqlite_saver_cls(conn)