feat(session): use default min messages in ForceCompression when no summarizer is configured

Signed-off-by: Boris Bliznioukov <blib@mail.com>
This commit is contained in:
Boris Bliznioukov 2026-03-06 15:56:45 +01:00
parent d9f94e8e0f
commit bbb1ed6033
No known key found for this signature in database
2 changed files with 18 additions and 1 deletions

View file

@ -513,7 +513,7 @@ func (sm *SessionManager) summarizeSession(sessionKey string) {
// already blocked, so there is no concurrent-append concern here.
// No-op if no Summarizer was provided via WithSummarizer.
func (sm *SessionManager) ForceCompression(sessionKey string) {
cfg := sm.summarizerCfg
cfg := sm.summarizerCfg.WithDefaults()
history := sm.GetHistory(sessionKey)
if len(history) <= cfg.ForceCompressionMinMessages {
return

View file

@ -231,6 +231,23 @@ func TestForceCompression_TooFewMessages(t *testing.T) {
}
}
func TestForceCompression_WithoutSummarizer_UsesDefaultMinMessages(t *testing.T) {
sm := NewSessionManager(t.TempDir())
// 3 messages is below the default ForceCompressionMinMessages (4),
// so compression should not run even when no summarizer is configured.
sm.AddFullMessage("test", providers.Message{Role: "system", Content: "system prompt"})
sm.AddMessage("test", "user", "one")
sm.AddMessage("test", "assistant", "two")
sm.ForceCompression("test")
history := sm.GetHistory("test")
if len(history) != 3 {
t.Errorf("expected 3 messages unchanged, got %d", len(history))
}
}
// --- ApplySummarization ---
func TestApplySummarization_PreservesNewMessages(t *testing.T) {