




















1-// Media-understanding resolve tests cover timeout clamping, capability filtering,
2-// and active-model fallback behavior.
1+// Media-understanding resolve tests cover timeout clamping and capability filtering.
32import { MAX_TIMER_TIMEOUT_MS } from "@openclaw/normalization-core/number-coercion";
43import { describe, expect, it } from "vitest";
54import type { OpenClawConfig } from "../config/types.js";
6-import {
7-resolveEntriesWithActiveFallback,
8-resolveMediaRuntimeTimeoutMs,
9-resolveModelEntries,
10-resolveTimeoutMs,
11-} from "./resolve.js";
5+import { resolveMediaRuntimeTimeoutMs, resolveModelEntries, resolveTimeoutMs } from "./resolve.js";
126import type { MediaUnderstandingCapability } from "./types.js";
137148const providerRegistry = new Map<string, { capabilities: MediaUnderstandingCapability[] }>([
@@ -90,88 +84,3 @@ describe("resolveModelEntries", () => {
9084expect(entries).toHaveLength(0);
9185});
9286});
93-94-describe("resolveEntriesWithActiveFallback", () => {
95-type ResolveWithFallbackInput = Parameters<typeof resolveEntriesWithActiveFallback>[0];
96-const defaultActiveModel = { provider: "groq", model: "whisper-large-v3" } as const;
97-98-function resolveWithActiveFallback(params: {
99-cfg: ResolveWithFallbackInput["cfg"];
100-capability: ResolveWithFallbackInput["capability"];
101-config: ResolveWithFallbackInput["config"];
102-}) {
103-return resolveEntriesWithActiveFallback({
104-cfg: params.cfg,
105-capability: params.capability,
106-config: params.config,
107- providerRegistry,
108-activeModel: defaultActiveModel,
109-});
110-}
111-112-function expectResolvedProviders(params: {
113-cfg: OpenClawConfig;
114-capability: ResolveWithFallbackInput["capability"];
115-config: ResolveWithFallbackInput["config"];
116-providers: string[];
117-}) {
118-const entries = resolveWithActiveFallback({
119-cfg: params.cfg,
120-capability: params.capability,
121-config: params.config,
122-});
123-expect(entries).toHaveLength(params.providers.length);
124-expect(entries.map((entry) => entry.provider)).toEqual(params.providers);
125-}
126-127-it("uses active model when enabled and no models are configured", () => {
128-const cfg: OpenClawConfig = {
129-tools: {
130-media: {
131-audio: { enabled: true },
132-},
133-},
134-};
135-136-expectResolvedProviders({
137- cfg,
138-capability: "audio",
139-config: cfg.tools?.media?.audio,
140-providers: ["groq"],
141-});
142-});
143-144-it("ignores active model when configured entries exist", () => {
145-const cfg: OpenClawConfig = {
146-tools: {
147-media: {
148-audio: { enabled: true, models: [{ provider: "openai", model: "whisper-1" }] },
149-},
150-},
151-};
152-153-expectResolvedProviders({
154- cfg,
155-capability: "audio",
156-config: cfg.tools?.media?.audio,
157-providers: ["openai"],
158-});
159-});
160-161-it("skips active model when provider lacks capability", () => {
162-const cfg: OpenClawConfig = {
163-tools: {
164-media: {
165-video: { enabled: true },
166-},
167-},
168-};
169-170-const entries = resolveWithActiveFallback({
171- cfg,
172-capability: "video",
173-config: cfg.tools?.media?.video,
174-});
175-expect(entries).toHaveLength(0);
176-});
177-});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。