new_pull
This commit is contained in:
@@ -3,7 +3,7 @@ import { envApiKeyAuth } from "../src/auth/helpers.ts";
|
||||
import type { AuthContext, AuthEvent } from "../src/auth/types.ts";
|
||||
import { createModels, createProvider } from "../src/models.ts";
|
||||
import { InMemoryModelsStore, type ModelsStoreEntry } from "../src/models-store.ts";
|
||||
import { builtinModels, builtinProviders } from "../src/providers/all.ts";
|
||||
import { builtinModels, builtinProviders, getBuiltinModel } from "../src/providers/all.ts";
|
||||
import { amazonBedrockProvider } from "../src/providers/amazon-bedrock.ts";
|
||||
import { anthropicProvider } from "../src/providers/anthropic.ts";
|
||||
import { cloudflareAIGatewayProvider } from "../src/providers/cloudflare-ai-gateway.ts";
|
||||
@@ -44,6 +44,17 @@ describe("builtin providers", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("stores native constrained-sampling capabilities in model metadata", () => {
|
||||
const gpt4o = getBuiltinModel("openai", "gpt-4o");
|
||||
expect(gpt4o.compat?.supportsStrictMode).toBe(true);
|
||||
expect(gpt4o.compat?.supportsOpenAIGrammarTools).toBeUndefined();
|
||||
expect(getBuiltinModel("openai", "gpt-5.4").compat).toMatchObject({
|
||||
supportsStrictMode: true,
|
||||
supportsOpenAIGrammarTools: true,
|
||||
});
|
||||
expect(getBuiltinModel("anthropic", "claude-haiku-4-5").compat?.supportsStrictTools).toBe(true);
|
||||
});
|
||||
|
||||
it("uses official Kimi K3 pricing for Moonshot providers", () => {
|
||||
const models = builtinModels();
|
||||
for (const provider of ["moonshotai", "moonshotai-cn"]) {
|
||||
@@ -68,14 +79,29 @@ describe("builtin providers", () => {
|
||||
}
|
||||
});
|
||||
|
||||
it("resolves anthropic auth from env with OAuth token precedence", async () => {
|
||||
it("resolves Anthropic bearer auth from env with auth token precedence", async () => {
|
||||
const models = createModels({
|
||||
authContext: fakeAuthContext({
|
||||
ANTHROPIC_AUTH_TOKEN: "auth-token",
|
||||
ANTHROPIC_OAUTH_TOKEN: "oauth-token",
|
||||
ANTHROPIC_API_KEY: "api-key",
|
||||
}),
|
||||
});
|
||||
models.setProvider(anthropicProvider());
|
||||
|
||||
expect(await models.getAuth("anthropic")).toEqual({
|
||||
auth: { headers: { Authorization: "Bearer auth-token" } },
|
||||
source: "ANTHROPIC_AUTH_TOKEN",
|
||||
});
|
||||
});
|
||||
|
||||
it("preserves Anthropic OAuth token precedence over the API key", async () => {
|
||||
const models = createModels({
|
||||
authContext: fakeAuthContext({ ANTHROPIC_API_KEY: "key", ANTHROPIC_OAUTH_TOKEN: "oauth-token" }),
|
||||
});
|
||||
models.setProvider(anthropicProvider());
|
||||
const model = models.getModel("anthropic", "claude-haiku-4-5")!;
|
||||
|
||||
const result = await models.getAuth(model.provider);
|
||||
const result = await models.getAuth("anthropic");
|
||||
expect(result?.auth.apiKey).toBe("oauth-token");
|
||||
expect(result?.source).toBe("ANTHROPIC_OAUTH_TOKEN");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user