Add Atlas Cloud provider support (#896)

* Add Atlas Cloud provider support

* fix: restore files removed by Atlas provider PR

---------

Co-authored-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com>
This commit is contained in:
nb213
2026-07-30 22:27:18 +08:00
committed by GitHub
parent 4b07228320
commit c8463aefa7
6 changed files with 94 additions and 3 deletions

View File

@@ -206,6 +206,16 @@ vi.mock("@aihubmix/ai-sdk-provider", () => {
return { aihubmix: mockAihubmix, createAihubmix: mockCreateAihubmix }
})
vi.mock("@ai-sdk/openai", () => {
const mockModel = { modelId: "test-model" }
const mockChat = vi.fn(() => mockModel)
const mockProviderFn = vi.fn(() => mockModel) as any
mockProviderFn.chat = mockChat
const mockCreateOpenAI = vi.fn(() => mockProviderFn)
const mockOpenai = vi.fn(() => mockModel)
return { createOpenAI: mockCreateOpenAI, openai: mockOpenai }
})
describe("AIHubMix provider", () => {
let createAihubmixMock: ReturnType<typeof vi.fn>
const savedEnv: Record<string, string | undefined> = {}
@@ -262,6 +272,54 @@ describe("AIHubMix provider", () => {
})
})
describe("Atlas Cloud provider", () => {
let createOpenAIMock: ReturnType<typeof vi.fn>
const savedEnv: Record<string, string | undefined> = {}
beforeEach(async () => {
savedEnv.ATLASCLOUD_API_KEY = process.env.ATLASCLOUD_API_KEY
savedEnv.ATLASCLOUD_BASE_URL = process.env.ATLASCLOUD_BASE_URL
delete process.env.ATLASCLOUD_BASE_URL
const mod = await import("@ai-sdk/openai")
createOpenAIMock = mod.createOpenAI as ReturnType<typeof vi.fn>
createOpenAIMock.mockClear()
})
afterEach(() => {
process.env.ATLASCLOUD_API_KEY = savedEnv.ATLASCLOUD_API_KEY
process.env.ATLASCLOUD_BASE_URL = savedEnv.ATLASCLOUD_BASE_URL
})
it("uses Atlas Cloud default endpoint with ATLASCLOUD_API_KEY", () => {
process.env.ATLASCLOUD_API_KEY = "server-atlas-key"
getAIModel({
provider: "atlascloud",
modelId: "qwen/qwen3.5-flash",
})
expect(createOpenAIMock).toHaveBeenCalledWith({
apiKey: "server-atlas-key",
baseURL: "https://api.atlascloud.ai/v1",
})
})
it("uses custom Atlas Cloud base URL when provided", () => {
getAIModel({
provider: "atlascloud",
apiKey: "client-atlas-key",
baseUrl: "https://proxy.example.com/v1",
modelId: "deepseek-ai/deepseek-v4-pro",
})
expect(createOpenAIMock).toHaveBeenCalledWith({
apiKey: "client-atlas-key",
baseURL: "https://proxy.example.com/v1",
})
})
})
describe("Kimi provider uses createDeepSeek for reasoning_content support", () => {
let createDeepSeekMock: ReturnType<typeof vi.fn>
const savedEnv: Record<string, string | undefined> = {}

View File

@@ -39,6 +39,22 @@ describe("ServerModelsConfigSchema", () => {
expect(() => ServerModelsConfigSchema.parse(config)).not.toThrow()
})
it("accepts Atlas Cloud provider names", () => {
const config: ServerModelsConfig = {
providers: [
{
name: "Atlas Cloud Server",
provider: "atlascloud",
models: ["qwen/qwen3.5-flash"],
apiKeyEnv: "ATLASCLOUD_API_KEY",
baseUrlEnv: "ATLASCLOUD_BASE_URL",
},
],
}
expect(() => ServerModelsConfigSchema.parse(config)).not.toThrow()
})
it("rejects invalid provider names", () => {
const invalidConfig = {
providers: [