memory.chat.high = 200
memory.chat.low = 100
+ memory.cview.high = 80
+ memory.cview.low = 40
for n := range 100 {
_, err = memory.Append("user", fmt.Sprint(n))
require.NoError(t, err)
}
view := memory.View()
+ context := memory.Context(0, 100)
saved, err := os.ReadFile(filepath.Join(root, "view.json"))
require.NoError(t, err)
require.Less(t, len(memory.chat.lines), 100)
}()
require.Equal(t, view, memory.View())
+ require.Equal(t, context, memory.Context(0, 100))
loaded, err := os.ReadFile(filepath.Join(root, "view.json"))
require.NoError(t, err)
require.Equal(t, saved, loaded)
}
+func TestMemoryKeepsTheCompactionViewCoarser(t *testing.T) {
+ memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now)
+ require.NoError(t, err)
+
+ defer func() {
+ require.NoError(t, memory.Close())
+ }()
+
+ memory.chat.high = 200
+ memory.chat.low = 100
+ memory.cview.high = 80
+ memory.cview.low = 40
+ for n := range 64 {
+ _, err = memory.Append("user", fmt.Sprint(n%10))
+ require.NoError(t, err)
+
+ coarse := 0
+ for _, line := range memory.chat.lines {
+ outer := memory.cview.lines[coarse]
+ for nodeEnd(outer.level, outer.index) <= line.index<<line.level {
+ coarse++
+ outer = memory.cview.lines[coarse]
+ }
+
+ require.GreaterOrEqual(t, outer.level, line.level, "message %d", n)
+ }
+ }
+}
+
func TestMemoryBuildsFreeParents(t *testing.T) {
memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now)
require.NoError(t, err)