summaryrefslogtreecommitdiff
path: root/libpanto/src/root.zig
diff options
context:
space:
mode:
authort <t@tjp.lol>2026-06-05 11:27:33 -0600
committert <t@tjp.lol>2026-06-05 11:27:43 -0600
commit03ac69658517a0054d2a573d1e1b60c1bfaaf977 (patch)
treec38c4b009c98e96497db7482d04f803bf2ee78f9 /libpanto/src/root.zig
parent003908344336cc13e74618291aa9f3af137f030f (diff)
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.
Diffstat (limited to 'libpanto/src/root.zig')
-rw-r--r--libpanto/src/root.zig2
1 files changed, 2 insertions, 0 deletions
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");