mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
Official Kimi (Moonshot AI) partnership rollout on the dashboard: a dismissible home-page sponsor banner (version-gated through v3.8.60), a one-click "Kimi Coding" combo preset (kimi-k3 primary via moonshot, fallback to kimi-coding/kimi-web), the official theme-aware logomark wired into ProviderIcon and the README sponsors card, and aff-tagged partner links (aff=omniroute) across the 3 visible Kimi provider cards' top-of-page header link. The moonshot provider's dashboard display name is rebranded to "Kimi" (id/alias/routing untouched — DB connections, combos and /dashboard/providers/moonshot still address it by id). Refs: Kimi partnership pilot.
51 lines
2.1 KiB
TypeScript
51 lines
2.1 KiB
TypeScript
// Kimi Coding combo preset — pure data + gate logic.
|
|
// See src/app/(dashboard)/dashboard/combos/kimiComboPreset.ts.
|
|
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
const kimiComboPreset = await import(
|
|
"../../src/app/(dashboard)/dashboard/combos/kimiComboPreset.ts"
|
|
);
|
|
const createComboSchema = (
|
|
await import("../../src/shared/validation/schemas/combo.ts")
|
|
).createComboSchema;
|
|
|
|
test("KIMI_CODING_PRESET_NAME is the exact combo name used everywhere (card gate, POST payload)", () => {
|
|
assert.equal(kimiComboPreset.KIMI_CODING_PRESET_NAME, "Kimi Coding");
|
|
assert.equal(kimiComboPreset.KIMI_CODING_PRESET.name, kimiComboPreset.KIMI_CODING_PRESET_NAME);
|
|
});
|
|
|
|
test("KIMI_CODING_PRESET uses priority strategy — kimi-k3 primary, kimi-coding/kimi-web fallback in order", () => {
|
|
const preset = kimiComboPreset.KIMI_CODING_PRESET;
|
|
assert.equal(preset.strategy, "priority");
|
|
assert.deepEqual(
|
|
preset.models.map((m) => [m.provider, m.model]),
|
|
[
|
|
["moonshot", "kimi-k3"],
|
|
["kimi-coding", "k3"],
|
|
["kimi-web", "k3"],
|
|
],
|
|
"moonshot/kimi-k3 must be first (priority strategy = array order = fallback order)"
|
|
);
|
|
for (const m of preset.models) {
|
|
assert.equal(typeof m.weight, "number");
|
|
}
|
|
});
|
|
|
|
test("KIMI_CODING_PRESET is a valid createComboSchema payload (would not 400 on POST /api/combos)", () => {
|
|
const result = createComboSchema.safeParse(kimiComboPreset.KIMI_CODING_PRESET);
|
|
assert.equal(result.success, true, result.success ? "" : JSON.stringify(result.error?.issues));
|
|
});
|
|
|
|
test("hasKimiCodingPreset detects an existing preset combo by name, case-sensitively", () => {
|
|
assert.equal(kimiComboPreset.hasKimiCodingPreset([]), false);
|
|
assert.equal(kimiComboPreset.hasKimiCodingPreset([{ name: "Some other combo" }]), false);
|
|
assert.equal(kimiComboPreset.hasKimiCodingPreset([{ name: "Kimi Coding" }]), true);
|
|
assert.equal(
|
|
kimiComboPreset.hasKimiCodingPreset([{ name: "foo" }, { name: "Kimi Coding" }, { name: "bar" }]),
|
|
true
|
|
);
|
|
assert.equal(kimiComboPreset.hasKimiCodingPreset([{ name: "kimi coding" }]), false);
|
|
assert.equal(kimiComboPreset.hasKimiCodingPreset([{ name: null }, {}]), false);
|
|
});
|