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:
@@ -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