From 5e635c96564af35e9c834aef8177e266d851262f Mon Sep 17 00:00:00 2001 From: Manik Vahsith <49544491+manikv12@users.noreply.github.com> Date: Fri, 30 Jan 2026 00:17:42 -0600 Subject: [PATCH] feat: add Kimi K2.5 model to synthetic catalog (#4407) * feat: add Kimi K2.5 model to synthetic catalog Add hf:moonshotai/Kimi-K2.5 to the synthetic model catalog. This model is available via dev.synthetic.new API. - 256k context window - 8192 max tokens - Supports reasoning * chore: fix formatting in onboard-helpers.ts * fix: update config candidate ordering test (#4407) (thanks @manikv12) --------- Co-authored-by: Peter Steinberger --- CHANGELOG.md | 1 + src/agents/synthetic-models.ts | 8 ++++++++ src/commands/onboard-helpers.ts | 12 ++++++------ src/config/paths.test.ts | 8 ++++++-- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d09635740..10bcda92f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ Status: stable. - Routing: precompile session key regexes. (#1697) Thanks @Ray0907. - CLI: use Node's module compile cache for faster startup. (#2808) Thanks @pi0. - Auth: show copyable Google auth URL after ASCII prompt. (#1787) Thanks @robbyczgw-cla. +- Agents: add Kimi K2.5 to the synthetic model catalog. (#4407) Thanks @manikv12. - TUI: avoid width overflow when rendering selection lists. (#1686) Thanks @mossein. - macOS: finish OpenClaw app rename for macOS sources, bundle identifiers, and shared kit paths. (#2844) Thanks @fal3. - Branding: update launchd labels, mobile bundle IDs, and logging subsystems to bot.molt (legacy com.clawdbot migrations). Thanks @thewilloftheshadow. diff --git a/src/agents/synthetic-models.ts b/src/agents/synthetic-models.ts index e31f3c795..9b9247805 100644 --- a/src/agents/synthetic-models.ts +++ b/src/agents/synthetic-models.ts @@ -99,6 +99,14 @@ export const SYNTHETIC_MODEL_CATALOG = [ contextWindow: 256000, maxTokens: 8192, }, + { + id: "hf:moonshotai/Kimi-K2.5", + name: "Kimi K2.5", + reasoning: true, + input: ["text"], + contextWindow: 256000, + maxTokens: 8192, + }, { id: "hf:openai/gpt-oss-120b", name: "GPT OSS 120B", diff --git a/src/commands/onboard-helpers.ts b/src/commands/onboard-helpers.ts index f56da78e9..774893213 100644 --- a/src/commands/onboard-helpers.ts +++ b/src/commands/onboard-helpers.ts @@ -64,12 +64,12 @@ export function randomToken(): string { export function printWizardHeader(runtime: RuntimeEnv) { const header = [ - "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄", - "██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██", - "██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██", - "██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██", - "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀", - " 🦞 OPENCLAW 🦞 ", + "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄", + "██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██", + "██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██", + "██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██", + "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀", + " 🦞 OPENCLAW 🦞 ", " ", ].join("\n"); runtime.log(header); diff --git a/src/config/paths.test.ts b/src/config/paths.test.ts index 06cd26444..f25e5b000 100644 --- a/src/config/paths.test.ts +++ b/src/config/paths.test.ts @@ -48,8 +48,12 @@ describe("state + config path candidates", () => { it("orders default config candidates in a stable order", () => { const home = "/home/test"; const candidates = resolveDefaultConfigCandidates({} as NodeJS.ProcessEnv, () => home); - expect(candidates[0]).toBe(path.join(home, ".openclaw", "openclaw.json")); - expect(candidates).toHaveLength(1); + const expectedDirs = [".openclaw", ".clawdbot", ".moltbot", ".moldbot"]; + const expectedFiles = ["openclaw.json", "clawdbot.json", "moltbot.json", "moldbot.json"]; + const expected = expectedDirs.flatMap((dir) => + expectedFiles.map((file) => path.join(home, dir, file)), + ); + expect(candidates).toEqual(expected); }); it("prefers ~/.openclaw when it exists and legacy dir is missing", async () => {