fix: enable runtime fallback for delegated child sessions (#2357)

This commit is contained in:
YeonGyu-Kim
2026-03-12 01:43:17 +09:00
parent 4ded45d14c
commit ba86ef0eea
14 changed files with 630 additions and 211 deletions
@@ -0,0 +1,49 @@
import type { OhMyOpenCodeConfig } from "../../config"
import { HOOK_NAME } from "./constants"
import { log } from "../../shared/logger"
import { SessionCategoryRegistry } from "../../shared/session-category-registry"
type ResolveFallbackBootstrapModelOptions = {
sessionID: string
source: string
eventModel?: string
resolvedAgent?: string
pluginConfig?: OhMyOpenCodeConfig
}
export function resolveFallbackBootstrapModel(
options: ResolveFallbackBootstrapModelOptions,
): string | undefined {
if (options.eventModel) {
return options.eventModel
}
const agentConfigs = options.pluginConfig?.agents
const agentConfig = options.resolvedAgent && agentConfigs
? agentConfigs[options.resolvedAgent as keyof typeof agentConfigs]
: undefined
const agentModel = typeof agentConfig?.model === "string" ? agentConfig.model : undefined
if (agentModel) {
log(`[${HOOK_NAME}] Derived model from agent config for ${options.source}`, {
sessionID: options.sessionID,
agent: options.resolvedAgent,
model: agentModel,
})
return agentModel
}
const sessionCategory = SessionCategoryRegistry.get(options.sessionID)
const categoryModel = sessionCategory
? options.pluginConfig?.categories?.[sessionCategory]?.model
: undefined
if (typeof categoryModel === "string" && categoryModel.length > 0) {
log(`[${HOOK_NAME}] Derived model from session category config for ${options.source}`, {
sessionID: options.sessionID,
category: sessionCategory,
model: categoryModel,
})
return categoryModel
}
return undefined
}