mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-04-25 19:32:39 +08:00
* fix(omo): use lowercase keys for builtin agent definitions OMO config schema expects all agent keys to be lowercase. Updated OMO_BUILTIN_AGENTS keys (Sisyphus → sisyphus, Hephaestus → hephaestus, etc.) and aligned Rust test fixtures accordingly. * feat(omo): add i18n support and tooltips for agent/category descriptions * feat(omo): add preset model variants for thinking level support Add OPENCODE_PRESET_MODEL_VARIANTS constant with variant definitions for Google, OpenAI, and Anthropic models. The omoModelVariantsMap builder now falls back to presets when config-defined variants are absent, enabling the variant selector for supported models. * feat(omo): replace model select with searchable combobox and improve fallback handling * feat(omo): enrich preset model defaults and metadata fallback * fix(omo): preserve custom fields and align otherFields import/validation * fix: resolve omo clippy warnings and include app update
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
mergeOmoConfigPreview,
|
|
parseOmoOtherFieldsObject,
|
|
type OmoGlobalConfig,
|
|
} from "@/types/omo";
|
|
|
|
const EMPTY_GLOBAL: OmoGlobalConfig = {
|
|
id: "global",
|
|
disabledAgents: [],
|
|
disabledMcps: [],
|
|
disabledHooks: [],
|
|
disabledSkills: [],
|
|
updatedAt: "2026-01-01T00:00:00.000Z",
|
|
};
|
|
|
|
describe("parseOmoOtherFieldsObject", () => {
|
|
it("解析对象 JSON", () => {
|
|
expect(parseOmoOtherFieldsObject('{ "foo": 1 }')).toEqual({ foo: 1 });
|
|
});
|
|
|
|
it("数组/字符串返回 undefined", () => {
|
|
expect(parseOmoOtherFieldsObject('["a"]')).toBeUndefined();
|
|
expect(parseOmoOtherFieldsObject('"hello"')).toBeUndefined();
|
|
});
|
|
|
|
it("非法 JSON 抛出异常", () => {
|
|
expect(() => parseOmoOtherFieldsObject("{")).toThrow();
|
|
});
|
|
});
|
|
|
|
describe("mergeOmoConfigPreview", () => {
|
|
it("只合并 otherFields 的对象值,忽略数组", () => {
|
|
const mergedFromArray = mergeOmoConfigPreview(
|
|
EMPTY_GLOBAL,
|
|
{},
|
|
{},
|
|
'["a", "b"]',
|
|
);
|
|
expect(mergedFromArray).toEqual({});
|
|
|
|
const mergedFromObject = mergeOmoConfigPreview(
|
|
EMPTY_GLOBAL,
|
|
{},
|
|
{},
|
|
'{ "foo": "bar" }',
|
|
);
|
|
expect(mergedFromObject).toEqual({ foo: "bar" });
|
|
});
|
|
});
|