diff --git a/sdk/src/impl/__tests__/usage-receipts.test.ts b/sdk/src/impl/__tests__/usage-receipts.test.ts index 7e4bba3b96..fb452891d7 100644 --- a/sdk/src/impl/__tests__/usage-receipts.test.ts +++ b/sdk/src/impl/__tests__/usage-receipts.test.ts @@ -103,7 +103,8 @@ describe('stream usage receipts', () => { }, ]) expect(costs).toHaveLength(1) - expect(costs[0]).toBeGreaterThan(0) + // max(0.01, 0.02) * 1.055 * 100 = 2.11, rounded to 2 + expect(costs[0]).toBe(2) expect(callbackOrder).toEqual(['usage', 'cost']) }) diff --git a/sdk/src/impl/llm.ts b/sdk/src/impl/llm.ts index 2ce4cdb443..98d20b20a8 100644 --- a/sdk/src/impl/llm.ts +++ b/sdk/src/impl/llm.ts @@ -392,8 +392,10 @@ export async function* promptAiSdkStream( | OpenRouterUsageAccounting | undefined const costOverrideDollars = openrouterUsage - ? (openrouterUsage.cost ?? 0) + - (openrouterUsage.costDetails?.upstreamInferenceCost ?? 0) + ? Math.max( + openrouterUsage.cost ?? 0, + openrouterUsage.costDetails?.upstreamInferenceCost ?? 0, + ) : undefined if (!params.onCostCalculated || !costOverrideDollars) return costReported = true @@ -732,9 +734,10 @@ export async function promptAiSdk( const openrouterUsage = providerMetadata.codebuff .usage as OpenRouterUsageAccounting - costOverrideDollars = - (openrouterUsage.cost ?? 0) + - (openrouterUsage.costDetails?.upstreamInferenceCost ?? 0) + costOverrideDollars = Math.max( + openrouterUsage.cost ?? 0, + openrouterUsage.costDetails?.upstreamInferenceCost ?? 0, + ) } } @@ -803,9 +806,10 @@ export async function promptAiSdkStructured( const openrouterUsage = providerMetadata.codebuff .usage as OpenRouterUsageAccounting - costOverrideDollars = - (openrouterUsage.cost ?? 0) + - (openrouterUsage.costDetails?.upstreamInferenceCost ?? 0) + costOverrideDollars = Math.max( + openrouterUsage.cost ?? 0, + openrouterUsage.costDetails?.upstreamInferenceCost ?? 0, + ) } }