Files
openclaw/extensions/qa-lab/src/suite-model-selection.ts
T
Vincent Koc 126b5a08e7 fix(qa): resolve live model pairs after auth selection (#121065)
Centralize QA model-pair construction after resolving the actual primary,
preserve explicit and manual single-model selections, and keep omitted
live-frontier alternates on the provider-owned OpenAI Sol/Luna policy.

Punchcard-Session: amber-workshop-workshop-36

Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com>
2026-08-10 02:59:12 +08:00

46 lines
1.6 KiB
TypeScript

// QA Lab suite model selection follows an explicitly selected scenario lane.
import {
isQaFastModeEnabled,
normalizeQaProviderMode,
type QaProviderMode,
} from "./model-selection.js";
import { resolveQaRuntimeModelPair } from "./model-selection.runtime.js";
import { DEFAULT_QA_LIVE_PROVIDER_MODE } from "./providers/index.js";
import {
resolveQaScenarioRequiredProviderMode,
type QaSeedScenarioWithSource,
} from "./scenario-catalog.js";
export function resolveRequestedQaSuiteModels(params: {
alternateModel?: string;
fastMode?: boolean;
primaryModel?: string;
providerMode?: QaProviderMode;
scenarioIds?: readonly string[];
scenarios: readonly QaSeedScenarioWithSource[];
}) {
// A scenario supplies a single-run default; an explicit provider always owns the selected lane.
const selectedScenario =
params.providerMode === undefined && params.scenarioIds?.length === 1
? params.scenarios.find((scenario) => scenario.id === params.scenarioIds?.[0])
: undefined;
const selectedProviderMode =
selectedScenario?.execution.kind === "flow"
? resolveQaScenarioRequiredProviderMode(selectedScenario)
: undefined;
const providerMode = normalizeQaProviderMode(
params.providerMode ?? selectedProviderMode ?? DEFAULT_QA_LIVE_PROVIDER_MODE,
);
const { primaryModel, alternateModel } = resolveQaRuntimeModelPair({
providerMode,
primaryModel: params.primaryModel,
alternateModel: params.alternateModel,
});
return {
alternateModel,
fastMode: params.fastMode ?? isQaFastModeEnabled({ primaryModel, alternateModel }),
primaryModel,
providerMode,
};
}