fix: sync model tier between TUI and WebChat when switching models
ModelRouter now supports multiple tier-change listeners via addOnTierChange(), SessionBridge subscribes to tier changes and propagates them to all WebChat agents (both existing and newly created), and the fullscreen TUI now also updates the agent's tier when switching models (matching minimal TUI behavior).
This commit is contained in:
+13
-4
@@ -26,7 +26,7 @@ export class ModelRouter implements ModelClient {
|
||||
private currentTier: ModelTier = 'default';
|
||||
private localProviderName?: string;
|
||||
private retryConfig?: RetryConfig;
|
||||
private onTierChange?: (tier: ModelTier) => void;
|
||||
private tierChangeListeners: Array<(tier: ModelTier) => void> = [];
|
||||
|
||||
constructor(config: ModelRouterConfig) {
|
||||
this.clients = new Map();
|
||||
@@ -35,7 +35,10 @@ export class ModelRouter implements ModelClient {
|
||||
this.fallbackChain = config.fallbackChain;
|
||||
this.tierFallbacks = config.tierFallbacks ?? new Map();
|
||||
this.retryConfig = config.retryConfig;
|
||||
this.onTierChange = config.onTierChange;
|
||||
|
||||
if (config.onTierChange) {
|
||||
this.tierChangeListeners.push(config.onTierChange);
|
||||
}
|
||||
|
||||
this.clients.set('default', config.default);
|
||||
if (config.fast) this.clients.set('fast', config.fast);
|
||||
@@ -54,14 +57,20 @@ export class ModelRouter implements ModelClient {
|
||||
setTier(tier: ModelTier): boolean {
|
||||
if (this.clients.has(tier)) {
|
||||
this.currentTier = tier;
|
||||
this.onTierChange?.(tier);
|
||||
for (const listener of this.tierChangeListeners) {
|
||||
listener(tier);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
setOnTierChange(callback: (tier: ModelTier) => void): void {
|
||||
this.onTierChange = callback;
|
||||
this.tierChangeListeners = [callback];
|
||||
}
|
||||
|
||||
addOnTierChange(callback: (tier: ModelTier) => void): void {
|
||||
this.tierChangeListeners.push(callback);
|
||||
}
|
||||
|
||||
getTier(): ModelTier {
|
||||
|
||||
Reference in New Issue
Block a user