mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
615c99c62b
Register the xai_oauth provider type constant and add xAI (Grok) presets targeting grok-4.5. The Desktop preset routes branded claude-* model IDs to grok-4.5 upstream so it passes Desktop's third-party model validation.
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { claudeDesktopProviderPresets } from "@/config/claudeDesktopProviderPresets";
|
|
import { providerPresets } from "@/config/claudeProviderPresets";
|
|
|
|
describe("xAI OAuth provider presets", () => {
|
|
it("pins the Claude Code preset to managed Responses auth", () => {
|
|
const preset = providerPresets.find((entry) => entry.name === "xAI (Grok)");
|
|
expect(preset).toBeDefined();
|
|
expect(preset).toMatchObject({
|
|
category: "third_party",
|
|
apiFormat: "openai_responses",
|
|
providerType: "xai_oauth",
|
|
requiresOAuth: true,
|
|
icon: "xai",
|
|
});
|
|
expect((preset!.settingsConfig as any).env).toMatchObject({
|
|
ANTHROPIC_BASE_URL: "https://api.x.ai/v1",
|
|
ANTHROPIC_MODEL: "grok-4.5",
|
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: "grok-4.5",
|
|
ANTHROPIC_DEFAULT_SONNET_MODEL: "grok-4.5",
|
|
ANTHROPIC_DEFAULT_OPUS_MODEL: "grok-4.5",
|
|
});
|
|
expect((preset!.settingsConfig as any).env).not.toHaveProperty(
|
|
"ANTHROPIC_API_KEY",
|
|
);
|
|
expect((preset!.settingsConfig as any).env).not.toHaveProperty(
|
|
"ANTHROPIC_AUTH_TOKEN",
|
|
);
|
|
});
|
|
|
|
it("pins the Claude Desktop preset to proxy Responses mode without 1M", () => {
|
|
const preset = claudeDesktopProviderPresets.find(
|
|
(entry) => entry.name === "xAI (Grok)",
|
|
);
|
|
expect(preset).toMatchObject({
|
|
category: "third_party",
|
|
baseUrl: "https://api.x.ai/v1",
|
|
mode: "proxy",
|
|
apiFormat: "openai_responses",
|
|
providerType: "xai_oauth",
|
|
requiresOAuth: true,
|
|
icon: "xai",
|
|
});
|
|
expect(preset!.modelRoutes).toEqual([
|
|
expect.objectContaining({
|
|
upstreamModel: "grok-4.5",
|
|
supports1m: false,
|
|
}),
|
|
]);
|
|
});
|
|
});
|