mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 21:14:31 +00:00
refactor(agents): centralize model fallback resolution
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
DEFAULT_AGENT_ID,
|
||||
normalizeAgentId,
|
||||
parseAgentSessionKey,
|
||||
resolveAgentIdFromSessionKey,
|
||||
} from "../routing/session-key.js";
|
||||
import { resolveUserPath } from "../utils.js";
|
||||
import { normalizeSkillFilter } from "./skills/filter.js";
|
||||
@@ -19,7 +20,7 @@ function stripNullBytes(s: string): string {
|
||||
return s.replace(/\0/g, "");
|
||||
}
|
||||
|
||||
export { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
|
||||
export { resolveAgentIdFromSessionKey };
|
||||
|
||||
type AgentEntry = NonNullable<NonNullable<OpenClawConfig["agents"]>["list"]>[number];
|
||||
|
||||
@@ -203,6 +204,41 @@ export function resolveAgentModelFallbacksOverride(
|
||||
return Array.isArray(raw.fallbacks) ? raw.fallbacks : undefined;
|
||||
}
|
||||
|
||||
export function resolveFallbackAgentId(params: {
|
||||
agentId?: string | null;
|
||||
sessionKey?: string | null;
|
||||
}): string {
|
||||
const explicitAgentId = typeof params.agentId === "string" ? params.agentId.trim() : "";
|
||||
if (explicitAgentId) {
|
||||
return normalizeAgentId(explicitAgentId);
|
||||
}
|
||||
return resolveAgentIdFromSessionKey(params.sessionKey);
|
||||
}
|
||||
|
||||
export function resolveRunModelFallbacksOverride(params: {
|
||||
cfg: OpenClawConfig | undefined;
|
||||
agentId?: string | null;
|
||||
sessionKey?: string | null;
|
||||
}): string[] | undefined {
|
||||
if (!params.cfg) {
|
||||
return undefined;
|
||||
}
|
||||
return resolveAgentModelFallbacksOverride(
|
||||
params.cfg,
|
||||
resolveFallbackAgentId({ agentId: params.agentId, sessionKey: params.sessionKey }),
|
||||
);
|
||||
}
|
||||
|
||||
export function hasConfiguredModelFallbacks(params: {
|
||||
cfg: OpenClawConfig | undefined;
|
||||
agentId?: string | null;
|
||||
sessionKey?: string | null;
|
||||
}): boolean {
|
||||
const fallbacksOverride = resolveRunModelFallbacksOverride(params);
|
||||
const defaultFallbacks = resolveAgentModelFallbackValues(params.cfg?.agents?.defaults?.model);
|
||||
return (fallbacksOverride ?? defaultFallbacks).length > 0;
|
||||
}
|
||||
|
||||
export function resolveEffectiveModelFallbacks(params: {
|
||||
cfg: OpenClawConfig;
|
||||
agentId: string;
|
||||
|
||||
Reference in New Issue
Block a user