summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIvan <[email protected]>2025-11-12 20:41:44 +0200
committerGitHub <[email protected]>2025-11-12 12:41:44 -0600
commitc8bda598f55bd0d104c979866605b5cc61d1250a (patch)
treea17030fe1a76cf215c92af5275c9fb8aca9339b7
parentc857cff585b8eee5d4ec993eed74847f2df1492e (diff)
downloadopencode-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.ts10
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 {