Files
openclaw/extensions/qa-lab/src/model-selection.ts
2026-04-07 20:32:41 +01:00

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)
);
}