Fix model fallback crash on undefined provider/model (#946)
This commit is contained in:
committed by
Peter Steinberger
parent
2d1ae0916f
commit
0f27cff247
@@ -213,6 +213,34 @@ describe("runWithModelFallback", () => {
|
|||||||
expect(calls).toEqual([{ provider: "anthropic", model: "claude-opus-4-5" }]);
|
expect(calls).toEqual([{ provider: "anthropic", model: "claude-opus-4-5" }]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("defaults provider/model when missing (regression #946)", async () => {
|
||||||
|
const cfg = makeCfg({
|
||||||
|
agents: {
|
||||||
|
defaults: {
|
||||||
|
model: {
|
||||||
|
primary: "openai/gpt-4.1-mini",
|
||||||
|
fallbacks: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const calls: Array<{ provider: string; model: string }> = [];
|
||||||
|
|
||||||
|
const result = await runWithModelFallback({
|
||||||
|
cfg,
|
||||||
|
provider: undefined as unknown as string,
|
||||||
|
model: undefined as unknown as string,
|
||||||
|
run: async (provider, model) => {
|
||||||
|
calls.push({ provider, model });
|
||||||
|
return "ok";
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(result.result).toBe("ok");
|
||||||
|
expect(calls).toEqual([{ provider: "openai", model: "gpt-4.1-mini" }]);
|
||||||
|
});
|
||||||
|
|
||||||
it("falls back on missing API key errors", async () => {
|
it("falls back on missing API key errors", async () => {
|
||||||
const cfg = makeCfg();
|
const cfg = makeCfg();
|
||||||
const run = vi
|
const run = vi
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ function resolveFallbackCandidates(params: {
|
|||||||
/** Optional explicit fallbacks list; when provided (even empty), replaces agents.defaults.model.fallbacks. */
|
/** Optional explicit fallbacks list; when provided (even empty), replaces agents.defaults.model.fallbacks. */
|
||||||
fallbacksOverride?: string[];
|
fallbacksOverride?: string[];
|
||||||
}): ModelCandidate[] {
|
}): ModelCandidate[] {
|
||||||
const provider = params.provider.trim() || DEFAULT_PROVIDER;
|
const provider = String(params.provider ?? "").trim() || DEFAULT_PROVIDER;
|
||||||
const model = params.model.trim() || DEFAULT_MODEL;
|
const model = String(params.model ?? "").trim() || DEFAULT_MODEL;
|
||||||
const primary = params.cfg
|
const primary = params.cfg
|
||||||
? resolveConfiguredModelRef({
|
? resolveConfiguredModelRef({
|
||||||
cfg: params.cfg,
|
cfg: params.cfg,
|
||||||
|
|||||||
Reference in New Issue
Block a user