Files
OmniRoute/tests/unit/cli/setup-crush.test.ts
Diego Rodrigues de Sa e Souza 26dd5d775c feat(cli): setup-crush — OmniRoute openai-compat provider in crush.json (#4298)
CLI #9 of the series. `omniroute setup-crush` writes Crush's file-based
~/.config/crush/crush.json with an `openai-compat` provider for OmniRoute:
base_url WITH /v1, api_key referenced as $OMNIROUTE_API_KEY (secret off disk),
curated catalog models with context_window. Merges (preserves existing config).
Remote-aware (--remote/--api-key → active context → localhost); --only filter.

Researched against charmbracelet/crush: openai-compat provider type, base_url
needs /v1, $VAR api_key references. Crush's wire (/v1/chat/completions) already
validated → "OK".

Tests: resolveCrushTarget (/v1, key), buildCrushProvider (openai-compat + env-ref
+ curated models + skip-unknown), mergeCrushConfig (preserve). 4 unit tests; cli-i18n green.
2026-06-19 16:38:48 -03:00

26 lines
1.3 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { resolveCrushTarget, buildCrushProvider, mergeCrushConfig } from "../../../bin/cli/commands/setup-crush.mjs";
test("resolveCrushTarget ensures /v1", () => {
assert.equal(resolveCrushTarget({ remote: "http://vps:20128" }).baseUrl, "http://vps:20128/v1");
});
test("resolveCrushTarget: explicit --api-key wins", () => {
assert.equal(resolveCrushTarget({ remote: "http://x:20128", apiKey: "sk-x" }).apiKey, "sk-x");
});
test("buildCrushProvider emits openai-compat + env-ref key + curated models w/ context_window", () => {
const p = buildCrushProvider(["glm/glm-5.2", "some/unknown"], "http://vps:20128/v1");
assert.equal(p.type, "openai-compat");
assert.equal(p.base_url, "http://vps:20128/v1");
assert.equal(p.api_key, "$OMNIROUTE_API_KEY");
assert.equal(p.models.length, 1); // unknown skipped
assert.equal(p.models[0].id, "glm/glm-5.2");
assert.ok(p.models[0].context_window > 0);
});
test("mergeCrushConfig adds providers.omniroute, preserves the rest", () => {
const m = mergeCrushConfig({ options: { tui: true }, providers: { local: {} } }, buildCrushProvider(["glm/glm-5.2"], "http://x/v1"));
assert.deepEqual(m.options, { tui: true });
assert.ok(m.providers.local);
assert.ok(m.providers.omniroute);
});