fix(model-settings): support family reasoning aliases

This commit is contained in:
acamq
2026-05-10 10:11:55 -06:00
parent 50d0d16854
commit c5e89f1eea
2 changed files with 14 additions and 1 deletions
@@ -6,6 +6,7 @@ export type HeuristicModelFamilyDefinition = {
pattern?: RegExp pattern?: RegExp
variants?: string[] variants?: string[]
reasoningEfforts?: string[] reasoningEfforts?: string[]
reasoningEffortAliases?: Record<string, string>
supportsThinking?: boolean supportsThinking?: boolean
} }
+13 -1
View File
@@ -86,6 +86,7 @@ function resolveField(
ladder: string[], ladder: string[],
familyKnown: boolean, familyKnown: boolean,
metadataOverride?: string[], metadataOverride?: string[],
familyAliases?: Record<string, string>,
): FieldResolution { ): FieldResolution {
if (metadataOverride) { if (metadataOverride) {
if (metadataOverride.includes(normalized)) return { value: normalized } if (metadataOverride.includes(normalized)) return { value: normalized }
@@ -97,6 +98,10 @@ function resolveField(
if (familyCaps) { if (familyCaps) {
if (familyCaps.includes(normalized)) return { value: normalized } if (familyCaps.includes(normalized)) return { value: normalized }
const aliased = familyAliases?.[normalized]
if (aliased && familyCaps.includes(aliased)) {
return { value: aliased, reason: "unsupported-by-model-family" }
}
return { return {
value: downgradeWithinLadder(normalized, familyCaps, ladder), value: downgradeWithinLadder(normalized, familyCaps, ladder),
reason: "unsupported-by-model-family", reason: "unsupported-by-model-family",
@@ -132,7 +137,14 @@ export function resolveCompatibleModelSettings(
let reasoningEffort = input.desired.reasoningEffort let reasoningEffort = input.desired.reasoningEffort
if (reasoningEffort !== undefined) { if (reasoningEffort !== undefined) {
const normalized = reasoningEffort.toLowerCase() const normalized = reasoningEffort.toLowerCase()
const resolved = resolveField(normalized, family?.reasoningEfforts, REASONING_LADDER, familyKnown, metadataReasoningEfforts) const resolved = resolveField(
normalized,
family?.reasoningEfforts,
REASONING_LADDER,
familyKnown,
metadataReasoningEfforts,
family?.reasoningEffortAliases,
)
if (resolved.value !== normalized && resolved.reason) { if (resolved.value !== normalized && resolved.reason) {
changes.push({ field: "reasoningEffort", from: reasoningEffort, to: resolved.value, reason: resolved.reason }) changes.push({ field: "reasoningEffort", from: reasoningEffort, to: resolved.value, reason: resolved.reason })
} }