diff --git a/internal/config/template/template.go b/internal/config/template/template.go index 889fffc9..80a06349 100644 --- a/internal/config/template/template.go +++ b/internal/config/template/template.go @@ -157,7 +157,7 @@ func resolveLang(lang string) string { } // ApplyLanguage injects a language directive into all system-role messages -// across MAIN_TASK, PLAN_TASK (if set), and MEMORY_COMPRESSION_TASK. +// across MAIN_TASK, PLAN_TASK (if set), MEMORY_COMPRESSION_TASK, and REVIEW_FILTER_TASK (if set). func (t *Template) ApplyLanguage(lang string) { instruction := "\n\nAlways respond in " + resolveLang(lang) + "." applyLanguage(&t.MainTask, instruction) @@ -165,6 +165,9 @@ func (t *Template) ApplyLanguage(lang string) { applyLanguage(t.PlanTask, instruction) } applyLanguage(&t.MemoryCompressionTask, instruction) + if t.ReviewFilterTask != nil { + applyLanguage(t.ReviewFilterTask, instruction) + } } // ApplyLanguage injects a language directive into all system-role messages diff --git a/internal/config/template/template_test.go b/internal/config/template/template_test.go index f2f87279..c6af602d 100644 --- a/internal/config/template/template_test.go +++ b/internal/config/template/template_test.go @@ -146,6 +146,12 @@ func TestApplyLanguage(t *testing.T) { if !strings.HasSuffix(tpl.MemoryCompressionTask.Messages[0].Content, suffix) { t.Errorf("MemoryCompressionTask system message does not end with %q", suffix) } + if tpl.ReviewFilterTask == nil { + t.Fatal("ReviewFilterTask should be present in default template") + } + if !strings.HasSuffix(tpl.ReviewFilterTask.Messages[0].Content, suffix) { + t.Errorf("ReviewFilterTask system message does not end with %q", suffix) + } } func TestApplyLanguage_DefaultEnglish(t *testing.T) { @@ -319,6 +325,18 @@ func TestApplyLanguage_SkipsNonSystemMessages(t *testing.T) { } } +func TestApplyLanguage_NilReviewFilterTask(t *testing.T) { + // ApplyLanguage should not panic when ReviewFilterTask is nil. + tpl := &Template{ + MainTask: LlmConversation{Messages: []ChatMessage{{Role: "system", Content: "sys"}}}, + MemoryCompressionTask: LlmConversation{Messages: []ChatMessage{{Role: "system", Content: "compress"}}}, + } + tpl.ApplyLanguage("German") + if !strings.Contains(tpl.MainTask.Messages[0].Content, "German") { + t.Error("MainTask should contain language directive") + } +} + func TestResolveLang(t *testing.T) { if got := resolveLang(""); got != "English" { t.Errorf("resolveLang(\"\") = %q, want \"English\"", got)