feat(model-settings-compat): add variant/reasoningEffort compatibility resolver
- Registry-based model family detection (provider-agnostic) - Variant and reasoningEffort ladder downgrade logic - Three-tier resolution: metadata override → family heuristic → unknown drop - Comprehensive test suite covering all model families
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { clearSessionPromptParams, setSessionPromptParams } from "./session-prompt-params-state"
|
||||
|
||||
type PromptParamModel = {
|
||||
temperature?: number
|
||||
top_p?: number
|
||||
reasoningEffort?: string
|
||||
maxTokens?: number
|
||||
thinking?: { type: "enabled" | "disabled"; budgetTokens?: number }
|
||||
}
|
||||
|
||||
export function applySessionPromptParams(
|
||||
sessionID: string,
|
||||
model: PromptParamModel | undefined,
|
||||
): void {
|
||||
if (!model) {
|
||||
clearSessionPromptParams(sessionID)
|
||||
return
|
||||
}
|
||||
|
||||
const promptOptions: Record<string, unknown> = {
|
||||
...(model.reasoningEffort ? { reasoningEffort: model.reasoningEffort } : {}),
|
||||
...(model.thinking ? { thinking: model.thinking } : {}),
|
||||
...(model.maxTokens !== undefined ? { maxTokens: model.maxTokens } : {}),
|
||||
}
|
||||
|
||||
setSessionPromptParams(sessionID, {
|
||||
...(model.temperature !== undefined ? { temperature: model.temperature } : {}),
|
||||
...(model.top_p !== undefined ? { topP: model.top_p } : {}),
|
||||
...(Object.keys(promptOptions).length > 0 ? { options: promptOptions } : {}),
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user