| 9 | import type { QodexConfig } from '../src/config/defaults.js'; |
| 10 | |
| 11 | function makeConfig(overrides: Partial<QodexConfig> = {}): QodexConfig { |
| 12 | return { |
| 13 | defaults: { |
| 14 | provider: 'ollama', |
| 15 | model: 'qwen2.5-coder:32b', |
| 16 | preferLocal: true, |
| 17 | maxIterations: 25, |
| 18 | }, |
| 19 | providers: { |
| 20 | ollama: { baseUrl: 'http://localhost:11434' }, |
| 21 | anthropic: { apiKeyEnv: 'ANTHROPIC_API_KEY' }, |
| 22 | openai: { apiKeyEnv: 'OPENAI_API_KEY' }, |
| 23 | deepseek: { apiKeyEnv: 'DEEPSEEK_API_KEY', baseUrl: 'https://api.deepseek.com' }, |
| 24 | }, |
| 25 | routing: { planning: 'qwen', toolDecision: 'qwen', codeGeneration: 'qwen', reflection: 'qwen' }, |
| 26 | budget: { dailyLimitUsd: 100, perTaskLimitUsd: 10, perTaskMaxTokens: 1_000_000, perTaskMaxWallSeconds: 300, toolTimeoutSeconds: 60 }, |
| 27 | security: { autoApprove: [], autoReject: [], sandboxShell: false }, |
| 28 | ui: { theme: 'dark', showThinking: true, showTokenCount: false, showCost: true }, |
| 29 | mcp: { servers: {} }, |
| 30 | ...overrides, |
| 31 | } as QodexConfig; |
| 32 | } |
| 33 | |
| 34 | describe('inferProvider', () => { |
| 35 | it('maps Anthropic model ids', () => { |