feat(models): refresh qianwenai lineup, add flash-0731 and gpt-5.6-luna, default to flash (#160)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Yaowei Zheng
2026-08-03 15:51:37 +08:00
committed by GitHub
parent c76a2c61bb
commit f3193ae628
17 changed files with 169 additions and 150 deletions
+1 -1
View File
@@ -79,7 +79,7 @@ describe("auth", () => {
);
expect(toml).toContain('name = "bob"');
expect(toml).toContain(
'default_model = { provider = "deepseek", model_id = "deepseek-v4-pro" }',
'default_model = { provider = "deepseek", model_id = "deepseek-v4-flash" }',
);
});
+5 -5
View File
@@ -97,7 +97,7 @@ describe("models preset & catalog enrichment", () => {
const res = await api.get(url());
expect(res.status).toBe(200);
const body = (await res.json()) as ModelsResponse;
expect(body.defaultModel).toEqual({ provider: "deepseek", modelId: "deepseek-v4-pro" });
expect(body.defaultModel).toEqual({ provider: "deepseek", modelId: "deepseek-v4-flash" });
expect(body.models.map(pairKey)).toEqual(catalogPairs);
const sonnet = pick(body, "anthropic", "claude-sonnet-4-6");
@@ -112,10 +112,10 @@ describe("models preset & catalog enrichment", () => {
expect(sonnet.credential).toBeUndefined();
expect(sonnet.clientType).toBeUndefined();
const deepseek = pick(body, "deepseek", "deepseek-v4-flash");
const deepseek = pick(body, "deepseek", "deepseek-v4-pro");
expect(deepseek.vision).toBe(false);
expect(deepseek.envKey).toBe("DEEPSEEK_API_KEY");
expect(pick(body, "deepseek", "deepseek-v4-pro").isDefault).toBe(true);
expect(pick(body, "deepseek", "deepseek-v4-flash").isDefault).toBe(true);
// OpenRouter gateway model: the upstream id contains `/`, but under column storage it's just a
// plain string; openai protocol + a preset base URL inlined on the entry (no secret).
@@ -255,7 +255,7 @@ describe("default_project presets", () => {
const res = await api.get("/api/projects/default_project/models");
expect(res.status).toBe(200);
const body = (await res.json()) as ModelsResponse;
expect(body.defaultModel).toEqual({ provider: "deepseek", modelId: "deepseek-v4-pro" });
expect(body.defaultModel).toEqual({ provider: "deepseek", modelId: "deepseek-v4-flash" });
expect(body.models.map(pairKey)).toEqual(catalogPairs);
// The point of presets is "works out of the box": creating a Session should succeed without passing a model ref.
@@ -266,7 +266,7 @@ describe("default_project presets", () => {
expect(created.status).toBe(201);
const { session } = (await created.json()) as SessionCreateResponse;
expect(session.provider).toBe("deepseek");
expect(session.modelId).toBe("deepseek-v4-pro");
expect(session.modelId).toBe("deepseek-v4-flash");
});
it("a default_project that already has models configured is left untouched (existing CLI config is not overwritten)", async () => {