History

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

Luis Pater committed 7 months ago

Commit ca11b231 parent 330e12d2 files · +9 −73Browse files

Unified · Split

2 files
  1. internal/runtime/executor/codex_websockets_executor.go +2 −3
  2. sdk/api/handlers/openai/openai_responses_websocket.go +7 −70
internal/runtime/executor/codex_websockets_executor.go+2−3
@@ -811,7 +811,7 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth * · 810 unmodified lines
811 ginHeaders = ginCtx.Request.Header.Clone()811 ginHeaders = ginCtx.Request.Header.Clone()
812 }812 }
813 813
814 cfgUserAgent, cfgBetaFeatures := codexHeaderDefaults(cfg, auth)814 _, cfgBetaFeatures := codexHeaderDefaults(cfg, auth)
815 ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "")815 ensureHeaderWithPriority(headers, ginHeaders, "x-codex-beta-features", cfgBetaFeatures, "")
816 misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "")816 misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-state", "")
817 misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "")817 misc.EnsureHeader(headers, ginHeaders, "x-codex-turn-metadata", "")
@@ -827,11 +827,10 @@ func applyCodexWebsocketHeaders(ctx context.Context, headers http.Header, auth * · 9 unmodified lines
827 betaHeader = codexResponsesWebsocketBetaHeaderValue827 betaHeader = codexResponsesWebsocketBetaHeaderValue
828 }828 }
829 headers.Set("OpenAI-Beta", betaHeader)829 headers.Set("OpenAI-Beta", betaHeader)
830 ensureHeaderWithConfigPrecedence(headers, ginHeaders, "User-Agent", cfgUserAgent, codexUserAgent)
831
832 if strings.Contains(headers.Get("User-Agent"), "Mac OS") {830 if strings.Contains(headers.Get("User-Agent"), "Mac OS") {
833 misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString())831 misc.EnsureHeader(headers, ginHeaders, "Session_id", uuid.NewString())
834 }832 }
833 headers.Del("User-Agent")
835 834
836 isAPIKey := false835 isAPIKey := false
837 if auth != nil && auth.Attributes != nil {836 if auth != nil && auth.Attributes != nil {
sdk/api/handlers/openai/openai_responses_websocket.go+7−70
@@ -33,9 +33,6 @@ const ( · 32 unmodified lines
33 wsDoneMarker = "[DONE]"33 wsDoneMarker = "[DONE]"
34 wsTurnStateHeader = "x-codex-turn-state"34 wsTurnStateHeader = "x-codex-turn-state"
35 wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"35 wsRequestBodyKey = "REQUEST_BODY_OVERRIDE"
36 wsPayloadLogMaxSize = 2048
37 wsBodyLogMaxSize = 64 * 1024
38 wsBodyLogTruncated = "\n[websocket log truncated]\n"
39)36)
40 37
41var responsesWebsocketUpgrader = websocket.Upgrader{38var responsesWebsocketUpgrader = websocket.Upgrader{
@@ -894,71 +891,18 @@ func appendWebsocketEvent(builder *strings.Builder, eventType string, payload [] · 852 unmodified lines
894 if builder == nil {891 if builder == nil {
895 return892 return
896 }893 }
897 if builder.Len() >= wsBodyLogMaxSize {
898 return
899 }
900 trimmedPayload := bytes.TrimSpace(payload)894 trimmedPayload := bytes.TrimSpace(payload)
901 if len(trimmedPayload) == 0 {895 if len(trimmedPayload) == 0 {
902 return896 return
903 }897 }
904 if builder.Len() > 0 {898 if builder.Len() > 0 {
905 if !appendWebsocketLogString(builder, "\n") {899 builder.WriteString("\n")
906 return
907 }
908 }
909 if !appendWebsocketLogString(builder, "websocket.") {
910 return
911 }
912 if !appendWebsocketLogString(builder, eventType) {
913 return
914 }
915 if !appendWebsocketLogString(builder, "\n") {
916 return
917 }
918 if !appendWebsocketLogBytes(builder, trimmedPayload, len(wsBodyLogTruncated)) {
919 appendWebsocketLogString(builder, wsBodyLogTruncated)
920 return
921 }
922 appendWebsocketLogString(builder, "\n")
923}
924
925func appendWebsocketLogString(builder *strings.Builder, value string) bool {
926 if builder == nil {
927 return false
928 }
929 remaining := wsBodyLogMaxSize - builder.Len()
930 if remaining <= 0 {
931 return false
932 }
933 if len(value) <= remaining {
934 builder.WriteString(value)
935 return true
936 }
937 builder.WriteString(value[:remaining])
938 return false
939}
940
941func appendWebsocketLogBytes(builder *strings.Builder, value []byte, reserveForSuffix int) bool {
942 if builder == nil {
943 return false
944 }900 }
945 remaining := wsBodyLogMaxSize - builder.Len()901 builder.WriteString("websocket.")
946 if remaining <= 0 {902 builder.WriteString(eventType)
947 return false903 builder.WriteString("\n")
948 }904 builder.Write(trimmedPayload)
949 if len(value) <= remaining {905 builder.WriteString("\n")
950 builder.Write(value)
951 return true
952 }
953 limit := remaining - reserveForSuffix
954 if limit < 0 {
955 limit = 0
956 }
957 if limit > len(value) {
958 limit = len(value)
959 }
960 builder.Write(value[:limit])
961 return false
962}906}
963 907
964func websocketPayloadEventType(payload []byte) string {908func websocketPayloadEventType(payload []byte) string {
@@ -974,15 +918,8 @@ func websocketPayloadPreview(payload []byte) string { · 9 unmodified lines
974 if len(trimmedPayload) == 0 {918 if len(trimmedPayload) == 0 {
975 return "<empty>"919 return "<empty>"
976 }920 }
977 preview := trimmedPayload921 previewText := strings.ReplaceAll(string(trimmedPayload), "\n", "\\n")
978 if len(preview) > wsPayloadLogMaxSize {
979 preview = preview[:wsPayloadLogMaxSize]
980 }
981 previewText := strings.ReplaceAll(string(preview), "\n", "\\n")
982 previewText = strings.ReplaceAll(previewText, "\r", "\\r")922 previewText = strings.ReplaceAll(previewText, "\r", "\\r")
983 if len(trimmedPayload) > wsPayloadLogMaxSize {
984 return fmt.Sprintf("%s...(truncated,total=%d)", previewText, len(trimmedPayload))
985 }
986 return previewText923 return previewText
987}924}
988 925