From fa346d7b781dd49c07667f6383bfe36a9498d4dd Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 10 Jan 2026 19:45:51 +0000 Subject: [PATCH] fix: accept Z_AI_API_KEY for zai --- src/agents/model-auth.test.ts | 31 +++++++++++++++++++++++++++++++ src/agents/model-auth.ts | 5 ++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/agents/model-auth.test.ts b/src/agents/model-auth.test.ts index d6f959b66..985a7110e 100644 --- a/src/agents/model-auth.test.ts +++ b/src/agents/model-auth.test.ts @@ -199,4 +199,35 @@ describe("getApiKeyForModel", () => { } } }); + + it("accepts legacy Z_AI_API_KEY for zai", async () => { + const previousZai = process.env.ZAI_API_KEY; + const previousLegacy = process.env.Z_AI_API_KEY; + + try { + delete process.env.ZAI_API_KEY; + process.env.Z_AI_API_KEY = "zai-test-key"; + + vi.resetModules(); + const { resolveApiKeyForProvider } = await import("./model-auth.js"); + + const resolved = await resolveApiKeyForProvider({ + provider: "zai", + store: { version: 1, profiles: {} }, + }); + expect(resolved.apiKey).toBe("zai-test-key"); + expect(resolved.source).toContain("Z_AI_API_KEY"); + } finally { + if (previousZai === undefined) { + delete process.env.ZAI_API_KEY; + } else { + process.env.ZAI_API_KEY = previousZai; + } + if (previousLegacy === undefined) { + delete process.env.Z_AI_API_KEY; + } else { + process.env.Z_AI_API_KEY = previousLegacy; + } + } + }); }); diff --git a/src/agents/model-auth.ts b/src/agents/model-auth.ts index ef6c7f383..fe9b164ba 100644 --- a/src/agents/model-auth.ts +++ b/src/agents/model-auth.ts @@ -123,6 +123,10 @@ export function resolveEnvApiKey(provider: string): EnvApiKeyResult | null { return pick("ANTHROPIC_OAUTH_TOKEN") ?? pick("ANTHROPIC_API_KEY"); } + if (provider === "zai") { + return pick("ZAI_API_KEY") ?? pick("Z_AI_API_KEY"); + } + if (provider === "google-vertex") { const envKey = getEnvApiKey(provider); if (!envKey) return null; @@ -137,7 +141,6 @@ export function resolveEnvApiKey(provider: string): EnvApiKeyResult | null { xai: "XAI_API_KEY", openrouter: "OPENROUTER_API_KEY", minimax: "MINIMAX_API_KEY", - zai: "ZAI_API_KEY", mistral: "MISTRAL_API_KEY", "opencode-zen": "OPENCODE_ZEN_API_KEY", };