From 6530776a62dd355ccd3f9bca1ca3ed41f715bdd7 Mon Sep 17 00:00:00 2001 From: erio Date: Sun, 19 Apr 2026 18:05:25 +0800 Subject: [PATCH] fix: support xhigh reasoning effort in usage records for Claude Messages API Closes #1732 --- backend/internal/service/gateway_request.go | 2 +- backend/internal/service/gateway_request_test.go | 8 +++++++- frontend/src/utils/format.ts | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/internal/service/gateway_request.go b/backend/internal/service/gateway_request.go index 55cb2c84..498336a4 100644 --- a/backend/internal/service/gateway_request.go +++ b/backend/internal/service/gateway_request.go @@ -962,7 +962,7 @@ func NormalizeClaudeOutputEffort(raw string) *string { return nil } switch value { - case "low", "medium", "high", "max": + case "low", "medium", "high", "xhigh", "max": return &value default: return nil diff --git a/backend/internal/service/gateway_request_test.go b/backend/internal/service/gateway_request_test.go index d262456d..40bd1186 100644 --- a/backend/internal/service/gateway_request_test.go +++ b/backend/internal/service/gateway_request_test.go @@ -1149,6 +1149,11 @@ func TestParseGatewayRequest_OutputEffort(t *testing.T) { body: `{"model":"claude-opus-4-6","output_config":{"effort":"max"},"messages":[]}`, wantEffort: "max", }, + { + name: "output_config.effort xhigh", + body: `{"model":"claude-opus-4-7","output_config":{"effort":"xhigh"},"messages":[]}`, + wantEffort: "xhigh", + }, { name: "output_config without effort", body: `{"model":"claude-opus-4-6","output_config":{},"messages":[]}`, @@ -1186,9 +1191,10 @@ func TestNormalizeClaudeOutputEffort(t *testing.T) { {"LOW", strPtr("low")}, {"Max", strPtr("max")}, {" medium ", strPtr("medium")}, + {"xhigh", strPtr("xhigh")}, + {"XHIGH", strPtr("xhigh")}, {"", nil}, {"unknown", nil}, - {"xhigh", nil}, } for _, tt := range tests { t.Run(tt.input, func(t *testing.T) { diff --git a/frontend/src/utils/format.ts b/frontend/src/utils/format.ts index ea5d597b..6f13a065 100644 --- a/frontend/src/utils/format.ts +++ b/frontend/src/utils/format.ts @@ -193,7 +193,9 @@ export function formatReasoningEffort(effort: string | null | undefined): string return 'High' case 'xhigh': case 'extrahigh': - return 'Xhigh' + return 'XHigh' + case 'max': + return 'Max' case 'none': case 'minimal': return '-'