fix: map canonical kimi env auth

This commit is contained in:
Peter Steinberger
2026-05-27 16:11:53 +01:00
parent 440820c360
commit af55cf7b1d
2 changed files with 37 additions and 1 deletions

View File

@@ -7,6 +7,9 @@ const envKeys = [
"GOOGLE_APPLICATION_CREDENTIALS",
"GOOGLE_CLOUD_LOCATION",
"GOOGLE_CLOUD_PROJECT",
"KIMI_API_KEY",
"KIMICODE_API_KEY",
"MOONSHOT_API_KEY",
] as const;
const previousEnv = new Map<string, string | undefined>();
@@ -61,6 +64,32 @@ describe("getEnvApiKey", () => {
expect(getEnvApiKey("google-vertex")).toBe("<authenticated>");
});
it("detects canonical Moonshot and Kimi provider credentials", async () => {
setEnv("MOONSHOT_API_KEY", "moonshot-key");
setEnv("KIMI_API_KEY", "kimi-key");
setEnv("KIMICODE_API_KEY", "kimicode-key");
vi.resetModules();
const { findEnvKeys, getEnvApiKey } = await import("./env-api-keys.js");
expect(findEnvKeys("moonshot")).toEqual(["MOONSHOT_API_KEY", "KIMI_API_KEY"]);
expect(getEnvApiKey("moonshot")).toBe("moonshot-key");
expect(findEnvKeys("kimi")).toEqual(["KIMI_API_KEY", "KIMICODE_API_KEY"]);
expect(getEnvApiKey("kimi")).toBe("kimi-key");
expect(findEnvKeys("kimi-coding")).toEqual(["KIMI_API_KEY", "KIMICODE_API_KEY"]);
expect(getEnvApiKey("kimi-coding")).toBe("kimi-key");
});
it("falls back to alternate canonical Kimi env vars", async () => {
setEnv("KIMICODE_API_KEY", "kimicode-key");
vi.resetModules();
const { findEnvKeys, getEnvApiKey } = await import("./env-api-keys.js");
expect(findEnvKeys("kimi")).toEqual(["KIMICODE_API_KEY"]);
expect(getEnvApiKey("kimi")).toBe("kimicode-key");
});
it("does not cache missing Google Vertex ADC credentials", async () => {
const dir = await mkdtemp(join(tmpdir(), "openclaw-vertex-adc-"));
tempDirs.push(dir);

View File

@@ -145,6 +145,14 @@ function getApiKeyEnvVars(provider: string): readonly string[] | undefined {
return ["ANTHROPIC_OAUTH_TOKEN", "ANTHROPIC_API_KEY"];
}
if (provider === "moonshot") {
return ["MOONSHOT_API_KEY", "KIMI_API_KEY"];
}
if (provider === "kimi" || provider === "kimi-coding") {
return ["KIMI_API_KEY", "KIMICODE_API_KEY"];
}
const envMap: Record<string, string> = {
openai: "OPENAI_API_KEY",
"azure-openai-responses": "AZURE_OPENAI_API_KEY",
@@ -167,7 +175,6 @@ function getApiKeyEnvVars(provider: string): readonly string[] | undefined {
together: "TOGETHER_API_KEY",
opencode: "OPENCODE_API_KEY",
"opencode-go": "OPENCODE_API_KEY",
"kimi-coding": "KIMI_API_KEY",
"cloudflare-workers-ai": "CLOUDFLARE_API_KEY",
"cloudflare-ai-gateway": "CLOUDFLARE_API_KEY",
xiaomi: "XIAOMI_API_KEY",