fix(analytics): price Claude Opus 4.7 thinking

This commit is contained in:
Kai (Tam Nhu) Tran
2026-05-30 15:20:44 -04:00
committed by Tam Nhu Tran
parent 62a4d44b58
commit 062e77e55f
2 changed files with 16 additions and 12 deletions
+6
View File
@@ -243,6 +243,12 @@ const PRICING_REGISTRY: Record<string, ModelPricing> = {
cacheCreationPerMillion: 6.25, cacheCreationPerMillion: 6.25,
cacheReadPerMillion: 0.5, cacheReadPerMillion: 0.5,
}, },
'claude-opus-4-7-thinking': {
inputPerMillion: 5.0,
outputPerMillion: 25.0,
cacheCreationPerMillion: 6.25,
cacheReadPerMillion: 0.5,
},
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// OpenAI Models - Source: better-ccusage // OpenAI Models - Source: better-ccusage
+10 -12
View File
@@ -256,14 +256,14 @@ describe('model-pricing', () => {
expect(cost).toBe(36.75); // 5 + 25 + 6.25 + 0.5 expect(cost).toBe(36.75); // 5 + 25 + 6.25 + 0.5
}); });
it('should calculate Claude Opus 4.7 cache cost consistently across repeat lookups', () => { it('should calculate Claude Opus 4.7 thinking cost including cache token rates', () => {
const usage: TokenUsage = { const usage: TokenUsage = {
inputTokens: 1_000_000, inputTokens: 1_000_000,
outputTokens: 1_000_000, outputTokens: 1_000_000,
cacheCreationTokens: 1_000_000, cacheCreationTokens: 1_000_000,
cacheReadTokens: 1_000_000, cacheReadTokens: 1_000_000,
}; };
const cost = calculateCost(usage, 'claude-opus-4-7'); const cost = calculateCost(usage, 'claude-opus-4-7-thinking');
expect(cost).toBe(36.75); // 5 + 25 + 6.25 + 0.5 expect(cost).toBe(36.75); // 5 + 25 + 6.25 + 0.5
}); });
}); });
@@ -469,17 +469,15 @@ describe('model-pricing', () => {
}); });
it('gracefully ignores malformed cached model entries', () => { it('gracefully ignores malformed cached model entries', () => {
setCachedModelsDevRegistry( setCachedModelsDevRegistry({
{ openai: {
openai: { id: 'openai',
id: 'openai', models: {
models: { 'null-entry': null,
'null-entry': null, 'gpt-5.5': { id: 'gpt-5.5', cost: { input: 5, output: 30 } },
'gpt-5.5': { id: 'gpt-5.5', cost: { input: 5, output: 30 } },
},
}, },
} as unknown as Parameters<typeof setCachedModelsDevRegistry>[0] },
); } as unknown as Parameters<typeof setCachedModelsDevRegistry>[0]);
expect(() => getModelPricing('openai/gpt-5.5')).not.toThrow(); expect(() => getModelPricing('openai/gpt-5.5')).not.toThrow();
expect(getModelPricing('openai/gpt-5.5').inputPerMillion).toBe(5); expect(getModelPricing('openai/gpt-5.5').inputPerMillion).toBe(5);