codeburn/tests/provider-registry.test.ts
AgentSeal b7b7b2c7d6 perf: lazy-load cursor provider to eliminate startup overhead
Cursor module (sqlite.ts, better-sqlite3) now only loads when
cursor provider is actually requested. Claude/Codex startup
is unaffected -- cursor import never happens unless needed.
2026-04-15 03:59:49 -07:00

49 lines
2.1 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { providers, getAllProviders } from '../src/providers/index.js'
describe('provider registry', () => {
it('has core providers registered synchronously', () => {
expect(providers.map(p => p.name)).toEqual(['claude', 'codex'])
})
it('includes cursor after async load', async () => {
const all = await getAllProviders()
expect(all.map(p => p.name)).toEqual(['claude', 'codex', 'cursor'])
})
it('claude tool display names are identity', () => {
const claude = providers.find(p => p.name === 'claude')!
expect(claude.toolDisplayName('Bash')).toBe('Bash')
expect(claude.toolDisplayName('Read')).toBe('Read')
})
it('codex tool display names are normalized', () => {
const codex = providers.find(p => p.name === 'codex')!
expect(codex.toolDisplayName('exec_command')).toBe('Bash')
expect(codex.toolDisplayName('read_file')).toBe('Read')
expect(codex.toolDisplayName('write_file')).toBe('Edit')
expect(codex.toolDisplayName('spawn_agent')).toBe('Agent')
})
it('codex model display names are human-readable', () => {
const codex = providers.find(p => p.name === 'codex')!
expect(codex.modelDisplayName('gpt-5.4')).toBe('GPT-5.4')
expect(codex.modelDisplayName('gpt-5.4-mini')).toBe('GPT-5.4 Mini')
expect(codex.modelDisplayName('gpt-5.3-codex')).toBe('GPT-5.3 Codex')
})
it('claude model display names are human-readable', () => {
const claude = providers.find(p => p.name === 'claude')!
expect(claude.modelDisplayName('claude-opus-4-6-20260205')).toBe('Opus 4.6')
expect(claude.modelDisplayName('claude-sonnet-4-6')).toBe('Sonnet 4.6')
})
it('cursor model display names handle auto mode', async () => {
const all = await getAllProviders()
const cursor = all.find(p => p.name === 'cursor')!
expect(cursor.modelDisplayName('default')).toBe('Auto (Sonnet est.)')
expect(cursor.modelDisplayName('claude-4.5-opus-high-thinking')).toBe('Opus 4.5 (Thinking)')
expect(cursor.modelDisplayName('grok-code-fast-1')).toBe('Grok Code Fast')
expect(cursor.modelDisplayName('unknown-model')).toBe('unknown-model')
})
})