fix(models): map Warp Claude variants to canonical pricing IDs (#378)

Co-authored-by: Tony Amirault <tony.amirault@wakam.com>
Co-authored-by: Oz <oz-agent@warp.dev>
This commit is contained in:
Tony Amirault 2026-05-22 05:05:26 -04:00 committed by GitHub
parent d0f1f82bf4
commit bbbdcd4eb8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 0 deletions

View file

@ -189,6 +189,12 @@ const BUILTIN_ALIASES: Record<string, string> = {
'Claude Sonnet 4.5': 'claude-sonnet-4-5',
'Claude Haiku 4.5': 'claude-haiku-4-5',
'Claude Opus 4.6': 'claude-opus-4-6',
'claude-4-6-sonnet-high': 'claude-sonnet-4-6',
'claude-4-6-sonnet-low': 'claude-sonnet-4-6',
'claude-4-6-sonnet-medium': 'claude-sonnet-4-6',
'claude-4-6-sonnet-high-fast': 'claude-sonnet-4-6',
'claude-4-7-opus-xhigh': 'claude-opus-4-7',
'claude-4-7-opus-xhigh-fast': 'claude-opus-4-7',
'qwen-auto': 'claude-sonnet-4-5',
'kimi-auto': 'kimi-k2-thinking',
'kimi-code': 'kimi-k2-thinking',

View file

@ -182,6 +182,33 @@ describe('calculateCost - OMP names produce non-zero cost', () => {
})
})
describe('Warp Claude variants resolve to pricing', () => {
const cases: Array<[string, string]> = [
['claude-4-6-sonnet-high', 'claude-sonnet-4-6'],
['claude-4-6-sonnet-low', 'claude-sonnet-4-6'],
['claude-4-6-sonnet-medium', 'claude-sonnet-4-6'],
['claude-4-6-sonnet-high-fast', 'claude-sonnet-4-6'],
['claude-4-7-opus-xhigh', 'claude-opus-4-7'],
['claude-4-7-opus-xhigh-fast', 'claude-opus-4-7'],
]
for (const [input, expectedAlias] of cases) {
it(`${input} resolves to ${expectedAlias} pricing`, () => {
const costs = getModelCosts(input)
expect(costs).not.toBeNull()
expect(costs!.inputCostPerToken).toBeGreaterThan(0)
const expected = getModelCosts(expectedAlias)
expect(expected).not.toBeNull()
expect(costs!.inputCostPerToken).toBe(expected!.inputCostPerToken)
expect(costs!.outputCostPerToken).toBe(expected!.outputCostPerToken)
})
it(`${input} calculates non-zero cost`, () => {
expect(calculateCost(input, 1000, 200, 0, 0, 0)).toBeGreaterThan(0)
})
}
})
describe('calculateCost - Claude cache write durations', () => {
it('prices 1-hour cache writes at 1.6x the 5-minute cache write rate', () => {
const fiveMinute = calculateCost('claude-opus-4-7', 0, 0, 1_000_000, 0, 0)