fix(agents): use resolved variant from fallback chain instead of requirement default

resolveModelWithFallback() returns entry-specific variant but it was being
ignored. Agents like oracle now correctly get variant 'high' from their
fallback chain entry instead of undefined.
This commit is contained in:
justsisyphus 2026-01-23 14:44:02 +09:00
parent 6dfe091a88
commit 57b10439a4

View File

@ -197,7 +197,7 @@ export async function createBuiltinAgents(
const requirement = AGENT_MODEL_REQUIREMENTS[agentName] const requirement = AGENT_MODEL_REQUIREMENTS[agentName]
// Use resolver to determine model // Use resolver to determine model
const { model } = resolveModelWithFallback({ const { model, variant: resolvedVariant } = resolveModelWithFallback({
userModel: override?.model, userModel: override?.model,
fallbackChain: requirement?.fallbackChain, fallbackChain: requirement?.fallbackChain,
availableModels, availableModels,
@ -206,11 +206,11 @@ export async function createBuiltinAgents(
let config = buildAgent(source, model, mergedCategories, gitMasterConfig) let config = buildAgent(source, model, mergedCategories, gitMasterConfig)
// Apply variant from override or requirement // Apply variant from override or resolved fallback chain
if (override?.variant) { if (override?.variant) {
config = { ...config, variant: override.variant } config = { ...config, variant: override.variant }
} else if (requirement?.variant) { } else if (resolvedVariant) {
config = { ...config, variant: requirement.variant } config = { ...config, variant: resolvedVariant }
} }
if (agentName === "librarian" && directory && config.prompt) { if (agentName === "librarian" && directory && config.prompt) {
@ -239,7 +239,7 @@ export async function createBuiltinAgents(
const sisyphusRequirement = AGENT_MODEL_REQUIREMENTS["Sisyphus"] const sisyphusRequirement = AGENT_MODEL_REQUIREMENTS["Sisyphus"]
// Use resolver to determine model // Use resolver to determine model
const { model: sisyphusModel } = resolveModelWithFallback({ const { model: sisyphusModel, variant: sisyphusResolvedVariant } = resolveModelWithFallback({
userModel: sisyphusOverride?.model, userModel: sisyphusOverride?.model,
fallbackChain: sisyphusRequirement?.fallbackChain, fallbackChain: sisyphusRequirement?.fallbackChain,
availableModels, availableModels,
@ -254,11 +254,11 @@ export async function createBuiltinAgents(
availableCategories availableCategories
) )
// Apply variant from override or requirement // Apply variant from override or resolved fallback chain
if (sisyphusOverride?.variant) { if (sisyphusOverride?.variant) {
sisyphusConfig = { ...sisyphusConfig, variant: sisyphusOverride.variant } sisyphusConfig = { ...sisyphusConfig, variant: sisyphusOverride.variant }
} else if (sisyphusRequirement?.variant) { } else if (sisyphusResolvedVariant) {
sisyphusConfig = { ...sisyphusConfig, variant: sisyphusRequirement.variant } sisyphusConfig = { ...sisyphusConfig, variant: sisyphusResolvedVariant }
} }
if (directory && sisyphusConfig.prompt) { if (directory && sisyphusConfig.prompt) {
@ -278,7 +278,7 @@ export async function createBuiltinAgents(
const atlasRequirement = AGENT_MODEL_REQUIREMENTS["Atlas"] const atlasRequirement = AGENT_MODEL_REQUIREMENTS["Atlas"]
// Use resolver to determine model // Use resolver to determine model
const { model: atlasModel } = resolveModelWithFallback({ const { model: atlasModel, variant: atlasResolvedVariant } = resolveModelWithFallback({
userModel: orchestratorOverride?.model, userModel: orchestratorOverride?.model,
fallbackChain: atlasRequirement?.fallbackChain, fallbackChain: atlasRequirement?.fallbackChain,
availableModels, availableModels,
@ -292,11 +292,11 @@ export async function createBuiltinAgents(
userCategories: categories, userCategories: categories,
}) })
// Apply variant from override or requirement // Apply variant from override or resolved fallback chain
if (orchestratorOverride?.variant) { if (orchestratorOverride?.variant) {
orchestratorConfig = { ...orchestratorConfig, variant: orchestratorOverride.variant } orchestratorConfig = { ...orchestratorConfig, variant: orchestratorOverride.variant }
} else if (atlasRequirement?.variant) { } else if (atlasResolvedVariant) {
orchestratorConfig = { ...orchestratorConfig, variant: atlasRequirement.variant } orchestratorConfig = { ...orchestratorConfig, variant: atlasResolvedVariant }
} }
if (orchestratorOverride) { if (orchestratorOverride) {