Browse Source

fix: reorder constructor params (coordinator before runtimeOverride)

PR #692 was merged with runtimeOverride before coordinator in the
ForegroundFallbackManager constructor. Upstream's coordinator test
passes coordinator as the 5th argument, so it was being assigned to
the runtimeOverride slot (boolean), causing the coordinator's
onSessionDeleted callback to never register.

Swaps parameter order to match upstream's convention: coordinator
comes before runtimeOverride.
dragon-Elec 1 month ago
parent
commit
8e06472cb5

+ 5 - 0
src/hooks/foreground-fallback/index.test.ts

@@ -947,6 +947,7 @@ describe('ForegroundFallbackManager runtimeOverride', () => {
       makeChains(),
       true,
       3,
+      undefined,
       true, // runtimeOverride
     );
 
@@ -981,6 +982,7 @@ describe('ForegroundFallbackManager runtimeOverride', () => {
       makeChains(),
       true,
       3,
+      undefined,
       false, // runtimeOverride
     );
 
@@ -1010,6 +1012,7 @@ describe('ForegroundFallbackManager runtimeOverride', () => {
       makeChains(),
       true,
       3,
+      undefined,
       false, // runtimeOverride
     );
 
@@ -1044,6 +1047,7 @@ describe('ForegroundFallbackManager runtimeOverride', () => {
       makeChains(),
       true,
       3,
+      undefined,
       false, // runtimeOverride
     );
 
@@ -1078,6 +1082,7 @@ describe('ForegroundFallbackManager runtimeOverride', () => {
       makeChains(),
       true,
       3,
+      undefined,
       false, // runtimeOverride
     );
 

+ 1 - 1
src/hooks/foreground-fallback/index.ts

@@ -121,6 +121,7 @@ export class ForegroundFallbackManager {
     private readonly enabled: boolean,
     /** Consecutive 429s tolerated on the same model before swap/abort. */
     private readonly maxRetries: number = 3,
+    coordinator?: SessionLifecycle,
     /**
      * When true (default), a runtime model outside the configured chain
      * still triggers fallback on rate-limit errors. When false, out-of-chain
@@ -128,7 +129,6 @@ export class ForegroundFallbackManager {
      * that are members of the chain always fall back regardless.
      */
     private readonly runtimeOverride: boolean = true,
-    coordinator?: SessionLifecycle,
   ) {
     if (coordinator) {
       coordinator.onSessionDeleted((id) => {

+ 1 - 1
src/index.ts

@@ -299,8 +299,8 @@ const OhMyOpenCodeLite: Plugin = async (ctx) => {
       runtimeChains,
       config.fallback?.enabled !== false,
       config.fallback?.maxRetries ?? 3,
-      config.fallback?.runtimeOverride ?? true,
       sessionLifecycle,
+      config.fallback?.runtimeOverride ?? true,
     );
 
     deepworkCommandHook = createDeepworkCommandHook();