From aa928fc4eb4b43997adf447e9d5acbda159336fa Mon Sep 17 00:00:00 2001 From: Anurag K Gupta Date: Tue, 18 Nov 2025 15:45:55 -0800 Subject: [PATCH] sanitize chat payload roles for strict providers (map unknown roles -> system) --- code-rs/core/src/chat_completions.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/code-rs/core/src/chat_completions.rs b/code-rs/core/src/chat_completions.rs index 89c4a724c25..a0f102b062e 100644 --- a/code-rs/core/src/chat_completions.rs +++ b/code-rs/core/src/chat_completions.rs @@ -339,6 +339,24 @@ pub(crate) async fn stream_chat_completions( } } +// --- sanitize outgoing chat roles for strict providers --- +if let Some(msgs) = payload.get_mut("messages").and_then(|v| v.as_array_mut()) { + for msg in msgs.iter_mut() { + if let Some(obj) = msg.as_object_mut() { + let replace = match obj.get("role") { + Some(serde_json::Value::String(s)) => { + !matches!(s.as_str(), "system" | "user" | "assistant" | "tool") + } + _ => true, + }; + if replace { + obj.insert("role".to_string(), serde_json::Value::String("system".to_string())); + } + } + } +} +// --- end sanitize --- + let endpoint = provider.get_full_url(&None); debug!( "POST to {}: {}",