import { describe, it, expect } from 'vitest'; import { createClientFromConfig } from './index.js'; import { AnthropicClient } from '../models/anthropic.js'; import { OpenAIClient } from '../models/openai.js'; import { OllamaClient } from '../models/local/ollama.js'; import { LlamaCppClient } from '../models/local/llamacpp.js'; import { GeminiClient } from '../models/gemini.js'; import { BedrockClient } from '../models/bedrock.js'; describe('createClientFromConfig', () => { it('creates AnthropicClient for anthropic provider', () => { const client = createClientFromConfig({ provider: 'anthropic', model: 'claude-sonnet-4-5-20250514', api_key: 'sk-ant-test', }); expect(client).toBeInstanceOf(AnthropicClient); }); it('creates OpenAIClient for openai provider', () => { const client = createClientFromConfig({ provider: 'openai', model: 'gpt-4o', api_key: 'sk-test', }); expect(client).toBeInstanceOf(OpenAIClient); }); it('creates OllamaClient for ollama provider', () => { const client = createClientFromConfig({ provider: 'ollama', model: 'llama3.2:1b', endpoint: 'http://localhost:11434', }); expect(client).toBeInstanceOf(OllamaClient); }); it('creates OllamaClient with num_gpu option', () => { const client = createClientFromConfig({ provider: 'ollama', model: 'llama3.2:1b', num_gpu: 0, }); expect(client).toBeInstanceOf(OllamaClient); }); it('creates LlamaCppClient for llamacpp provider', () => { const client = createClientFromConfig({ provider: 'llamacpp', model: 'ministral-reasoning', endpoint: 'http://localhost:8080', }); expect(client).toBeInstanceOf(LlamaCppClient); }); it('defaults llamacpp endpoint to localhost:8080', () => { const client = createClientFromConfig({ provider: 'llamacpp', model: 'test-model', }); expect(client).toBeInstanceOf(LlamaCppClient); }); it('creates GeminiClient for gemini provider', () => { const client = createClientFromConfig({ provider: 'gemini', model: 'gemini-2.5-pro', api_key: 'test-key', }); expect(client).toBeInstanceOf(GeminiClient); }); it('throws for unknown provider', () => { expect(() => createClientFromConfig({ provider: 'unknown' as 'anthropic', model: 'test', })).toThrow('Unknown model provider: unknown'); }); it('creates OpenAIClient with OpenRouter baseURL for openrouter provider', () => { const client = createClientFromConfig({ provider: 'openrouter', model: 'meta-llama/llama-3.1-70b', api_key: 'test-key', }); expect(client).toBeInstanceOf(OpenAIClient); }); it('creates BedrockClient for bedrock provider', () => { const client = createClientFromConfig({ provider: 'bedrock', model: 'anthropic.claude-3-sonnet', }); expect(client).toBeInstanceOf(BedrockClient); }); });