From 32f8a10825f799942e16a98c6e42330ccfa44851 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Tue, 14 Apr 2026 13:47:18 -0300 Subject: [PATCH] fix: normalize episodic/compact roles to system in all LLM providers --- src/llm/glm.rs | 7 ++++++- src/llm/kimi.rs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/llm/glm.rs b/src/llm/glm.rs index c1530093..b60d6873 100644 --- a/src/llm/glm.rs +++ b/src/llm/glm.rs @@ -207,8 +207,13 @@ impl LLMProvider for GLMClient { let role = m.get("role")?.as_str()?; let content = m.get("content")?.as_str()?; let sanitized = Self::sanitize_utf8(content); + let normalized_role = match role { + "user" | "assistant" | "system" | "tool" => role, + "episodic" | "compact" => "system", + _ => "user", + }; Some(GLMMessage { - role: role.to_string(), + role: normalized_role.to_string(), content: Some(sanitized), tool_calls: None, }) diff --git a/src/llm/kimi.rs b/src/llm/kimi.rs index df2f1f0f..0eef4564 100644 --- a/src/llm/kimi.rs +++ b/src/llm/kimi.rs @@ -211,8 +211,13 @@ impl LLMProvider for KimiClient { let role = m.get("role")?.as_str()?; let content = m.get("content")?.as_str()?; let sanitized = Self::sanitize_utf8(content); + let normalized_role = match role { + "user" | "assistant" | "system" | "tool" => role, + "episodic" | "compact" => "system", + _ => "user", + }; Some(KimiMessage { - role: role.to_string(), + role: normalized_role.to_string(), content: Some(sanitized), tool_calls: None, })