mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 12:21:24 +00:00
refactor(models): dedupe fallback key parsing
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
|||||||
ensureFlagCompatibility,
|
ensureFlagCompatibility,
|
||||||
modelKey,
|
modelKey,
|
||||||
resolveModelTarget,
|
resolveModelTarget,
|
||||||
|
resolveModelKeysFromEntries,
|
||||||
updateConfig,
|
updateConfig,
|
||||||
} from "./shared.js";
|
} from "./shared.js";
|
||||||
|
|
||||||
@@ -47,21 +48,8 @@ export async function modelsFallbacksAddCommand(modelRaw: string, runtime: Runti
|
|||||||
if (!nextModels[targetKey]) {
|
if (!nextModels[targetKey]) {
|
||||||
nextModels[targetKey] = {};
|
nextModels[targetKey] = {};
|
||||||
}
|
}
|
||||||
const aliasIndex = buildModelAliasIndex({
|
|
||||||
cfg,
|
|
||||||
defaultProvider: DEFAULT_PROVIDER,
|
|
||||||
});
|
|
||||||
const existing = cfg.agents?.defaults?.model?.fallbacks ?? [];
|
const existing = cfg.agents?.defaults?.model?.fallbacks ?? [];
|
||||||
const existingKeys = existing
|
const existingKeys = resolveModelKeysFromEntries({ cfg, entries: existing });
|
||||||
.map((entry) =>
|
|
||||||
resolveModelRefFromString({
|
|
||||||
raw: String(entry ?? ""),
|
|
||||||
defaultProvider: DEFAULT_PROVIDER,
|
|
||||||
aliasIndex,
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
.filter((entry): entry is NonNullable<typeof entry> => Boolean(entry))
|
|
||||||
.map((entry) => modelKey(entry.ref.provider, entry.ref.model));
|
|
||||||
|
|
||||||
if (existingKeys.includes(targetKey)) {
|
if (existingKeys.includes(targetKey)) {
|
||||||
return cfg;
|
return cfg;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
ensureFlagCompatibility,
|
ensureFlagCompatibility,
|
||||||
modelKey,
|
modelKey,
|
||||||
resolveModelTarget,
|
resolveModelTarget,
|
||||||
|
resolveModelKeysFromEntries,
|
||||||
updateConfig,
|
updateConfig,
|
||||||
} from "./shared.js";
|
} from "./shared.js";
|
||||||
|
|
||||||
@@ -47,21 +48,8 @@ export async function modelsImageFallbacksAddCommand(modelRaw: string, runtime:
|
|||||||
if (!nextModels[targetKey]) {
|
if (!nextModels[targetKey]) {
|
||||||
nextModels[targetKey] = {};
|
nextModels[targetKey] = {};
|
||||||
}
|
}
|
||||||
const aliasIndex = buildModelAliasIndex({
|
|
||||||
cfg,
|
|
||||||
defaultProvider: DEFAULT_PROVIDER,
|
|
||||||
});
|
|
||||||
const existing = cfg.agents?.defaults?.imageModel?.fallbacks ?? [];
|
const existing = cfg.agents?.defaults?.imageModel?.fallbacks ?? [];
|
||||||
const existingKeys = existing
|
const existingKeys = resolveModelKeysFromEntries({ cfg, entries: existing });
|
||||||
.map((entry) =>
|
|
||||||
resolveModelRefFromString({
|
|
||||||
raw: String(entry ?? ""),
|
|
||||||
defaultProvider: DEFAULT_PROVIDER,
|
|
||||||
aliasIndex,
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
.filter((entry): entry is NonNullable<typeof entry> => Boolean(entry))
|
|
||||||
.map((entry) => modelKey(entry.ref.provider, entry.ref.model));
|
|
||||||
|
|
||||||
if (existingKeys.includes(targetKey)) {
|
if (existingKeys.includes(targetKey)) {
|
||||||
return cfg;
|
return cfg;
|
||||||
|
|||||||
@@ -91,6 +91,26 @@ export function resolveModelTarget(params: { raw: string; cfg: OpenClawConfig })
|
|||||||
return resolved.ref;
|
return resolved.ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function resolveModelKeysFromEntries(params: {
|
||||||
|
cfg: OpenClawConfig;
|
||||||
|
entries: readonly unknown[];
|
||||||
|
}): string[] {
|
||||||
|
const aliasIndex = buildModelAliasIndex({
|
||||||
|
cfg: params.cfg,
|
||||||
|
defaultProvider: DEFAULT_PROVIDER,
|
||||||
|
});
|
||||||
|
return params.entries
|
||||||
|
.map((entry) =>
|
||||||
|
resolveModelRefFromString({
|
||||||
|
raw: String(entry ?? ""),
|
||||||
|
defaultProvider: DEFAULT_PROVIDER,
|
||||||
|
aliasIndex,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.filter((entry): entry is NonNullable<typeof entry> => Boolean(entry))
|
||||||
|
.map((entry) => modelKey(entry.ref.provider, entry.ref.model));
|
||||||
|
}
|
||||||
|
|
||||||
export function buildAllowlistSet(cfg: OpenClawConfig): Set<string> {
|
export function buildAllowlistSet(cfg: OpenClawConfig): Set<string> {
|
||||||
const allowed = new Set<string>();
|
const allowed = new Set<string>();
|
||||||
const models = cfg.agents?.defaults?.models ?? {};
|
const models = cfg.agents?.defaults?.models ?? {};
|
||||||
|
|||||||
Reference in New Issue
Block a user