Skip to content

Commit 02b6daf

Browse files
committed
chore: lint fixes part 5
1 parent e7bd5a3 commit 02b6daf

File tree

15 files changed

+43
-39
lines changed

15 files changed

+43
-39
lines changed

bridge.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ func newInterceptionProcessor(p provider.Provider, cbs *circuitbreaker.ProviderC
276276
log.Debug(ctx, "interception ended")
277277
}
278278

279-
asyncRecorder.RecordInterceptionEnded(ctx, &recorder.InterceptionRecordEnded{ID: interceptor.ID().String()})
279+
_ = asyncRecorder.RecordInterceptionEnded(ctx, &recorder.InterceptionRecordEnded{ID: interceptor.ID().String()})
280280

281281
// Ensure all recording have completed before completing request.
282282
asyncRecorder.Wait()

intercept/chatcompletions/base.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func (i *interceptionBase) unmarshalArgs(in string) (args recorder.ToolArgs) {
173173
}
174174

175175
// writeUpstreamError marshals and writes a given error.
176-
func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, oaiErr *errorResponse) {
176+
func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, oaiErr *chatCompletionResponseError) {
177177
if oaiErr == nil {
178178
return
179179
}
@@ -183,7 +183,7 @@ func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, oaiErr *err
183183

184184
out, err := json.Marshal(oaiErr)
185185
if err != nil {
186-
i.logger.Warn(context.Background(), "failed to marshal upstream error", slog.Error(err), slog.F("error_payload", slog.F("%+v", oaiErr)))
186+
i.logger.Warn(context.Background(), "failed to marshal upstream error", slog.Error(err), slog.F("error_payload", oaiErr))
187187
// Response has to match expected format.
188188
_, _ = w.Write([]byte(`{
189189
"error": {
@@ -228,13 +228,13 @@ func calculateActualInputTokenUsage(in openai.CompletionUsage) int64 {
228228
in.PromptTokensDetails.CachedTokens /* The aggregated number of text input tokens that has been cached from previous requests. */
229229
}
230230

231-
func getErrorResponse(err error) *errorResponse {
231+
func getErrorResponse(err error) *chatCompletionResponseError {
232232
var apiErr *openai.Error
233233
if !errors.As(err, &apiErr) {
234234
return nil
235235
}
236236

237-
return &errorResponse{
237+
return &chatCompletionResponseError{
238238
ErrorObject: &shared.ErrorObject{
239239
Code: apiErr.Code,
240240
Message: apiErr.Message,
@@ -244,15 +244,15 @@ func getErrorResponse(err error) *errorResponse {
244244
}
245245
}
246246

247-
var _ error = &errorResponse{}
247+
var _ error = &chatCompletionResponseError{}
248248

249-
type errorResponse struct {
249+
type chatCompletionResponseError struct {
250250
ErrorObject *shared.ErrorObject `json:"error"`
251251
StatusCode int `json:"-"`
252252
}
253253

254-
func newErrorResponse(msg error) *errorResponse {
255-
return &errorResponse{
254+
func newErrorResponse(msg error) *chatCompletionResponseError {
255+
return &chatCompletionResponseError{
256256
ErrorObject: &shared.ErrorObject{
257257
Code: "error",
258258
Message: msg.Error(),
@@ -261,7 +261,7 @@ func newErrorResponse(msg error) *errorResponse {
261261
}
262262
}
263263

264-
func (a *errorResponse) Error() string {
264+
func (a *chatCompletionResponseError) Error() string {
265265
if a.ErrorObject == nil {
266266
return ""
267267
}

intercept/chatcompletions/streaming.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ func (i *StreamingInterception) ProcessRequest(w http.ResponseWriter, r *http.Re
245245
logger.Warn(ctx, "openai stream error", slog.Error(streamErr))
246246
interceptionErr = oaiErr
247247
} else {
248-
logger.Warn(ctx, "unknown error", slog.Error(streamErr))
248+
logger.Warn(ctx, "unknown stream error encountered", slog.Error(streamErr))
249249
// Unfortunately, the OpenAI SDK does not support parsing errors received in the stream
250250
// into known types (i.e. [shared.OverloadedError]).
251251
// See https://github.com/openai/openai-go/blob/v2.7.0/packages/ssestream/ssestream.go#L171
@@ -254,14 +254,14 @@ func (i *StreamingInterception) ProcessRequest(w http.ResponseWriter, r *http.Re
254254
}
255255
} else if lastErr != nil {
256256
// Otherwise check if any logical errors occurred during processing.
257-
logger.Warn(ctx, "stream failed", slog.Error(lastErr))
257+
logger.Warn(ctx, "stream processing failed", slog.Error(lastErr))
258258
interceptionErr = newErrorResponse(xerrors.Errorf("processing error: %w", lastErr))
259259
}
260260

261261
if interceptionErr != nil {
262262
payload, err := i.marshalErr(interceptionErr)
263263
if err != nil {
264-
logger.Warn(ctx, "failed to marshal error", slog.Error(err), slog.F("error_payload", slog.F("%+v", interceptionErr)))
264+
logger.Warn(ctx, "failed to marshal error", slog.Error(err), slog.F("error_payload", interceptionErr))
265265
} else if err := events.Send(streamCtx, payload); err != nil {
266266
logger.Warn(ctx, "failed to relay error", slog.Error(err), slog.F("payload", payload))
267267
}

intercept/eventstream/eventstream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (s *EventStream) Start(w http.ResponseWriter, r *http.Request) {
132132
return
133133
}
134134
if err := flush(w); err != nil {
135-
s.logger.Warn(ctx, "failed to flush", slog.Error(err))
135+
s.logger.Warn(ctx, "failed to flush event stream", slog.Error(err))
136136
return
137137
}
138138

intercept/messages/base.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ func filterBedrockBetaFlags(headers http.Header, model string) {
405405
}
406406

407407
// writeUpstreamError marshals and writes a given error.
408-
func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, antErr *ErrorResponse) {
408+
func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, antErr *messagesResponseError) {
409409
if antErr == nil {
410410
return
411411
}
@@ -415,7 +415,7 @@ func (i *interceptionBase) writeUpstreamError(w http.ResponseWriter, antErr *Err
415415

416416
out, err := json.Marshal(antErr)
417417
if err != nil {
418-
i.logger.Warn(context.Background(), "failed to marshal upstream error", slog.Error(err), slog.F("error_payload", slog.F("%+v", antErr)))
418+
i.logger.Warn(context.Background(), "failed to marshal upstream error", slog.Error(err), slog.F("error_payload", antErr))
419419
// Response has to match expected format.
420420
// See https://docs.claude.com/en/api/errors#error-shapes.
421421
_, _ = w.Write([]byte(fmt.Sprintf(`{
@@ -487,7 +487,7 @@ func accumulateUsage(dest, src any) {
487487
}
488488
}
489489

490-
func getErrorResponse(err error) *ErrorResponse {
490+
func getErrorResponse(err error) *messagesResponseError {
491491
var apierr *anthropic.Error
492492
if !errors.As(err, &apierr) {
493493
return nil
@@ -505,7 +505,7 @@ func getErrorResponse(err error) *ErrorResponse {
505505
typ = string(detail.Type)
506506
}
507507

508-
return &ErrorResponse{
508+
return &messagesResponseError{
509509
ErrorResponse: &anthropic.ErrorResponse{
510510
Error: anthropic.ErrorObjectUnion{
511511
Message: msg,
@@ -517,16 +517,16 @@ func getErrorResponse(err error) *ErrorResponse {
517517
}
518518
}
519519

520-
var _ error = &ErrorResponse{}
520+
var _ error = &messagesResponseError{}
521521

522-
type ErrorResponse struct {
522+
type messagesResponseError struct {
523523
*anthropic.ErrorResponse
524524

525525
StatusCode int `json:"-"`
526526
}
527527

528-
func newErrorResponse(msg error) *ErrorResponse {
529-
return &ErrorResponse{
528+
func newErrorResponse(msg error) *messagesResponseError {
529+
return &messagesResponseError{
530530
ErrorResponse: &shared.ErrorResponse{
531531
Error: shared.ErrorObjectUnion{
532532
Message: msg.Error(),
@@ -536,7 +536,7 @@ func newErrorResponse(msg error) *ErrorResponse {
536536
}
537537
}
538538

539-
func (a *ErrorResponse) Error() string {
539+
func (a *messagesResponseError) Error() string {
540540
if a.ErrorResponse == nil {
541541
return ""
542542
}

intercept/messages/streaming.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ newStream:
157157
for {
158158
// TODO add outer loop span (https://github.com/coder/aibridge/issues/67)
159159
if err := streamCtx.Err(); err != nil {
160-
lastErr = xerrors.Errorf("stream exit: %w", err)
160+
interceptionErr = xerrors.Errorf("stream exit: %w", err)
161161
break
162162
}
163163

@@ -474,8 +474,8 @@ newStream:
474474
MsgID: message.ID,
475475
Prompt: prompt,
476476
})
477-
prompt = ""
478-
promptFound = false
477+
prompt = "" //nolint:ineffassign // reset to prevent double-recording across newStream iterations
478+
promptFound = false //nolint:ineffassign // reset to prevent double-recording across newStream iterations
479479
}
480480

481481
if events.IsStreaming() {
@@ -488,7 +488,7 @@ newStream:
488488
logger.Warn(ctx, "anthropic stream error", slog.Error(streamErr))
489489
interceptionErr = antErr
490490
} else {
491-
logger.Warn(ctx, "unknown error", slog.Error(streamErr))
491+
logger.Warn(ctx, "unknown stream error encountered", slog.Error(streamErr))
492492
// Unfortunately, the Anthropic SDK does not support parsing errors received in the stream
493493
// into known types (i.e. [shared.OverloadedError]).
494494
// See https://github.com/anthropics/anthropic-sdk-go/blob/v1.12.0/packages/ssestream/ssestream.go#L172-L174
@@ -497,14 +497,14 @@ newStream:
497497
}
498498
} else if lastErr != nil {
499499
// Otherwise check if any logical errors occurred during processing.
500-
logger.Warn(ctx, "stream failed", slog.Error(lastErr))
500+
logger.Warn(ctx, "stream processing failed", slog.Error(lastErr))
501501
interceptionErr = newErrorResponse(xerrors.Errorf("processing error: %w", lastErr))
502502
}
503503

504504
if interceptionErr != nil {
505505
payload, err := i.marshal(interceptionErr)
506506
if err != nil {
507-
logger.Warn(ctx, "failed to marshal error", slog.Error(err), slog.F("error_payload", slog.F("%+v", interceptionErr)))
507+
logger.Warn(ctx, "failed to marshal error", slog.Error(err), slog.F("error_payload", interceptionErr))
508508
} else if err := events.Send(streamCtx, payload); err != nil {
509509
logger.Warn(ctx, "failed to relay error", slog.Error(err), slog.F("payload", payload))
510510
}

internal/integrationtest/circuit_breaker_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,14 @@ func TestCircuitBreaker_FullRecoveryCycle(t *testing.T) {
149149
resp := doRequest()
150150
assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
151151
}
152+
//nolint:gosec // G115: test constant, no overflow risk
152153
assert.Equal(t, int32(cbConfig.FailureThreshold), upstreamCalls.Load())
153154

154155
// Phase 2: Verify circuit is open
155156
// Request should be blocked by circuit breaker (no upstream call)
156157
resp := doRequest()
157158
assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode)
159+
//nolint:gosec // G115: test constant, no overflow risk
158160
assert.Equal(t, int32(cbConfig.FailureThreshold), upstreamCalls.Load(), "No new upstream call when circuit is open")
159161

160162
// Verify metrics show circuit is open
@@ -570,11 +572,13 @@ func TestCircuitBreaker_PerModelIsolation(t *testing.T) {
570572
resp := doRequest("claude-sonnet-4-20250514")
571573
assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
572574
}
575+
//nolint:gosec // G115: test constant, no overflow risk
573576
assert.Equal(t, int32(cbConfig.FailureThreshold), sonnetCalls.Load())
574577

575578
// Verify sonnet circuit is open
576579
resp := doRequest("claude-sonnet-4-20250514")
577580
assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode, "Sonnet circuit should be open")
581+
//nolint:gosec // G115: test constant, no overflow risk
578582
assert.Equal(t, int32(cbConfig.FailureThreshold), sonnetCalls.Load(), "No new sonnet calls when circuit is open")
579583

580584
// Verify sonnet metrics show circuit is open

mcp/proxy_streamable_http.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func (p *StreamableHTTPServerProxy) Init(ctx context.Context) (outErr error) {
8787
return xerrors.Errorf("MCP version negotiation failed; requested %q, accepts %q, received %q", version, strings.Join(mcp.ValidProtocolVersions, ","), result.ProtocolVersion)
8888
}
8989

90-
p.logger.Debug(ctx, "MCP client initialized", slog.F("name", result.ServerInfo.Name), slog.F("server_version", result.ServerInfo.Version))
90+
p.logger.Debug(ctx, "mcp client initialized", slog.F("name", result.ServerInfo.Name), slog.F("server_version", result.ServerInfo.Version))
9191

9292
tools, err := p.fetchTools(ctx)
9393
if err != nil {

passthrough.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func newPassthroughRouter(prov provider.Provider, logger slog.Logger, m *metrics
4444
// Append the request path to the upstream base path.
4545
reqPath, err := url.JoinPath(upURL.Path, r.URL.Path)
4646
if err != nil {
47-
logger.Warn(ctx, "failed to join upstream path", slog.Error(err), slog.F("upstreamPath", upURL.Path), slog.F("requestPath", r.URL.Path))
47+
logger.Warn(ctx, "failed to join upstream path", slog.Error(err), slog.F("upstream_path", upURL.Path), slog.F("request_path", r.URL.Path))
4848
http.Error(w, "failed to join upstream path", http.StatusInternalServerError)
4949
span.SetStatus(codes.Error, "failed to join upstream path: "+err.Error())
5050
return

provider/anthropic.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func (p *Anthropic) CreateInterceptor(_ http.ResponseWriter, r *http.Request, tr
106106
path := strings.TrimPrefix(r.URL.Path, p.RoutePrefix())
107107
if path != routeMessages {
108108
span.SetStatus(codes.Error, "unknown route: "+r.URL.Path)
109-
return nil, UnknownRoute
109+
return nil, ErrUnknownRoute
110110
}
111111

112112
payload, err := io.ReadAll(r.Body)

0 commit comments

Comments
 (0)