Skip to content

Commit 4e440a0

Browse files
committed
fix(providers): compose ClawRouter native auth
1 parent 34dbf35 commit 4e440a0

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

extensions/clawrouter/index.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,13 @@ describe("clawrouter provider plugin", () => {
105105
provider: "clawrouter",
106106
api: "anthropic-messages",
107107
id: "anthropic/default",
108+
params: {
109+
clawrouterRoute: {
110+
api: "anthropic-messages",
111+
baseUrl: "https://clawrouter.example/v1/native/anthropic",
112+
upstreamModel: "claude-sonnet-4-5-20250929",
113+
},
114+
},
108115
} as never,
109116
{} as never,
110117
{ apiKey: "CLAWROUTER_API_KEY" } as never,
@@ -117,6 +124,8 @@ describe("clawrouter provider plugin", () => {
117124
expect(calls[0]?.id).toBe("claude-sonnet-4-5-20250929");
118125
expect(calls[0]?.params).toBeUndefined();
119126
expect(calls[1]?.headers).toBeUndefined();
127+
expect(calls[1]?.id).toBe("claude-sonnet-4-5-20250929");
128+
expect(calls[1]?.params).toBeUndefined();
120129
});
121130

122131
it("resolves managed secret refs before credential-scoped discovery", async () => {

extensions/clawrouter/stream.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ function createClawRouterStreamWrapper(underlying: StreamFn | undefined): Stream
2424
}
2525
return (model, context, options) => {
2626
const apiKey = options?.apiKey?.trim();
27+
const preparedModel = prepareClawRouterRequestModel(model);
2728
if (!apiKey || apiKey === ENV_API_KEY_MARKER) {
28-
return underlying(model, context, options);
29+
return underlying(preparedModel, context, options);
2930
}
3031
return underlying(
31-
prepareClawRouterRequestModel({
32-
...model,
33-
headers: withBearerAuthorization(model.headers, apiKey),
34-
}),
32+
{
33+
...preparedModel,
34+
headers: withBearerAuthorization(preparedModel.headers, apiKey),
35+
},
3536
context,
3637
options,
3738
);

0 commit comments

Comments
 (0)