mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 04:41:25 +00:00
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f5a7e1a385
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
70 lines
2.4 KiB
TypeScript
70 lines
2.4 KiB
TypeScript
import { mkdtempSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import { captureEnv } from "../test-utils/env.js";
|
|
import { buildKilocodeProvider, resolveImplicitProviders } from "./models-config.providers.js";
|
|
|
|
const KILOCODE_MODEL_IDS = [
|
|
"anthropic/claude-opus-4.6",
|
|
"z-ai/glm-5:free",
|
|
"minimax/minimax-m2.5:free",
|
|
"anthropic/claude-sonnet-4.5",
|
|
"openai/gpt-5.2",
|
|
"google/gemini-3-pro-preview",
|
|
"google/gemini-3-flash-preview",
|
|
"x-ai/grok-code-fast-1",
|
|
"moonshotai/kimi-k2.5",
|
|
];
|
|
|
|
describe("Kilo Gateway implicit provider", () => {
|
|
it("should include kilocode when KILOCODE_API_KEY is configured", async () => {
|
|
const agentDir = mkdtempSync(join(tmpdir(), "openclaw-test-"));
|
|
const envSnapshot = captureEnv(["KILOCODE_API_KEY"]);
|
|
process.env.KILOCODE_API_KEY = "test-key";
|
|
|
|
try {
|
|
const providers = await resolveImplicitProviders({ agentDir });
|
|
expect(providers?.kilocode).toBeDefined();
|
|
expect(providers?.kilocode?.models?.length).toBeGreaterThan(0);
|
|
} finally {
|
|
envSnapshot.restore();
|
|
}
|
|
});
|
|
|
|
it("should not include kilocode when no API key is configured", async () => {
|
|
const agentDir = mkdtempSync(join(tmpdir(), "openclaw-test-"));
|
|
const envSnapshot = captureEnv(["KILOCODE_API_KEY"]);
|
|
delete process.env.KILOCODE_API_KEY;
|
|
|
|
try {
|
|
const providers = await resolveImplicitProviders({ agentDir });
|
|
expect(providers?.kilocode).toBeUndefined();
|
|
} finally {
|
|
envSnapshot.restore();
|
|
}
|
|
});
|
|
|
|
it("should build kilocode provider with correct configuration", () => {
|
|
const provider = buildKilocodeProvider();
|
|
expect(provider.baseUrl).toBe("https://api.kilo.ai/api/gateway/");
|
|
expect(provider.api).toBe("openai-completions");
|
|
expect(provider.models).toBeDefined();
|
|
expect(provider.models.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("should include the default kilocode model", () => {
|
|
const provider = buildKilocodeProvider();
|
|
const modelIds = provider.models.map((m) => m.id);
|
|
expect(modelIds).toContain("anthropic/claude-opus-4.6");
|
|
});
|
|
|
|
it("should include the full surfaced model catalog", () => {
|
|
const provider = buildKilocodeProvider();
|
|
const modelIds = provider.models.map((m) => m.id);
|
|
for (const modelId of KILOCODE_MODEL_IDS) {
|
|
expect(modelIds).toContain(modelId);
|
|
}
|
|
});
|
|
});
|