memory.chat.high = 200
memory.chat.low = 100
+
memory.cview.high = 80
memory.cview.low = 40
for n := range 100 {
memory.chat.high = 200
memory.chat.low = 100
+
memory.cview.high = 80
memory.cview.low = 40
for n := range 64 {
}
memory.mutex.Lock()
+
running := slices.Collect(maps.Keys(memory.queue.running))
memory.mutex.Unlock()
slices.SortFunc(running, func(a, b NodeKey) int {
func TestMemorySettleFailsWhileABuildFailed(t *testing.T) {
summarizer := newFakeSummarizer()
summarizer.SetFailing(true)
+
logs := &SyncBuffer{}
memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, summarizer, log.New(logs, "", 0))
require.NoError(t, err)
_, err = memory.Append("echo", memoryLongText(0))
require.NoError(t, err)
require.ErrorIs(t, memory.Settle(t.Context()), errMemoryUnsettled)
- require.Equal(t, "a summary of the chat failed, and it is tried again at the next message: node (0, 0): fake failure\n", logs.String())
+ require.Equal(t, "summary failed, retry at next message: node (0, 0): fake failure\n", logs.String())
summarizer.SetFailing(false)
+
_, err = memory.Append("user", "retry")
require.NoError(t, err)
require.NoError(t, memory.Settle(t.Context()))
func TestMemoryStartsALeafAfterFewerThanEightUnbuilt(t *testing.T) {
summarizer := newFakeSummarizer()
summarizer.SetFailing(true)
+
memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, summarizer, discardLog())
require.NoError(t, err)
}
require.NoError(t, memory.Wait(t.Context()))
+
for _, task := range summarizer.Tasks() {
require.Less(t, task.Index, 8)
}
clock := newTestClock()
summarizer := newFakeSummarizer()
summarizer.SetFailing(true)
+
memory, err := openMemory(t.Context(), root, clock.Now, summarizer, discardLog())
require.NoError(t, err)
func TestMemoryKeepsALongMessageOutOfTheView(t *testing.T) {
summarizer := newFakeSummarizer()
summarizer.SetFailing(true)
+
memory, err := openMemory(t.Context(), t.TempDir(), newTestClock().Now, summarizer, discardLog())
require.NoError(t, err)