fix(subagents): add model fallback support to sessions_spawn tool (#17197)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 5d20c2cd37
Co-authored-by: misterdas <170702047+misterdas@users.noreply.github.com>
Co-authored-by: sebslight <19554889+sebslight@users.noreply.github.com>
Reviewed-by: @sebslight
This commit is contained in:
misterdas
2026-02-15 20:55:47 +05:30
committed by GitHub
parent 75f3b5069b
commit c211fd112c
3 changed files with 75 additions and 5 deletions

View File

@@ -396,13 +396,17 @@ export async function agentCommand(
opts.replyChannel ?? opts.channel,
);
const spawnedBy = opts.spawnedBy ?? sessionEntry?.spawnedBy;
// When a session has an explicit model override, prevent the fallback logic
// from silently appending the global primary model as a backstop. Passing an
// empty array (instead of undefined) tells resolveFallbackCandidates to skip
// the implicit primary append, so the session stays on its overridden model.
// When a session has an explicit model override, keep the candidate chain
// anchored to that override (no implicit configured-primary append), while
// still preserving configured fallback lists unless the agent explicitly
// overrides fallbacks with its own list (including an empty list to disable).
const agentFallbacksOverride = resolveAgentModelFallbacksOverride(cfg, sessionAgentId);
const defaultFallbacks =
typeof cfg.agents?.defaults?.model === "object"
? (cfg.agents.defaults.model.fallbacks ?? [])
: [];
const effectiveFallbacksOverride = storedModelOverride
? (agentFallbacksOverride ?? [])
? (agentFallbacksOverride ?? defaultFallbacks)
: agentFallbacksOverride;
// Track model fallback attempts so retries on an existing session don't