

















@@ -9,6 +9,7 @@ import {
99buildOpenrouterProvider,
1010isOpenRouterProxyReasoningUnsupportedModel,
1111} from "./provider-catalog.js";
12+import { resolveThinkingProfile } from "./provider-policy-api.js";
12131314describe("openrouter provider hooks", () => {
1415it("registers OpenRouter speech alongside model and media providers", async () => {
@@ -70,6 +71,53 @@ describe("openrouter provider hooks", () => {
7071).toBe("native");
7172});
727374+it("advertises xhigh thinking for OpenRouter-routed DeepSeek V4 models", async () => {
75+const provider = await registerSingleProviderPlugin(openrouterPlugin);
76+const expectedV4Levels = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
77+78+expect(
79+provider
80+.resolveThinkingProfile?.({
81+provider: "openrouter",
82+modelId: "deepseek/deepseek-v4-pro",
83+} as never)
84+?.levels.map((level) => level.id),
85+).toEqual(expectedV4Levels);
86+expect(
87+provider.resolveThinkingProfile?.({
88+provider: "openrouter",
89+modelId: "openrouter/deepseek/deepseek-v4-flash",
90+} as never)?.defaultLevel,
91+).toBe("high");
92+expect(
93+provider.supportsXHighThinking?.({
94+provider: "openrouter",
95+modelId: "openrouter/deepseek/deepseek-v4-pro",
96+} as never),
97+).toBe(true);
98+expect(
99+provider.resolveThinkingProfile?.({
100+provider: "openrouter",
101+modelId: "openai/gpt-5.4",
102+} as never),
103+).toBe(undefined);
104+});
105+106+it("exposes DeepSeek V4 thinking levels through the lightweight policy artifact", () => {
107+expect(
108+resolveThinkingProfile({
109+provider: "openrouter",
110+modelId: "openrouter/deepseek/deepseek-v4-pro",
111+})?.levels.map((level) => level.id),
112+).toContain("xhigh");
113+expect(
114+resolveThinkingProfile({
115+provider: "openrouter",
116+modelId: "openai/gpt-5.4",
117+}),
118+).toBe(undefined);
119+});
120+73121it("canonicalizes stale OpenRouter /v1 config and runtime metadata", async () => {
74122const provider = await registerSingleProviderPlugin(openrouterPlugin);
75123此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。