fix(model-fallback): expose session fallback chains to background tasks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -58,6 +58,7 @@ export function createManagers(args: {
|
||||
deps.markServerRunningInProcessFn()
|
||||
}
|
||||
const tmuxSessionManager = new deps.TmuxSessionManagerClass(ctx, tmuxConfig)
|
||||
const modelFallbackControllerAccessor = createModelFallbackControllerAccessor()
|
||||
|
||||
deps.registerManagerForCleanupFn({
|
||||
shutdown: async () => {
|
||||
@@ -110,6 +111,7 @@ export function createManagers(args: {
|
||||
})
|
||||
},
|
||||
enableParentSessionNotifications: backgroundNotificationHookEnabled,
|
||||
modelFallbackControllerAccessor,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -122,8 +124,6 @@ export function createManagers(args: {
|
||||
pluginConfig,
|
||||
modelCacheState,
|
||||
})
|
||||
const modelFallbackControllerAccessor = createModelFallbackControllerAccessor()
|
||||
|
||||
return {
|
||||
tmuxSessionManager,
|
||||
backgroundManager,
|
||||
|
||||
@@ -4,6 +4,7 @@ import type { ModelFallbackStateController } from "./fallback-state-controller"
|
||||
export type ModelFallbackControllerAccessor = {
|
||||
register: (controller: ModelFallbackStateController) => void
|
||||
setSessionFallbackChain: (sessionID: string, fallbackChain: FallbackEntry[] | undefined) => void
|
||||
getSessionFallbackChain: (sessionID: string) => FallbackEntry[] | undefined
|
||||
clearSessionFallbackChain: (sessionID: string) => void
|
||||
}
|
||||
|
||||
@@ -18,6 +19,10 @@ export function createModelFallbackControllerAccessor(): ModelFallbackController
|
||||
controller?.setSessionFallbackChain(sessionID, fallbackChain)
|
||||
}
|
||||
|
||||
function getSessionFallbackChain(sessionID: string): FallbackEntry[] | undefined {
|
||||
return controller?.getSessionFallbackChain(sessionID)
|
||||
}
|
||||
|
||||
function clearSessionFallbackChain(sessionID: string): void {
|
||||
controller?.clearSessionFallbackChain(sessionID)
|
||||
}
|
||||
@@ -25,6 +30,7 @@ export function createModelFallbackControllerAccessor(): ModelFallbackController
|
||||
return {
|
||||
register,
|
||||
setSessionFallbackChain,
|
||||
getSessionFallbackChain,
|
||||
clearSessionFallbackChain,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ type ModelFallbackStateLike = {
|
||||
export type ModelFallbackStateController = {
|
||||
lastToastKey: Map<string, string>
|
||||
setSessionFallbackChain: (sessionID: string, fallbackChain: FallbackEntry[] | undefined) => void
|
||||
getSessionFallbackChain: (sessionID: string) => FallbackEntry[] | undefined
|
||||
clearSessionFallbackChain: (sessionID: string) => void
|
||||
setPendingModelFallback: (
|
||||
sessionID: string,
|
||||
@@ -45,6 +46,10 @@ export function createModelFallbackStateController(input: {
|
||||
sessionFallbackChains.delete(sessionID)
|
||||
}
|
||||
|
||||
function getSessionFallbackChain(sessionID: string): FallbackEntry[] | undefined {
|
||||
return sessionFallbackChains.get(sessionID)
|
||||
}
|
||||
|
||||
function setPendingModelFallback(
|
||||
sessionID: string,
|
||||
agentName: string,
|
||||
@@ -123,6 +128,7 @@ export function createModelFallbackStateController(input: {
|
||||
return {
|
||||
lastToastKey,
|
||||
setSessionFallbackChain,
|
||||
getSessionFallbackChain,
|
||||
clearSessionFallbackChain,
|
||||
setPendingModelFallback,
|
||||
getNextFallback,
|
||||
|
||||
@@ -33,6 +33,7 @@ type ModelFallbackControllerWithState = Pick<
|
||||
ModelFallbackStateController,
|
||||
| "lastToastKey"
|
||||
| "setSessionFallbackChain"
|
||||
| "getSessionFallbackChain"
|
||||
| "clearSessionFallbackChain"
|
||||
| "setPendingModelFallback"
|
||||
| "getNextFallback"
|
||||
@@ -70,6 +71,13 @@ export function clearSessionFallbackChain(
|
||||
controller.clearSessionFallbackChain(sessionID)
|
||||
}
|
||||
|
||||
export function getSessionFallbackChain(
|
||||
controller: Pick<ModelFallbackStateController, "getSessionFallbackChain">,
|
||||
sessionID: string,
|
||||
): FallbackEntry[] | undefined {
|
||||
return controller.getSessionFallbackChain(sessionID)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a pending model fallback for a session.
|
||||
* Called when a model error is detected in session.error handler.
|
||||
@@ -152,6 +160,7 @@ export function createModelFallbackHook(args?: ModelFallbackHookArgs): ModelFall
|
||||
return {
|
||||
lastToastKey: controller.lastToastKey,
|
||||
setSessionFallbackChain: controller.setSessionFallbackChain,
|
||||
getSessionFallbackChain: controller.getSessionFallbackChain,
|
||||
clearSessionFallbackChain: controller.clearSessionFallbackChain,
|
||||
setPendingModelFallback: controller.setPendingModelFallback,
|
||||
getNextFallback: controller.getNextFallback,
|
||||
|
||||
Reference in New Issue
Block a user