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:
@@ -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 } : {}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user