From a6ce5f36e6e756b6a59b76e60dc5362e7490063d Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Sun, 1 Mar 2026 01:45:35 +0800 Subject: [PATCH] Fixed: #1758 fix(codex): filter billing headers from system result text and update template logic --- .../codex/claude/codex_claude_request.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/translator/codex/claude/codex_claude_request.go b/internal/translator/codex/claude/codex_claude_request.go index 223a2559..64e41fb5 100644 --- a/internal/translator/codex/claude/codex_claude_request.go +++ b/internal/translator/codex/claude/codex_claude_request.go @@ -46,15 +46,23 @@ func ConvertClaudeRequestToCodex(modelName string, inputRawJSON []byte, _ bool) if systemsResult.IsArray() { systemResults := systemsResult.Array() message := `{"type":"message","role":"developer","content":[]}` + contentIndex := 0 for i := 0; i < len(systemResults); i++ { systemResult := systemResults[i] systemTypeResult := systemResult.Get("type") if systemTypeResult.String() == "text" { - message, _ = sjson.Set(message, fmt.Sprintf("content.%d.type", i), "input_text") - message, _ = sjson.Set(message, fmt.Sprintf("content.%d.text", i), systemResult.Get("text").String()) + text := systemResult.Get("text").String() + if strings.HasPrefix(text, "x-anthropic-billing-header: ") { + continue + } + message, _ = sjson.Set(message, fmt.Sprintf("content.%d.type", contentIndex), "input_text") + message, _ = sjson.Set(message, fmt.Sprintf("content.%d.text", contentIndex), text) + contentIndex++ } } - template, _ = sjson.SetRaw(template, "input.-1", message) + if contentIndex > 0 { + template, _ = sjson.SetRaw(template, "input.-1", message) + } } // Process messages and transform their contents to appropriate formats.