mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 06:50:43 +00:00
fix(image): respect configured provider for bare image overrides
This commit is contained in:
committed by
Peter Steinberger
parent
15258921ee
commit
92e864a521
28
src/agents/model-fallback.image-provider.test.ts
Normal file
28
src/agents/model-fallback.image-provider.test.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { runWithImageModelFallback } from "./model-fallback.js";
|
||||
import { makeModelFallbackCfg } from "./test-helpers/model-fallback-config-fixture.js";
|
||||
|
||||
describe("runWithImageModelFallback provider resolution", () => {
|
||||
it("inherits the configured image-model provider for bare override ids", async () => {
|
||||
const cfg = makeModelFallbackCfg({
|
||||
agents: {
|
||||
defaults: {
|
||||
imageModel: {
|
||||
primary: "openai-codex/gpt-5.4",
|
||||
fallbacks: ["openai-codex/gpt-5.4-mini"],
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
const run = vi.fn().mockResolvedValueOnce("ok");
|
||||
|
||||
const result = await runWithImageModelFallback({
|
||||
cfg,
|
||||
modelOverride: "gpt-5.4-mini",
|
||||
run,
|
||||
});
|
||||
|
||||
expect(result.result).toBe("ok");
|
||||
expect(run.mock.calls).toEqual([["openai-codex", "gpt-5.4-mini"]]);
|
||||
});
|
||||
});
|
||||
@@ -375,6 +375,25 @@ function resolveImageFallbackCandidates(params: {
|
||||
return candidates;
|
||||
}
|
||||
|
||||
function resolveImageFallbackDefaultProvider(cfg: OpenClawConfig | undefined): string {
|
||||
const configuredPrimary = resolveAgentModelPrimaryValue(cfg?.agents?.defaults?.imageModel);
|
||||
if (configuredPrimary?.trim()) {
|
||||
const aliasIndex = buildModelAliasIndex({
|
||||
cfg: cfg ?? {},
|
||||
defaultProvider: DEFAULT_PROVIDER,
|
||||
});
|
||||
const resolved = resolveModelRefFromString({
|
||||
raw: configuredPrimary,
|
||||
defaultProvider: DEFAULT_PROVIDER,
|
||||
aliasIndex,
|
||||
});
|
||||
if (resolved?.ref.provider) {
|
||||
return resolved.ref.provider;
|
||||
}
|
||||
}
|
||||
return DEFAULT_PROVIDER;
|
||||
}
|
||||
|
||||
function resolveFallbackCandidates(params: {
|
||||
cfg: OpenClawConfig | undefined;
|
||||
provider: string;
|
||||
@@ -922,7 +941,7 @@ export async function runWithImageModelFallback<T>(params: {
|
||||
}): Promise<ModelFallbackRunResult<T>> {
|
||||
const candidates = resolveImageFallbackCandidates({
|
||||
cfg: params.cfg,
|
||||
defaultProvider: DEFAULT_PROVIDER,
|
||||
defaultProvider: resolveImageFallbackDefaultProvider(params.cfg),
|
||||
modelOverride: params.modelOverride,
|
||||
});
|
||||
if (candidates.length === 0) {
|
||||
|
||||
Reference in New Issue
Block a user