mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-07 15:21:06 +00:00
91 lines
2.5 KiB
TypeScript
91 lines
2.5 KiB
TypeScript
type ModelDisplaySelectionParams = {
|
|
runtimeProvider?: string | null;
|
|
runtimeModel?: string | null;
|
|
overrideProvider?: string | null;
|
|
overrideModel?: string | null;
|
|
fallbackModel?: string | null;
|
|
};
|
|
|
|
export function resolveModelDisplayRef(params: ModelDisplaySelectionParams): string | undefined {
|
|
const runtimeModel = params.runtimeModel?.trim();
|
|
const runtimeProvider = params.runtimeProvider?.trim();
|
|
if (runtimeModel) {
|
|
if (runtimeModel.includes("/")) {
|
|
return runtimeModel;
|
|
}
|
|
if (runtimeProvider) {
|
|
return `${runtimeProvider}/${runtimeModel}`;
|
|
}
|
|
return runtimeModel;
|
|
}
|
|
if (runtimeProvider) {
|
|
return runtimeProvider;
|
|
}
|
|
|
|
const overrideModel = params.overrideModel?.trim();
|
|
const overrideProvider = params.overrideProvider?.trim();
|
|
if (overrideModel) {
|
|
if (overrideModel.includes("/")) {
|
|
return overrideModel;
|
|
}
|
|
if (overrideProvider) {
|
|
return `${overrideProvider}/${overrideModel}`;
|
|
}
|
|
return overrideModel;
|
|
}
|
|
if (overrideProvider) {
|
|
return overrideProvider;
|
|
}
|
|
|
|
const fallbackModel = params.fallbackModel?.trim();
|
|
return fallbackModel || undefined;
|
|
}
|
|
|
|
export function resolveModelDisplayName(params: ModelDisplaySelectionParams): string {
|
|
const modelRef = resolveModelDisplayRef(params);
|
|
if (!modelRef) {
|
|
return "model n/a";
|
|
}
|
|
const slash = modelRef.lastIndexOf("/");
|
|
if (slash >= 0 && slash < modelRef.length - 1) {
|
|
return modelRef.slice(slash + 1);
|
|
}
|
|
return modelRef;
|
|
}
|
|
|
|
type SessionInfoModelSelectionParams = {
|
|
currentProvider?: string | null;
|
|
currentModel?: string | null;
|
|
entryProvider?: string | null;
|
|
entryModel?: string | null;
|
|
overrideProvider?: string | null;
|
|
overrideModel?: string | null;
|
|
};
|
|
|
|
export function resolveSessionInfoModelSelection(params: SessionInfoModelSelectionParams): {
|
|
modelProvider?: string;
|
|
model?: string;
|
|
} {
|
|
if (params.entryProvider !== undefined || params.entryModel !== undefined) {
|
|
return {
|
|
modelProvider: params.entryProvider ?? params.currentProvider ?? undefined,
|
|
model: params.entryModel ?? params.currentModel ?? undefined,
|
|
};
|
|
}
|
|
|
|
const overrideModel = params.overrideModel?.trim();
|
|
if (overrideModel) {
|
|
const overrideProvider = params.overrideProvider?.trim();
|
|
const currentProvider = params.currentProvider ?? undefined;
|
|
return {
|
|
modelProvider: overrideProvider || currentProvider,
|
|
model: overrideModel,
|
|
};
|
|
}
|
|
|
|
return {
|
|
modelProvider: params.currentProvider ?? undefined,
|
|
model: params.currentModel ?? undefined,
|
|
};
|
|
}
|