mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-15 11:11:09 +00:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
export type QaProviderMode = "mock-openai" | "live-frontier";
|
|
export type QaProviderModeInput = QaProviderMode | "live-openai";
|
|
|
|
export type QaModelSelection = {
|
|
primaryModel: string;
|
|
alternateModel: string;
|
|
};
|
|
|
|
export function normalizeQaProviderMode(mode: QaProviderModeInput): QaProviderMode {
|
|
return mode === "live-openai" ? "live-frontier" : mode;
|
|
}
|
|
|
|
export function defaultQaModelForMode(
|
|
mode: QaProviderModeInput,
|
|
options?: {
|
|
alternate?: boolean;
|
|
preferredLiveModel?: string;
|
|
},
|
|
) {
|
|
if (normalizeQaProviderMode(mode) === "live-frontier") {
|
|
return options?.preferredLiveModel ?? "openai/gpt-5.4";
|
|
}
|
|
return options?.alternate ? "mock-openai/gpt-5.4-alt" : "mock-openai/gpt-5.4";
|
|
}
|
|
|
|
export function splitQaModelRef(ref: string) {
|
|
const slash = ref.indexOf("/");
|
|
if (slash <= 0 || slash === ref.length - 1) {
|
|
return null;
|
|
}
|
|
return {
|
|
provider: ref.slice(0, slash),
|
|
model: ref.slice(slash + 1),
|
|
};
|
|
}
|
|
|
|
export function isQaFastModeModelRef(ref: string) {
|
|
return splitQaModelRef(ref)?.provider === "openai";
|
|
}
|
|
|
|
export function isQaFastModeEnabled(selection: QaModelSelection) {
|
|
return (
|
|
isQaFastModeModelRef(selection.primaryModel) || isQaFastModeModelRef(selection.alternateModel)
|
|
);
|
|
}
|