




















@@ -1,4 +1,80 @@
1-import { describe, expect, it } from "vitest";
1+import { describe, expect, it, vi } from "vitest";
2+3+const mediaMetadataPlugins = vi.hoisted(() => [
4+{
5+contracts: {
6+mediaUnderstandingProviders: [
7+"anthropic",
8+"google",
9+"minimax",
10+"minimax-portal",
11+"mistral",
12+"moonshot",
13+"openai",
14+"openai-codex",
15+"opencode",
16+"opencode-go",
17+"openrouter",
18+"qwen",
19+"xai",
20+"zai",
21+],
22+},
23+mediaUnderstandingProviderMetadata: {
24+anthropic: {
25+capabilities: ["image"],
26+autoPriority: { image: 20 },
27+nativeDocumentInputs: ["pdf"],
28+},
29+google: {
30+capabilities: ["image", "audio", "video"],
31+defaultModels: {
32+image: "gemini-3-flash-preview",
33+audio: "gemini-3-flash-preview",
34+video: "gemini-3-flash-preview",
35+},
36+autoPriority: { image: 30, audio: 40, video: 10 },
37+nativeDocumentInputs: ["pdf"],
38+},
39+minimax: { capabilities: ["image"], autoPriority: { image: 40 } },
40+"minimax-portal": {
41+capabilities: ["image"],
42+defaultModels: { image: "MiniMax-VL-01" },
43+autoPriority: { image: 50 },
44+},
45+mistral: {
46+capabilities: ["audio"],
47+defaultModels: { audio: "voxtral-mini-latest" },
48+autoPriority: { audio: 50 },
49+},
50+moonshot: {
51+capabilities: ["image", "video"],
52+defaultModels: { image: "kimi-k2.6", video: "kimi-k2.6" },
53+autoPriority: { video: 30 },
54+},
55+openai: {
56+capabilities: ["image", "audio"],
57+defaultModels: { image: "gpt-5.4-mini", audio: "gpt-4o-transcribe" },
58+autoPriority: { image: 10, audio: 10 },
59+},
60+"openai-codex": { capabilities: ["image"], defaultModels: { image: "gpt-5.5" } },
61+opencode: { capabilities: ["image"], defaultModels: { image: "gpt-5-nano" } },
62+"opencode-go": { capabilities: ["image"], defaultModels: { image: "kimi-k2.6" } },
63+openrouter: { capabilities: ["image"], defaultModels: { image: "auto" } },
64+qwen: { capabilities: ["video"], autoPriority: { video: 20 } },
65+xai: { capabilities: ["audio"], autoPriority: { audio: 25 } },
66+zai: { capabilities: ["image"], autoPriority: { image: 60 } },
67+},
68+},
69+]);
70+71+vi.mock("../plugins/plugin-registry.js", () => ({
72+loadPluginManifestRegistryForPluginRegistry: () => ({
73+plugins: mediaMetadataPlugins,
74+diagnostics: [],
75+}),
76+}));
77+278import {
379providerSupportsNativePdfDocument,
480resolveAutoMediaKeyProviders,
@@ -38,11 +114,8 @@ describe("resolveAutoMediaKeyProviders", () => {
38114it("keeps the bundled audio fallback order", () => {
39115expect(resolveAutoMediaKeyProviders({ capability: "audio" })).toEqual([
40116"openai",
41-"groq",
42117"xai",
43-"deepgram",
44118"google",
45-"elevenlabs",
46119"mistral",
47120]);
48121});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。