refactor(delegated-bootstrap): accept optional system and tools

Add optional system and tools fields to DelegatedChildSessionBootstrap
so callers can stash the original delegated context alongside retry
parts. Backward compatible - existing callers stay unchanged.
This commit is contained in:
YeonGyu-Kim
2026-05-17 00:08:19 +09:00
parent 7c2e2fe1fa
commit 761f682add
@@ -12,6 +12,8 @@ export type DelegatedChildSessionBootstrap = {
retryParts: DelegatedChildSessionRetryPart[] retryParts: DelegatedChildSessionRetryPart[]
fallbackChain?: FallbackEntry[] fallbackChain?: FallbackEntry[]
category?: string category?: string
system?: string
tools?: Record<string, boolean>
} }
const delegatedChildSessionBootstraps = new Map<string, DelegatedChildSessionBootstrap>() const delegatedChildSessionBootstraps = new Map<string, DelegatedChildSessionBootstrap>()
@@ -27,19 +29,28 @@ function cloneFallbackChain(fallbackChain: FallbackEntry[] | undefined): Fallbac
})) }))
} }
function cloneTools(tools: Record<string, boolean> | undefined): Record<string, boolean> | undefined {
return tools ? { ...tools } : undefined
}
export function registerDelegatedChildSessionBootstrap(_args: { export function registerDelegatedChildSessionBootstrap(_args: {
sessionID: string sessionID: string
promptText: string promptText: string
fallbackChain?: FallbackEntry[] fallbackChain?: FallbackEntry[]
category?: string category?: string
system?: string
tools?: Record<string, boolean>
modelFallbackControllerAccessor?: ModelFallbackControllerAccessor modelFallbackControllerAccessor?: ModelFallbackControllerAccessor
}): void { }): void {
const retryParts = [createInternalAgentTextPart(_args.promptText)] const retryParts = [createInternalAgentTextPart(_args.promptText)]
const fallbackChain = cloneFallbackChain(_args.fallbackChain) const fallbackChain = cloneFallbackChain(_args.fallbackChain)
const tools = cloneTools(_args.tools)
delegatedChildSessionBootstraps.set(_args.sessionID, { delegatedChildSessionBootstraps.set(_args.sessionID, {
retryParts, retryParts,
...(fallbackChain ? { fallbackChain } : {}), ...(fallbackChain ? { fallbackChain } : {}),
...(_args.category ? { category: _args.category } : {}), ...(_args.category ? { category: _args.category } : {}),
...(_args.system ? { system: _args.system } : {}),
...(tools ? { tools } : {}),
}) })
_args.modelFallbackControllerAccessor?.setSessionFallbackChain(_args.sessionID, fallbackChain) _args.modelFallbackControllerAccessor?.setSessionFallbackChain(_args.sessionID, fallbackChain)
@@ -55,10 +66,13 @@ export function getDelegatedChildSessionBootstrap(_sessionID: string): Delegated
} }
const fallbackChain = cloneFallbackChain(bootstrap.fallbackChain) const fallbackChain = cloneFallbackChain(bootstrap.fallbackChain)
const tools = cloneTools(bootstrap.tools)
return { return {
retryParts: cloneRetryParts(bootstrap.retryParts), retryParts: cloneRetryParts(bootstrap.retryParts),
...(fallbackChain ? { fallbackChain } : {}), ...(fallbackChain ? { fallbackChain } : {}),
...(bootstrap.category ? { category: bootstrap.category } : {}), ...(bootstrap.category ? { category: bootstrap.category } : {}),
...(bootstrap.system ? { system: bootstrap.system } : {}),
...(tools ? { tools } : {}),
} }
} }