bots-garden/mini-mepublic Fork
⑂ feature/memory-search
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
🛟 Updated. 05db870 · on feature/memory-search · k33g · 10d ago
memory_assemble_test.go · 43 lines · 1.7 KBGo Blame HistoryRaw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main

import (
	"context"
	"slices"
	"testing"

	"mm/internal/config"
	"mm/internal/detector"
	"mm/internal/engine"

	"github.com/firebase/genkit/go/genkit"
)

// search_memory is declared only with sessions on AND autoSearchMemory;
// searchMemory alone (the /memory command) does not declare it; a memory key
// set with sessions off becomes a banner warning.
func TestSearchMemoryIsDeclaredOnlyWhenAsked(t *testing.T) {
	cases := []struct {
		name       string
		sessions   config.SessionsConfig
		want, warn bool
	}{
		{"default", config.SessionsConfig{Dir: ".mm/sessions"}, false, false},
		{"sessions on", config.SessionsConfig{Enabled: true, Dir: ".mm/sessions"}, false, false},
		{"command only", config.SessionsConfig{Enabled: true, Dir: ".mm/sessions", SearchMemory: true}, false, false},
		{"tool", config.SessionsConfig{Enabled: true, Dir: ".mm/sessions", AutoSearchMemory: true}, true, false},
		{"tool, sessions off", config.SessionsConfig{Dir: ".mm/sessions", AutoSearchMemory: true}, false, true},
	}
	for _, c := range cases {
		t.Run(c.name, func(t *testing.T) {
			withConfig(t, func(cfg *config.Config) { cfg.Sessions = c.sessions })
			t.Setenv("MCP_GATEWAY_URL", "")
			set := assembleTools(&engine.Engine{G: genkit.Init(context.Background())}, detector.NewLoopDetector(10, 3), nil)
			if got := slices.Contains(set.names, "search_memory"); got != c.want {
				t.Errorf("search_memory declared = %v, want %v (names %v)", got, c.want, set.names)
			}
			if got := slices.Contains(set.warnings, config.Cfg.Sessions.MemoryWarning()) && config.Cfg.Sessions.MemoryWarning() != ""; got != c.warn {
				t.Errorf("warning = %v, want %v (%v)", got, c.warn, set.warnings)
			}
		})
	}
}