feat(pi-storage-sqlite): SQLite 会话存储后端
对应上游 packages/storage/sqlite-node。
落地内容:
- migrations.sql:7 表 schema 1:1 还原(sessions / session_entries /
session_sequences / branch_entries / session_materialized /
entry_materialized + migrations 记录表),含全部索引与 WITHOUT ROWID
- database.py:SqliteDatabase(stdlib sqlite3 封装)、PRAGMA 配置
(WAL/FULL/busy_timeout)、migration 执行器(幂等)、open_database
- storage.py:
- SqliteSessionStorage:实现 SessionStorage 协议,per-session entry CRUD
(事务内 append、entry_seq 自增、leaf 指针更新、payload JSON 序列化)
- SqliteSessionRepo:多 session 管理(create/open/list/delete/fork)
按固定顺序删各表(无 FK,手工一致性)
与 pi-agent-core Session 无缝集成:SqliteSessionStorage 可直接作为
Session 的后端。
18 个测试覆盖:schema 创建、migration 幂等、PRAGMA、repo CRUD、
entry 追加与序号单调、持久化往返、Session 集成、compaction 持久化、
多 session 共存、metadata 持久化。
验证:144 测试通过,mypy strict / ruff 全绿。 J
Justin Gao committed
8e43973f4cd2bc1c07ca0de43c4ccf1bd2e65324
Parent: b0a8fb4