mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-09-02 01:20:23 +08:00
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:
@@ -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> = {}
|
||||
|
||||
@@ -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: [
|
||||
|
||||
Reference in New Issue
Block a user