From 03ac69658517a0054d2a573d1e1b60c1bfaaf977 Mon Sep 17 00:00:00 2001 From: t Date: Fri, 5 Jun 2026 11:27:33 -0600 Subject: Add pluggable SessionStore interface with FSJSONL + Null backends Introduce a neutral persistence seam (session_store.zig) following the {ptr, vtable} shape of the other libpanto seams. The interface traffics in DiskMessage so non-JSONL backends (e.g. Postgres) can implement it. - session_store.zig: SessionStore vtable (appendMessages, loadConversation, sessionId, activeModel), LoadedSession{conversation, dangling_user}, re-exported disk types, and an FSJSONLStore alias. - session_manager.zig: add store() wrapper + loadConversation() with dangling trailing-user detection (excluded from the rebuilt conversation, returned as dangling_user). - null_store.zig: no-op backend, stateless singleton. - root.zig: export session_store + null_store. Phase 1+2 of docs/pluggable-session-store.md. Behavior-preserving; CLI not yet rewired. --- libpanto/src/root.zig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'libpanto/src/root.zig') diff --git a/libpanto/src/root.zig b/libpanto/src/root.zig index 3f5549c..39797dd 100644 --- a/libpanto/src/root.zig +++ b/libpanto/src/root.zig @@ -10,6 +10,8 @@ pub const tool_source = @import("tool_source.zig"); pub const tool_registry = @import("tool_registry.zig"); pub const session = @import("session.zig"); pub const session_manager = @import("session_manager.zig"); +pub const session_store = @import("session_store.zig"); +pub const null_store = @import("null_store.zig"); pub const pricing = @import("pricing.zig"); pub const compaction = @import("compaction.zig"); pub const image = @import("image.zig"); -- cgit v1.3