mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-08 00:02:20 +03:00
CLI #11 of the series. `omniroute setup-qwen` writes Qwen Code's file-based ~/.qwen/settings.json: an openai `modelProvider` (id omniroute, authType openai, baseUrl WITH /v1, envKey OMNIROUTE_API_KEY — secret stays in the env), selects it, sets the model. Merges (de-dupes the omniroute provider, preserves the rest). Remote-aware; model via --model or interactive pick; headless test `qwen -p`. Researched against QwenLM/qwen-code: modelProviders authType openai, baseUrl /v1, envKey reference. Qwen's wire (/v1/chat/completions) already validated → "OK". Tests: resolveQwenTarget (/v1, key), buildQwenSettings (openai provider + /v1 + envKey + model, de-dupe + preserve). 4 unit tests; cli-i18n green.
29 lines
1.4 KiB
TypeScript
29 lines
1.4 KiB
TypeScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { resolveQwenTarget, buildQwenSettings } from "../../../bin/cli/commands/setup-qwen.mjs";
|
|
|
|
test("resolveQwenTarget ensures /v1", () => {
|
|
assert.equal(resolveQwenTarget({ remote: "http://vps:20128" }).baseUrl, "http://vps:20128/v1");
|
|
});
|
|
test("resolveQwenTarget: explicit --api-key wins", () => {
|
|
assert.equal(resolveQwenTarget({ remote: "http://x:20128", apiKey: "sk-x" }).apiKey, "sk-x");
|
|
});
|
|
test("buildQwenSettings adds an openai modelProvider (baseUrl /v1, envKey), sets model", () => {
|
|
const s = buildQwenSettings({}, { baseUrl: "http://vps:20128/v1", model: "glm/glm-5.2" });
|
|
const p = s.modelProviders.find((x) => x.id === "omniroute");
|
|
assert.equal(p.authType, "openai");
|
|
assert.equal(p.baseUrl, "http://vps:20128/v1");
|
|
assert.equal(p.envKey, "OMNIROUTE_API_KEY");
|
|
assert.equal(s.model, "glm/glm-5.2");
|
|
assert.equal(s.selectedProvider, "omniroute");
|
|
});
|
|
test("buildQwenSettings de-dupes the omniroute provider + preserves others", () => {
|
|
const s = buildQwenSettings(
|
|
{ modelProviders: [{ id: "other" }, { id: "omniroute", baseUrl: "old" }], theme: "dark" },
|
|
{ baseUrl: "http://x/v1", model: "m" }
|
|
);
|
|
assert.equal(s.modelProviders.filter((p) => p.id === "omniroute").length, 1);
|
|
assert.ok(s.modelProviders.some((p) => p.id === "other"));
|
|
assert.equal(s.theme, "dark");
|
|
});
|