Merge pull request #3169 from code-yeongyu/fix/sisyphus-junior-model

fix(model-fallback): respect user model override for sisyphus-junior category sessions (#2941)
This commit is contained in:
YeonGyu-Kim
2026-04-07 15:14:09 +09:00
committed by GitHub
6 changed files with 222 additions and 4 deletions
+19
View File
@@ -332,6 +332,25 @@ describe("model fallback hook", () => {
clearPendingModelFallback(sessionID)
})
test("does not fall back to hardcoded agent chain when session explicitly stores no fallback chain [regression #2941]", () => {
//#given
const sessionID = "ses_model_fallback_explicit_none"
clearPendingModelFallback(sessionID)
setSessionFallbackChain(sessionID, undefined)
//#when
const set = setPendingModelFallback(
sessionID,
"Sisyphus - Junior",
"anthropic",
"claude-sonnet-4-6",
)
//#then
expect(set).toBe(false)
clearPendingModelFallback(sessionID)
})
test("shows toast when fallback is applied", async () => {
//#given
const toastCalls: Array<{ title: string; message: string }> = []
+8 -3
View File
@@ -42,8 +42,12 @@ const sessionFallbackChains = new Map<string, FallbackEntry[]>()
export function setSessionFallbackChain(sessionID: string, fallbackChain: FallbackEntry[] | undefined): void {
if (!sessionID) return
if (!fallbackChain || fallbackChain.length === 0) {
sessionFallbackChains.delete(sessionID)
if (!fallbackChain) {
sessionFallbackChains.set(sessionID, [])
return
}
if (fallbackChain.length === 0) {
sessionFallbackChains.set(sessionID, [])
return
}
sessionFallbackChains.set(sessionID, fallbackChain)
@@ -65,8 +69,9 @@ export function setPendingModelFallback(
): boolean {
const agentKey = getAgentConfigKey(agentName)
const requirements = AGENT_MODEL_REQUIREMENTS[agentKey]
const hasSessionFallback = sessionFallbackChains.has(sessionID)
const sessionFallback = sessionFallbackChains.get(sessionID)
const fallbackChain = sessionFallback && sessionFallback.length > 0
const fallbackChain = hasSessionFallback
? sessionFallback
: requirements?.fallbackChain