Skip to content

Commit feded7a

Browse files
committed
make argument order consistent
1 parent 3b3d540 commit feded7a

16 files changed

Lines changed: 40 additions & 40 deletions

bridge.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ var _ http.Handler = &RequestBridge{}
4848
// A [Recorder] is also required to record prompt, tool, and token use.
4949
//
5050
// mcpProxy will be closed when the [RequestBridge] is closed.
51-
func NewRequestBridge(ctx context.Context, providers []Provider, recorder Recorder, mcpProxy mcp.ServerProxier, metrics *Metrics, tracer trace.Tracer, logger slog.Logger) (*RequestBridge, error) {
51+
func NewRequestBridge(ctx context.Context, providers []Provider, recorder Recorder, mcpProxy mcp.ServerProxier, logger slog.Logger, metrics *Metrics, tracer trace.Tracer) (*RequestBridge, error) {
5252
mux := http.NewServeMux()
5353

5454
for _, provider := range providers {
5555
// Add the known provider-specific routes which are bridged (i.e. intercepted and augmented).
5656
for _, path := range provider.BridgedRoutes() {
57-
mux.HandleFunc(path, newInterceptionProcessor(provider, logger, recorder, mcpProxy, metrics, tracer))
57+
mux.HandleFunc(path, newInterceptionProcessor(provider, recorder, mcpProxy, logger, metrics, tracer))
5858
}
5959

6060
// Any requests which passthrough to this will be reverse-proxied to the upstream.

bridge_integration_test.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func TestAnthropicMessages(t *testing.T) {
137137

138138
logger := slogtest.Make(t, &slogtest.Options{}).Leveled(slog.LevelDebug)
139139
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(srv.URL, apiKey), nil)}
140-
b, err := aibridge.NewRequestBridge(ctx, providers, recorderClient, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
140+
b, err := aibridge.NewRequestBridge(ctx, providers, recorderClient, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
141141
require.NoError(t, err)
142142

143143
mockSrv := httptest.NewUnstartedServer(b)
@@ -218,7 +218,7 @@ func TestAWSBedrockIntegration(t *testing.T) {
218218
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
219219
b, err := aibridge.NewRequestBridge(ctx, []aibridge.Provider{
220220
aibridge.NewAnthropicProvider(anthropicCfg("http://unused", apiKey), bedrockCfg),
221-
}, recorderClient, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
221+
}, recorderClient, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
222222
require.NoError(t, err)
223223

224224
mockSrv := httptest.NewUnstartedServer(b)
@@ -316,7 +316,7 @@ func TestAWSBedrockIntegration(t *testing.T) {
316316
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug)
317317
b, err := aibridge.NewRequestBridge(
318318
ctx, []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(srv.URL, apiKey), bedrockCfg)},
319-
recorderClient, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
319+
recorderClient, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
320320
require.NoError(t, err)
321321

322322
mockBridgeSrv := httptest.NewUnstartedServer(b)
@@ -404,7 +404,7 @@ func TestOpenAIChatCompletions(t *testing.T) {
404404

405405
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
406406
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(srv.URL, apiKey))}
407-
b, err := aibridge.NewRequestBridge(t.Context(), providers, recorderClient, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
407+
b, err := aibridge.NewRequestBridge(t.Context(), providers, recorderClient, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
408408
require.NoError(t, err)
409409

410410
mockSrv := httptest.NewUnstartedServer(b)
@@ -472,7 +472,7 @@ func TestSimple(t *testing.T) {
472472
configureFunc: func(addr string, client aibridge.Recorder) (*aibridge.RequestBridge, error) {
473473
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
474474
provider := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
475-
return aibridge.NewRequestBridge(t.Context(), provider, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
475+
return aibridge.NewRequestBridge(t.Context(), provider, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
476476
},
477477
getResponseIDFunc: func(streaming bool, resp *http.Response) (string, error) {
478478
if streaming {
@@ -511,7 +511,7 @@ func TestSimple(t *testing.T) {
511511
configureFunc: func(addr string, client aibridge.Recorder) (*aibridge.RequestBridge, error) {
512512
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
513513
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
514-
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
514+
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
515515
},
516516
getResponseIDFunc: func(streaming bool, resp *http.Response) (string, error) {
517517
if streaming {
@@ -643,7 +643,7 @@ func TestFallthrough(t *testing.T) {
643643
configureFunc: func(addr string, client aibridge.Recorder) (aibridge.Provider, *aibridge.RequestBridge) {
644644
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
645645
provider := aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)
646-
bridge, err := aibridge.NewRequestBridge(t.Context(), []aibridge.Provider{provider}, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
646+
bridge, err := aibridge.NewRequestBridge(t.Context(), []aibridge.Provider{provider}, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
647647
require.NoError(t, err)
648648
return provider, bridge
649649
},
@@ -654,7 +654,7 @@ func TestFallthrough(t *testing.T) {
654654
configureFunc: func(addr string, client aibridge.Recorder) (aibridge.Provider, *aibridge.RequestBridge) {
655655
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
656656
provider := aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))
657-
bridge, err := aibridge.NewRequestBridge(t.Context(), []aibridge.Provider{provider}, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
657+
bridge, err := aibridge.NewRequestBridge(t.Context(), []aibridge.Provider{provider}, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
658658
require.NoError(t, err)
659659
return provider, bridge
660660
},
@@ -733,7 +733,7 @@ func setupMCPServerProxiesForTest(t *testing.T, tracer trace.Tracer) map[string]
733733
t.Cleanup(mcpSrv.Close)
734734

735735
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
736-
proxy, err := mcp.NewStreamableHTTPServerProxy(logger, tracer, "coder", mcpSrv.URL, nil, nil, nil)
736+
proxy, err := mcp.NewStreamableHTTPServerProxy("coder", mcpSrv.URL, nil, nil, nil, logger, tracer)
737737
require.NoError(t, err)
738738

739739
// Initialize MCP client, fetch tools, and inject into bridge
@@ -761,7 +761,7 @@ func TestAnthropicInjectedTools(t *testing.T) {
761761
configureFn := func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
762762
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
763763
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
764-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
764+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
765765
}
766766

767767
// Build the requirements & make the assertions which are common to all providers.
@@ -843,7 +843,7 @@ func TestOpenAIInjectedTools(t *testing.T) {
843843
configureFn := func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
844844
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
845845
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
846-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
846+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
847847
}
848848

849849
// Build the requirements & make the assertions which are common to all providers.
@@ -1027,7 +1027,7 @@ func TestErrorHandling(t *testing.T) {
10271027
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
10281028
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
10291029
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
1030-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1030+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
10311031
},
10321032
responseHandlerFn: func(resp *http.Response) {
10331033
require.Equal(t, http.StatusBadRequest, resp.StatusCode)
@@ -1045,7 +1045,7 @@ func TestErrorHandling(t *testing.T) {
10451045
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
10461046
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
10471047
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
1048-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1048+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
10491049
},
10501050
responseHandlerFn: func(resp *http.Response) {
10511051
require.Equal(t, http.StatusBadRequest, resp.StatusCode)
@@ -1134,7 +1134,7 @@ func TestErrorHandling(t *testing.T) {
11341134
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
11351135
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
11361136
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
1137-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1137+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
11381138
},
11391139
responseHandlerFn: func(resp *http.Response) {
11401140
// Server responds first with 200 OK then starts streaming.
@@ -1153,7 +1153,7 @@ func TestErrorHandling(t *testing.T) {
11531153
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
11541154
logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
11551155
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
1156-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1156+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
11571157
},
11581158
responseHandlerFn: func(resp *http.Response) {
11591159
// Server responds first with 200 OK then starts streaming.
@@ -1241,7 +1241,7 @@ func TestStableRequestEncoding(t *testing.T) {
12411241
createRequestFunc: createAnthropicMessagesReq,
12421242
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
12431243
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
1244-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1244+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
12451245
},
12461246
},
12471247
{
@@ -1250,7 +1250,7 @@ func TestStableRequestEncoding(t *testing.T) {
12501250
createRequestFunc: createOpenAIChatCompletionsReq,
12511251
configureFunc: func(addr string, client aibridge.Recorder, srvProxyMgr *mcp.ServerProxyManager) (*aibridge.RequestBridge, error) {
12521252
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
1253-
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, nil, testTracer, logger)
1253+
return aibridge.NewRequestBridge(t.Context(), providers, client, srvProxyMgr, logger, nil, testTracer)
12541254
},
12551255
},
12561256
}
@@ -1357,7 +1357,7 @@ func TestEnvironmentDoNotLeak(t *testing.T) {
13571357
configureFunc: func(addr string, client aibridge.Recorder) (*aibridge.RequestBridge, error) {
13581358
logger := slogtest.Make(t, &slogtest.Options{}).Leveled(slog.LevelDebug)
13591359
providers := []aibridge.Provider{aibridge.NewAnthropicProvider(anthropicCfg(addr, apiKey), nil)}
1360-
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
1360+
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
13611361
},
13621362
createRequest: createAnthropicMessagesReq,
13631363
envVars: map[string]string{
@@ -1371,7 +1371,7 @@ func TestEnvironmentDoNotLeak(t *testing.T) {
13711371
configureFunc: func(addr string, client aibridge.Recorder) (*aibridge.RequestBridge, error) {
13721372
logger := slogtest.Make(t, &slogtest.Options{}).Leveled(slog.LevelDebug)
13731373
providers := []aibridge.Provider{aibridge.NewOpenAIProvider(openaiCfg(addr, apiKey))}
1374-
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), nil, testTracer, logger)
1374+
return aibridge.NewRequestBridge(t.Context(), providers, client, mcp.NewServerProxyManager(nil, testTracer), logger, nil, testTracer)
13751375
},
13761376
createRequest: createOpenAIChatCompletionsReq,
13771377
envVars: map[string]string{

intercept_anthropic_messages_blocking.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (i *AnthropicMessagesBlockingInterception) ProcessRequest(w http.ResponseWr
177177
continue
178178
}
179179

180-
res, err := tool.Call(ctx, i.tracer, tc.Input)
180+
res, err := tool.Call(ctx, tc.Input, i.tracer)
181181

182182
_ = i.recorder.RecordToolUsage(ctx, &ToolUsageRecord{
183183
InterceptionID: i.ID().String(),

intercept_anthropic_messages_streaming.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ newStream:
282282
continue
283283
}
284284

285-
res, err := tool.Call(streamCtx, i.tracer, input)
285+
res, err := tool.Call(streamCtx, input, i.tracer)
286286

287287
_ = i.recorder.RecordToolUsage(streamCtx, &ToolUsageRecord{
288288
InterceptionID: i.ID().String(),

intercept_openai_chat_base.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ type OpenAIChatInterceptionBase struct {
2424
baseURL string
2525
key string
2626

27-
tracer trace.Tracer
2827
logger slog.Logger
28+
tracer trace.Tracer
2929

3030
recorder Recorder
3131
mcpProxy mcp.ServerProxier

intercept_openai_chat_blocking.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func (i *OpenAIBlockingChatInterception) ProcessRequest(w http.ResponseWriter, r
151151
}
152152

153153
args := i.unmarshalArgs(tc.Function.Arguments)
154-
res, err := tool.Call(ctx, i.tracer, args)
154+
res, err := tool.Call(ctx, args, i.tracer)
155155
_ = i.recorder.RecordToolUsage(ctx, &ToolUsageRecord{
156156
InterceptionID: i.ID().String(),
157157
MsgID: completion.ID,

intercept_openai_chat_streaming.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ func (i *OpenAIStreamingChatInterception) ProcessRequest(w http.ResponseWriter,
242242

243243
id := toolCall.ID
244244
args := i.unmarshalArgs(toolCall.Arguments)
245-
toolRes, toolErr := tool.Call(streamCtx, i.tracer, args)
245+
toolRes, toolErr := tool.Call(streamCtx, args, i.tracer)
246246
_ = i.recorder.RecordToolUsage(streamCtx, &ToolUsageRecord{
247247
InterceptionID: i.ID().String(),
248248
MsgID: processor.getMsgID(),

interception.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ const recordingTimeout = time.Second * 5
4040

4141
// newInterceptionProcessor returns an [http.HandlerFunc] which is capable of creating a new interceptor and processing a given request
4242
// using [Provider] p, recording all usage events using [Recorder] recorder.
43-
func newInterceptionProcessor(p Provider, logger slog.Logger, recorder Recorder, mcpProxy mcp.ServerProxier, metrics *Metrics, tracer trace.Tracer) http.HandlerFunc {
43+
func newInterceptionProcessor(p Provider, recorder Recorder, mcpProxy mcp.ServerProxier, logger slog.Logger, metrics *Metrics, tracer trace.Tracer) http.HandlerFunc {
4444
return func(w http.ResponseWriter, r *http.Request) {
4545
ctx, span := tracer.Start(r.Context(), "Intercept")
4646
defer span.End()
4747

48-
interceptor, err := p.CreateInterceptor(tracer, w, r.WithContext(ctx))
48+
interceptor, err := p.CreateInterceptor(w, r.WithContext(ctx), tracer)
4949
if err != nil {
5050
span.SetStatus(codes.Error, fmt.Sprintf("failed to create interceptor: %v", err))
5151
logger.Warn(ctx, "failed to create interceptor", slog.Error(err), slog.F("path", r.URL.Path))

mcp/mcp_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,9 @@ func TestToolInjectionOrder(t *testing.T) {
309309

310310
tracer := otel.Tracer("forTesting")
311311
// When: creating two MCP server proxies, both listing the same tools by name but under different server namespaces.
312-
proxy, err := mcp.NewStreamableHTTPServerProxy(logger, tracer, "coder", mcpSrv.URL, nil, nil, nil)
312+
proxy, err := mcp.NewStreamableHTTPServerProxy("coder", mcpSrv.URL, nil, nil, nil, logger, tracer)
313313
require.NoError(t, err)
314-
proxy2, err := mcp.NewStreamableHTTPServerProxy(logger, tracer, "shmoder", mcpSrv.URL, nil, nil, nil)
314+
proxy2, err := mcp.NewStreamableHTTPServerProxy("shmoder", mcpSrv.URL, nil, nil, nil, logger, tracer)
315315
require.NoError(t, err)
316316

317317
// Then: initialize both proxies.

mcp/proxy_streamable_http.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type StreamableHTTPServerProxy struct {
3232
tools map[string]*Tool
3333
}
3434

35-
func NewStreamableHTTPServerProxy(logger slog.Logger, tracer trace.Tracer, serverName, serverURL string, headers map[string]string, allowlist, denylist *regexp.Regexp) (*StreamableHTTPServerProxy, error) {
35+
func NewStreamableHTTPServerProxy(serverName, serverURL string, headers map[string]string, allowlist, denylist *regexp.Regexp, logger slog.Logger, tracer trace.Tracer) (*StreamableHTTPServerProxy, error) {
3636
var opts []transport.StreamableHTTPCOption
3737
if headers != nil {
3838
opts = append(opts, transport.WithHTTPHeaders(headers))

0 commit comments

Comments
 (0)