feat(setup): add model provider setup flows
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { createInterface } from 'readline/promises';
|
||||
import { EventEmitter } from 'events';
|
||||
import { createPrompter } from './prompts.js';
|
||||
import { ConfigBuilder } from './config.js';
|
||||
import { setupProviders } from './providers.js';
|
||||
|
||||
function mockReadline(inputs: string[]) {
|
||||
let questionIdx = 0;
|
||||
const emitter = new EventEmitter();
|
||||
|
||||
return {
|
||||
async question(query: string) {
|
||||
const answer = inputs[questionIdx++];
|
||||
return answer ?? '';
|
||||
},
|
||||
|
||||
close() {
|
||||
// no-op
|
||||
},
|
||||
|
||||
[Symbol.asyncIterator]() {
|
||||
return this;
|
||||
},
|
||||
|
||||
async next() {
|
||||
return { done: true };
|
||||
},
|
||||
} as any;
|
||||
}
|
||||
|
||||
describe('setupProviders', () => {
|
||||
it('configures anthropic as default provider', async () => {
|
||||
const rl = mockReadline(['1', 'sk-ant-test123', '', 'n']);
|
||||
const p = createPrompter(rl);
|
||||
const builder = new ConfigBuilder();
|
||||
await setupProviders(p, builder);
|
||||
const config = builder.build();
|
||||
expect(config.models.default.provider).toBe('anthropic');
|
||||
expect(config.models.default.api_key).toBe('sk-ant-test123');
|
||||
expect(config.models.default.model).toBe('claude-sonnet-4-20250514');
|
||||
});
|
||||
|
||||
it('configures ollama as default provider', async () => {
|
||||
const rl = mockReadline(['3', '', '', 'n']);
|
||||
const p = createPrompter(rl);
|
||||
const builder = new ConfigBuilder();
|
||||
await setupProviders(p, builder);
|
||||
const config = builder.build();
|
||||
expect(config.models.default.provider).toBe('ollama');
|
||||
expect(config.models.default.endpoint).toBe('http://localhost:11434');
|
||||
});
|
||||
|
||||
it('configures anthropic with fast tier', async () => {
|
||||
const rl = mockReadline(['1', 'sk-ant-test123', '', 'y', '']);
|
||||
const p = createPrompter(rl);
|
||||
const builder = new ConfigBuilder();
|
||||
await setupProviders(p, builder);
|
||||
const config = builder.build();
|
||||
expect(config.models.default.provider).toBe('anthropic');
|
||||
expect(config.models.fast).toBeDefined();
|
||||
expect(config.models.fast.provider).toBe('anthropic');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user