diff --git a/src/services/api/openai/index.ts b/src/services/api/openai/index.ts index 9195b3d5b..53734b214 100644 --- a/src/services/api/openai/index.ts +++ b/src/services/api/openai/index.ts @@ -11,6 +11,8 @@ import { normalizeMessagesForAPI } from '../../../utils/messages.js' import { toolToAPISchema } from '../../../utils/api.js' import { getEmptyToolPermissionContext } from '../../../Tool.js' import { logForDebugging } from '../../../utils/debug.js' +import { addToTotalSessionCost } from '../../../cost-tracker.js' +import { calculateUSDCost } from '../../../utils/modelCost.js' import type { Options } from '../claude.js' import { randomUUID } from 'crypto' import { @@ -189,6 +191,12 @@ export async function* queryModelOpenAI( break } + // Track cost and token usage (matching the Anthropic path in claude.ts) + if (event.type === 'message_stop' && usage.input_tokens + usage.output_tokens > 0) { + const costUSD = calculateUSDCost(openaiModel, usage as any) + addToTotalSessionCost(costUSD, usage as any, options.model) + } + // Also yield as StreamEvent for real-time display (matching Anthropic path) yield { type: 'stream_event',