feat: provider manager, cancellation, session summaries (store+agent)

This commit is contained in:
OpenClaw Dev 2026-10-25 04:46:40 +01:00
parent 406a523d54
commit f1b2093b22
10 changed files with 883 additions and 37 deletions

View file

@ -48,3 +48,43 @@ func TestStoreRoundTrip(t *testing.T) {
t.Fatal("cascade delete failed")
}
}
func TestSummariesSettingsProviderAndCancelled(t *testing.T) {
s, err := Open(filepath.Join(t.TempDir(), "t.db"))
if err != nil {
t.Fatal(err)
}
defer s.Close()
ctx := context.Background()
ss, _ := s.CreateSession(ctx, "x")
if _, err := s.LatestSummary(ctx, ss.ID); !errors.Is(err, ErrNotFound) {
t.Fatal(err)
}
id1, _ := s.AppendMessage(ctx, ss.ID, llm.Message{Role: llm.RoleUser, Content: "a"})
s.AppendMessage(ctx, ss.ID, llm.Message{Role: llm.RoleAssistant, Content: "part", Cancelled: true})
s.AddSummary(ctx, ss.ID, id1, "old")
s.AddSummary(ctx, ss.ID, id1, "new")
sm, _ := s.LatestSummary(ctx, ss.ID)
if sm.Content != "new" || sm.UptoMessageID != id1 {
t.Fatalf("%+v", sm)
}
after, _ := s.MessagesAfter(ctx, ss.ID, id1, 0)
if len(after) != 1 || !after[0].Cancelled || after[0].Content != "part" {
t.Fatalf("%+v", after)
}
if all, _ := s.Messages(ctx, ss.ID, 0); len(all) != 2 {
t.Fatal("original messages must be kept")
}
if err := s.SetSessionProvider(ctx, ss.ID, "dahl", "m"); err != nil {
t.Fatal(err)
}
got, _ := s.GetSession(ctx, ss.ID)
if got.Provider != "dahl" || got.Model != "m" {
t.Fatalf("%+v", got)
}
s.SetSetting(ctx, "k", "v1")
s.SetSetting(ctx, "k", "v2")
if v, _ := s.GetSetting(ctx, "k"); v != "v2" {
t.Fatal(v)
}
}