diff options
| author | t <t@tjp.lol> | 2026-06-02 09:02:49 -0600 |
|---|---|---|
| committer | t <t@tjp.lol> | 2026-06-02 09:49:18 -0600 |
| commit | 9c64a7d4462a11674e2dea481b037b5f5d9c62fc (patch) | |
| tree | a4f0a493a9b7558d40f5eb79a0eeae46ecc23515 /libpanto/src/session_manager.zig | |
| parent | 456d986be1357c247753d9dc21734bb898d5e78b (diff) | |
system prompt building and logging
Diffstat (limited to 'libpanto/src/session_manager.zig')
| -rw-r--r-- | libpanto/src/session_manager.zig | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libpanto/src/session_manager.zig b/libpanto/src/session_manager.zig index bf9585d..8b503f2 100644 --- a/libpanto/src/session_manager.zig +++ b/libpanto/src/session_manager.zig @@ -37,6 +37,7 @@ pub const SessionEntry = session_mod.SessionEntry; pub const MessageEntry = session_mod.MessageEntry; pub const DiskMessage = session_mod.DiskMessage; pub const DiskMessageRole = session_mod.DiskMessageRole; +pub const DiskSystemMode = session_mod.DiskSystemMode; pub const DiskContentBlock = session_mod.DiskContentBlock; pub const Usage = session_mod.Usage; pub const CURRENT_VERSION = session_mod.CURRENT_VERSION; @@ -668,8 +669,19 @@ fn appendMessageToConv( content.deinit(allocator); } try content.ensureTotalCapacity(allocator, disk_msg.content.len); + const sys_mode: conversation_mod.SystemMode = switch (disk_msg.mode) { + .append => .append, + .replace => .replace, + }; for (disk_msg.content) |db| { - const block = try session_mod.diskContentBlockToInternal(allocator, db); + var block = try session_mod.diskContentBlockToInternal(allocator, db); + // System-role text blocks become `.System` blocks carrying the + // message's recorded mode, so the append/replace derivation works + // on the rebuilt conversation exactly as it did when written. + if (disk_msg.role == .system and block == .Text) { + const tb = block.Text; + block = .{ .System = .{ .text = tb, .mode = sys_mode } }; + } content.appendAssumeCapacity(block); } const role: conversation_mod.MessageRole = switch (disk_msg.role) { @@ -1248,7 +1260,7 @@ test "SessionManager: rebuildConversation reconstructs system/user/assistant tur defer conv.deinit(); try testing.expectEqual(@as(usize, 3), conv.messages.items.len); try testing.expectEqual(conversation_mod.MessageRole.system, conv.messages.items[0].role); - try testing.expectEqualStrings("you are helpful", conv.messages.items[0].content.items[0].Text.items); + try testing.expectEqualStrings("you are helpful", conv.messages.items[0].content.items[0].System.text.items); try testing.expectEqual(conversation_mod.MessageRole.user, conv.messages.items[1].role); try testing.expectEqualStrings("hello", conv.messages.items[1].content.items[0].Text.items); try testing.expectEqual(conversation_mod.MessageRole.assistant, conv.messages.items[2].role); |
