Make /model provider switch activate selected tier in minimal TUI

This commit is contained in:
William Valentin
2026-02-15 19:53:42 -08:00
parent d44bfc300b
commit 8b1ed2f689
3 changed files with 76 additions and 1 deletions
+61
View File
@@ -163,6 +163,67 @@ describe('MinimalTui backend command', () => {
expect(mockRouter.setClient).toHaveBeenCalledOnce();
expect(mockRouter.setTierStrict).toHaveBeenCalledWith('default', true);
expect(mockRouter.setTier).toHaveBeenCalledWith('default');
} finally {
if (prevOpenRouterKey) {
process.env.OPENROUTER_API_KEY = prevOpenRouterKey;
} else {
delete process.env.OPENROUTER_API_KEY;
}
}
});
it('switches active tier and syncs agent for /model <tier> <provider/model>', () => {
const prevOpenRouterKey = process.env.OPENROUTER_API_KEY;
delete process.env.OPENROUTER_API_KEY;
try {
const mockSession = {
id: 'test',
getHistory: () => [],
addMessage: vi.fn(),
clear: vi.fn(),
replaceHistory: vi.fn(),
};
const mockRouter = {
getTier: () => 'fast' as const,
getAvailableTiers: () => ['default', 'fast', 'local'],
setTier: vi.fn(() => true),
getLocalProviderName: () => 'ollama',
setLocalClient: vi.fn(),
setClient: vi.fn(),
setTierStrict: vi.fn(),
chat: vi.fn(),
getClient: vi.fn(),
};
const mockAgent = {
setModelTier: vi.fn(),
getModelTier: vi.fn(() => 'fast'),
process: vi.fn(),
};
const tui = new MinimalTui({
session: mockSession as any,
modelClient: mockRouter as any,
modelRouter: mockRouter as any,
agent: mockAgent as any,
systemPrompt: 'test',
modelProviderConfigs: {
openrouter: {
provider: 'openrouter',
model: 'seed-model',
api_key: 'test-key',
endpoint: 'https://openrouter.ai/api/v1',
},
},
});
(tui as any).handleModelCommand('default', 'openrouter/deepseek/deepseek-chat');
expect(mockRouter.setTier).toHaveBeenCalledWith('default');
expect(mockAgent.setModelTier).toHaveBeenCalledWith('default');
} finally {
if (prevOpenRouterKey) {
process.env.OPENROUTER_API_KEY = prevOpenRouterKey;
+3 -1
View File
@@ -287,12 +287,14 @@ export class MinimalTui {
});
router.setClient(tier, client, providerModel);
router.setTierStrict(tier, true);
router.setTier(tier);
if (this.config.agent && tier === router.getTier()) {
if (this.config.agent) {
this.config.agent.setModelTier(tier);
}
console.log(`${colors.gray}Set ${tier} to:${colors.reset} ${providerModel}`);
console.log(`${colors.gray}Switched to model:${colors.reset} ${tier}`);
console.log(`${colors.gray}Fallbacks for ${tier} disabled (strict tier mode).${colors.reset}\n`);
} catch (error) {
const message = error instanceof Error ? error.message : String(error);