audit follow-up: burn down lint hotspots and dedupe channel gating flows
This commit is contained in:
@@ -1,8 +1,41 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { formatPrompt, parseCommand } from './minimal.js';
|
||||
import type { ModelConfig } from '../../config/schema.js';
|
||||
import type { ManagedSession } from '../../session/index.js';
|
||||
import type { ModelClient } from '../../models/types.js';
|
||||
import type { ModelRouter } from '../../models/router.js';
|
||||
import type { NativeAgent } from '../../backends/native/agent.js';
|
||||
import { MinimalTui } from './minimal.js';
|
||||
|
||||
type TuiRouterStub = Pick<ModelRouter, 'getTier' | 'getAvailableTiers' | 'setTier' | 'getLabel'> &
|
||||
Partial<ModelRouter> &
|
||||
Partial<ModelClient> & {
|
||||
getLocalProviderName: () => string | undefined;
|
||||
setLocalClient: ReturnType<typeof vi.fn>;
|
||||
};
|
||||
|
||||
function asSession(value: unknown): ManagedSession {
|
||||
return value as ManagedSession;
|
||||
}
|
||||
|
||||
function asRouter(value: unknown): ModelClient & ModelRouter {
|
||||
return value as ModelClient & ModelRouter;
|
||||
}
|
||||
|
||||
function asAgent(value: unknown): NativeAgent {
|
||||
return value as NativeAgent;
|
||||
}
|
||||
|
||||
function minimalTuiPrivates(value: MinimalTui): {
|
||||
handleBackendCommand: (provider: string) => Promise<void>;
|
||||
handleModelCommand: (tier: string, providerModel?: string) => void;
|
||||
} {
|
||||
return value as unknown as {
|
||||
handleBackendCommand: (provider: string) => Promise<void>;
|
||||
handleModelCommand: (tier: string, providerModel?: string) => void;
|
||||
};
|
||||
}
|
||||
|
||||
describe('formatPrompt', () => {
|
||||
it('formats default prompt', () => {
|
||||
const prompt = formatPrompt('default');
|
||||
@@ -47,10 +80,11 @@ describe('MinimalTui backend command', () => {
|
||||
replaceHistory: vi.fn(),
|
||||
};
|
||||
|
||||
const mockRouter = {
|
||||
const mockRouter: TuiRouterStub = {
|
||||
getTier: () => 'default' as const,
|
||||
getAvailableTiers: () => ['default', 'local'],
|
||||
setTier: vi.fn(() => true),
|
||||
getLabel: (tier: string) => tier,
|
||||
getLocalProviderName: () => 'ollama',
|
||||
setLocalClient: vi.fn(),
|
||||
chat: vi.fn(),
|
||||
@@ -66,15 +100,15 @@ describe('MinimalTui backend command', () => {
|
||||
};
|
||||
|
||||
const tui = new MinimalTui({
|
||||
session: mockSession as any,
|
||||
modelClient: mockRouter as any,
|
||||
modelRouter: mockRouter as any,
|
||||
session: asSession(mockSession),
|
||||
modelClient: asRouter(mockRouter),
|
||||
modelRouter: asRouter(mockRouter),
|
||||
systemPrompt: 'test',
|
||||
localProviders,
|
||||
});
|
||||
|
||||
// Access private method for testing
|
||||
await (tui as any).handleBackendCommand('llamacpp');
|
||||
await minimalTuiPrivates(tui).handleBackendCommand('llamacpp');
|
||||
|
||||
expect(mockRouter.setLocalClient).toHaveBeenCalled();
|
||||
});
|
||||
@@ -88,10 +122,11 @@ describe('MinimalTui backend command', () => {
|
||||
replaceHistory: vi.fn(),
|
||||
};
|
||||
|
||||
const mockRouter = {
|
||||
const mockRouter: TuiRouterStub = {
|
||||
getTier: () => 'default' as const,
|
||||
getAvailableTiers: () => ['default', 'local'],
|
||||
setTier: vi.fn(() => true),
|
||||
getLabel: (tier: string) => tier,
|
||||
getLocalProviderName: () => 'ollama',
|
||||
setLocalClient: vi.fn(),
|
||||
chat: vi.fn(),
|
||||
@@ -105,15 +140,15 @@ describe('MinimalTui backend command', () => {
|
||||
};
|
||||
|
||||
const tui = new MinimalTui({
|
||||
session: mockSession as any,
|
||||
modelClient: mockRouter as any,
|
||||
modelRouter: mockRouter as any,
|
||||
agent: mockAgent as any,
|
||||
session: asSession(mockSession),
|
||||
modelClient: asRouter(mockRouter),
|
||||
modelRouter: asRouter(mockRouter),
|
||||
agent: asAgent(mockAgent),
|
||||
systemPrompt: 'test',
|
||||
});
|
||||
|
||||
// Call private handleModelCommand to switch to local
|
||||
(tui as any).handleModelCommand('local');
|
||||
minimalTuiPrivates(tui).handleModelCommand('local');
|
||||
|
||||
expect(mockRouter.setTier).toHaveBeenCalledWith('local');
|
||||
expect(mockAgent.setModelTier).toHaveBeenCalledWith('local');
|
||||
@@ -132,10 +167,11 @@ describe('MinimalTui backend command', () => {
|
||||
replaceHistory: vi.fn(),
|
||||
};
|
||||
|
||||
const mockRouter = {
|
||||
const mockRouter: TuiRouterStub = {
|
||||
getTier: () => 'default' as const,
|
||||
getAvailableTiers: () => ['default', 'local'],
|
||||
setTier: vi.fn(() => true),
|
||||
getLabel: (tier: string) => tier,
|
||||
getLocalProviderName: () => 'ollama',
|
||||
setLocalClient: vi.fn(),
|
||||
setClient: vi.fn(),
|
||||
@@ -145,9 +181,9 @@ describe('MinimalTui backend command', () => {
|
||||
};
|
||||
|
||||
const tui = new MinimalTui({
|
||||
session: mockSession as any,
|
||||
modelClient: mockRouter as any,
|
||||
modelRouter: mockRouter as any,
|
||||
session: asSession(mockSession),
|
||||
modelClient: asRouter(mockRouter),
|
||||
modelRouter: asRouter(mockRouter),
|
||||
systemPrompt: 'test',
|
||||
modelProviderConfigs: {
|
||||
openrouter: {
|
||||
@@ -159,7 +195,7 @@ describe('MinimalTui backend command', () => {
|
||||
},
|
||||
});
|
||||
|
||||
(tui as any).handleModelCommand('default', 'openrouter/deepseek/deepseek-chat');
|
||||
minimalTuiPrivates(tui).handleModelCommand('default', 'openrouter/deepseek/deepseek-chat');
|
||||
|
||||
expect(mockRouter.setClient).toHaveBeenCalledOnce();
|
||||
expect(mockRouter.setTierStrict).toHaveBeenCalledWith('default', true);
|
||||
@@ -186,10 +222,11 @@ describe('MinimalTui backend command', () => {
|
||||
replaceHistory: vi.fn(),
|
||||
};
|
||||
|
||||
const mockRouter = {
|
||||
const mockRouter: TuiRouterStub = {
|
||||
getTier: () => 'fast' as const,
|
||||
getAvailableTiers: () => ['default', 'fast', 'local'],
|
||||
setTier: vi.fn(() => true),
|
||||
getLabel: (tier: string) => tier,
|
||||
getLocalProviderName: () => 'ollama',
|
||||
setLocalClient: vi.fn(),
|
||||
setClient: vi.fn(),
|
||||
@@ -205,10 +242,10 @@ describe('MinimalTui backend command', () => {
|
||||
};
|
||||
|
||||
const tui = new MinimalTui({
|
||||
session: mockSession as any,
|
||||
modelClient: mockRouter as any,
|
||||
modelRouter: mockRouter as any,
|
||||
agent: mockAgent as any,
|
||||
session: asSession(mockSession),
|
||||
modelClient: asRouter(mockRouter),
|
||||
modelRouter: asRouter(mockRouter),
|
||||
agent: asAgent(mockAgent),
|
||||
systemPrompt: 'test',
|
||||
modelProviderConfigs: {
|
||||
openrouter: {
|
||||
@@ -220,7 +257,7 @@ describe('MinimalTui backend command', () => {
|
||||
},
|
||||
});
|
||||
|
||||
(tui as any).handleModelCommand('default', 'openrouter/deepseek/deepseek-chat');
|
||||
minimalTuiPrivates(tui).handleModelCommand('default', 'openrouter/deepseek/deepseek-chat');
|
||||
|
||||
expect(mockRouter.setTier).toHaveBeenCalledWith('default');
|
||||
expect(mockAgent.setModelTier).toHaveBeenCalledWith('default');
|
||||
|
||||
Reference in New Issue
Block a user