diff options
| author | Ivan <[email protected]> | 2025-11-12 20:41:44 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-12 12:41:44 -0600 |
| commit | c8bda598f55bd0d104c979866605b5cc61d1250a (patch) | |
| tree | a17030fe1a76cf215c92af5275c9fb8aca9339b7 | |
| parent | c857cff585b8eee5d4ec993eed74847f2df1492e (diff) | |
| download | opencode-c8bda598f55bd0d104c979866605b5cc61d1250a.tar.gz opencode-c8bda598f55bd0d104c979866605b5cc61d1250a.zip | |
fix: correct cache cost for OpenRouter and other OpenAI-compatible providers (#4256)
| -rw-r--r-- | packages/opencode/src/session/index.ts | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index d0bdfb9e1..dff23c24d 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -378,8 +378,14 @@ export namespace Session { metadata: z.custom<ProviderMetadata>().optional(), }), (input) => { + const cachedInputTokens = input.usage.cachedInputTokens ?? 0 + const excludesCachedTokens = !!(input.metadata?.["anthropic"] || input.metadata?.["bedrock"]) + const adjustedInputTokens = excludesCachedTokens + ? (input.usage.inputTokens ?? 0) + : (input.usage.inputTokens ?? 0) - cachedInputTokens + const tokens = { - input: input.usage.inputTokens ?? 0, + input: adjustedInputTokens, output: input.usage.outputTokens ?? 0, reasoning: input.usage?.reasoningTokens ?? 0, cache: { @@ -387,7 +393,7 @@ export namespace Session { // @ts-expect-error input.metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ?? 0) as number, - read: input.usage.cachedInputTokens ?? 0, + read: cachedInputTokens, }, } return { |
