refactor(runtime, openai): simplify header management and remove redundant websocket logging logic

This commit is contained in:
Luis Pater
2026-04-01 11:57:31 +08:00
parent 330e12d3c2
commit ca11b236a7
2 changed files with 9 additions and 73 deletions

View File

@@ -811,7 +811,7 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth *
ginHeaders = ginCtx.Request.Header.Clone() ginHeaders = ginCtx.Request.Header.Clone()
} }
cfgUserAgent, cfgBetaFeatures := codexHeaderDefaults(cfg, auth) _, cfgBetaFeatures := codexHeaderDefaults(cfg, auth)
ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "") ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "")
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "") misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "")
misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "") misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "")
@@ -827,11 +827,10 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth *
betaHeader = codexResponsesWebsocketBetaHeaderValue betaHeader = codexResponsesWebsocketBetaHeaderValue
} }
headers.Set("OpenAI-Beta", betaHeader) headers.Set("OpenAI-Beta", betaHeader)
ensureHeaderWithConfigPrecedence(headers, ginHeaders, "User-Agent", cfgUserAgent, codexUserAgent)
if strings.Contains(headers.Get("User-Agent"), "Mac OS") { if strings.Contains(headers.Get("User-Agent"), "Mac OS") {
misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString()) misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString())
} }
headers.Del("User-Agent")
isAPIKey := false isAPIKey := false
if auth != nil && auth.Attributes != nil { if auth != nil && auth.Attributes != nil {

View File

@@ -33,9 +33,6 @@ const (
wsDoneMarker = "[DONE]" wsDoneMarker = "[DONE]"
wsTurnStateHeader = "x-codex-turn-state" wsTurnStateHeader = "x-codex-turn-state"
wsRequestBodyKey = "REQUEST_BODY_OVERRIDE" wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
wsPayloadLogMaxSize = 2048
wsBodyLogMaxSize = 64 * 1024
wsBodyLogTruncated = "\n[websocket log truncated]\n"
) )
var responsesWebsocketUpgrader = websocket.Upgrader{ var responsesWebsocketUpgrader = websocket.Upgrader{
@@ -894,71 +891,18 @@ func appendWebsocketEvent(builder *strings.Builder, eventType string, payload []
if builder == nil { if builder == nil {
return return
} }
if builder.Len() >= wsBodyLogMaxSize {
return
}
trimmedPayload := bytes.TrimSpace(payload) trimmedPayload := bytes.TrimSpace(payload)
if len(trimmedPayload) == 0 { if len(trimmedPayload) == 0 {
return return
} }
if builder.Len() > 0 { if builder.Len() > 0 {
if !appendWebsocketLogString(builder, "\n") { builder.WriteString("\n")
return
}
} }
if !appendWebsocketLogString(builder, "websocket.") { builder.WriteString("websocket.")
return builder.WriteString(eventType)
} builder.WriteString("\n")
if !appendWebsocketLogString(builder, eventType) { builder.Write(trimmedPayload)
return builder.WriteString("\n")
}
if !appendWebsocketLogString(builder, "\n") {
return
}
if !appendWebsocketLogBytes(builder, trimmedPayload, len(wsBodyLogTruncated)) {
appendWebsocketLogString(builder, wsBodyLogTruncated)
return
}
appendWebsocketLogString(builder, "\n")
}
func appendWebsocketLogString(builder *strings.Builder, value string) bool {
if builder == nil {
return false
}
remaining := wsBodyLogMaxSize - builder.Len()
if remaining <= 0 {
return false
}
if len(value) <= remaining {
builder.WriteString(value)
return true
}
builder.WriteString(value[:remaining])
return false
}
func appendWebsocketLogBytes(builder *strings.Builder, value []byte, reserveForSuffix int) bool {
if builder == nil {
return false
}
remaining := wsBodyLogMaxSize - builder.Len()
if remaining <= 0 {
return false
}
if len(value) <= remaining {
builder.Write(value)
return true
}
limit := remaining - reserveForSuffix
if limit < 0 {
limit = 0
}
if limit > len(value) {
limit = len(value)
}
builder.Write(value[:limit])
return false
} }
func websocketPayloadEventType(payload []byte) string { func websocketPayloadEventType(payload []byte) string {
@@ -974,15 +918,8 @@ func websocketPayloadPreview(payload []byte) string {
if len(trimmedPayload) == 0 { if len(trimmedPayload) == 0 {
return "<empty>" return "<empty>"
} }
preview := trimmedPayload previewText := strings.ReplaceAll(string(trimmedPayload), "\n", "\\n")
if len(preview) > wsPayloadLogMaxSize {
preview = preview[:wsPayloadLogMaxSize]
}
previewText := strings.ReplaceAll(string(preview), "\n", "\\n")
previewText = strings.ReplaceAll(previewText, "\r", "\\r") previewText = strings.ReplaceAll(previewText, "\r", "\\r")
if len(trimmedPayload) > wsPayloadLogMaxSize {
return fmt.Sprintf("%s...(truncated,total=%d)", previewText, len(trimmedPayload))
}
return previewText return previewText
} }