From dd66c3a892d6774d83f1af5390b29d12f1098278 Mon Sep 17 00:00:00 2001 From: hailin Date: Fri, 23 Jan 2026 08:27:03 -0800 Subject: [PATCH] fix(conversation): resolve TypeScript type errors in token tracking - Fix Usage type cast by using unknown intermediate type - Add PricingTier interface and proper Record type for PRICING Co-Authored-By: Claude Opus 4.5 --- .../src/infrastructure/claude/claude-agent.service.ts | 2 +- .../src/infrastructure/claude/token-usage.service.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts b/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts index 6a23155..bc52b63 100644 --- a/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts +++ b/packages/services/conversation-service/src/infrastructure/claude/claude-agent.service.ts @@ -370,7 +370,7 @@ export class ClaudeAgentService implements OnModuleInit { totalInputTokens += finalMsg.usage.input_tokens || 0; totalOutputTokens += finalMsg.usage.output_tokens || 0; // Prompt Caching 的 tokens (如果 API 返回) - const usage = finalMsg.usage as Record; + const usage = finalMsg.usage as unknown as Record; totalCacheCreationTokens += usage.cache_creation_input_tokens || 0; totalCacheReadTokens += usage.cache_read_input_tokens || 0; } diff --git a/packages/services/conversation-service/src/infrastructure/claude/token-usage.service.ts b/packages/services/conversation-service/src/infrastructure/claude/token-usage.service.ts index bb0fe4d..9a487dc 100644 --- a/packages/services/conversation-service/src/infrastructure/claude/token-usage.service.ts +++ b/packages/services/conversation-service/src/infrastructure/claude/token-usage.service.ts @@ -11,7 +11,14 @@ import { TokenUsageEntity } from '../../domain/entities/token-usage.entity'; * - Cache write: $3.75/MTok * - Cache read: $0.30/MTok */ -const PRICING = { +interface PricingTier { + input: number; + output: number; + cacheWrite: number; + cacheRead: number; +} + +const PRICING: Record = { 'claude-sonnet-4-20250514': { input: 3 / 1_000_000, output: 15 / 1_000_000,