feat(coding-agent): add Vercel AI Gateway attribution (#5798)
This commit is contained in:
@@ -7,6 +7,7 @@ const NVIDIA_NIM_HOST = "integrate.api.nvidia.com";
|
|||||||
const CLOUDFLARE_API_HOST = "api.cloudflare.com";
|
const CLOUDFLARE_API_HOST = "api.cloudflare.com";
|
||||||
const CLOUDFLARE_AI_GATEWAY_HOST = "gateway.ai.cloudflare.com";
|
const CLOUDFLARE_AI_GATEWAY_HOST = "gateway.ai.cloudflare.com";
|
||||||
const OPENCODE_HOST = "opencode.ai";
|
const OPENCODE_HOST = "opencode.ai";
|
||||||
|
const VERCEL_GATEWAY_HOST = "ai-gateway.vercel.sh";
|
||||||
|
|
||||||
function matchesHost(baseUrl: string, expectedHost: string): boolean {
|
function matchesHost(baseUrl: string, expectedHost: string): boolean {
|
||||||
try {
|
try {
|
||||||
@@ -33,6 +34,10 @@ function isCloudflareModel(model: Model<Api>): boolean {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isVercelGatewayModel(model: Model<Api>): boolean {
|
||||||
|
return model.provider === "vercel-ai-gateway" || matchesHost(model.baseUrl, VERCEL_GATEWAY_HOST);
|
||||||
|
}
|
||||||
|
|
||||||
function getDefaultAttributionHeaders(
|
function getDefaultAttributionHeaders(
|
||||||
model: Model<Api>,
|
model: Model<Api>,
|
||||||
settingsManager: SettingsManager,
|
settingsManager: SettingsManager,
|
||||||
@@ -61,6 +66,13 @@ function getDefaultAttributionHeaders(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isVercelGatewayModel(model)) {
|
||||||
|
return {
|
||||||
|
"http-referer": "https://pi.dev",
|
||||||
|
"x-title": "pi",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -196,6 +196,13 @@ describe("createAgentSession provider attribution headers", () => {
|
|||||||
expect(headers?.["X-OpenRouter-Categories"]).toBe("provider-category");
|
expect(headers?.["X-OpenRouter-Categories"]).toBe("provider-category");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("adds default attribution headers for Vercel AI Gateway models", async () => {
|
||||||
|
const headers = await captureHeaders(createModel("vercel-ai-gateway", "https://ai-gateway.vercel.sh/v1"));
|
||||||
|
|
||||||
|
expect(headers?.["http-referer"]).toBe("https://pi.dev");
|
||||||
|
expect(headers?.["x-title"]).toBe("pi");
|
||||||
|
});
|
||||||
|
|
||||||
it("adds default attribution headers for direct NVIDIA NIM endpoints", async () => {
|
it("adds default attribution headers for direct NVIDIA NIM endpoints", async () => {
|
||||||
const headers = await captureHeaders(createModel("custom-nim", "https://integrate.api.nvidia.com/v1"));
|
const headers = await captureHeaders(createModel("custom-nim", "https://integrate.api.nvidia.com/v1"));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user