summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/session/index.ts22
1 files changed, 13 insertions, 9 deletions
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index b81a21a57..faa8c6eb0 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -426,11 +426,20 @@ export namespace Session {
metadata: z.custom<ProviderMetadata>().optional(),
}),
(input) => {
- const cachedInputTokens = input.usage.cachedInputTokens ?? 0
+ const cacheReadInputTokens = input.usage.cachedInputTokens ?? 0
+ const cacheWriteInputTokens = (
+ input.metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
+ // @ts-expect-error
+ input.metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ??
+ // @ts-expect-error
+ input.metadata?.["venice"]?.["usage"]?.["cacheCreationInputTokens"] ??
+ 0
+ ) as number
+
const excludesCachedTokens = !!(input.metadata?.["anthropic"] || input.metadata?.["bedrock"])
const adjustedInputTokens = excludesCachedTokens
? (input.usage.inputTokens ?? 0)
- : (input.usage.inputTokens ?? 0) - cachedInputTokens
+ : (input.usage.inputTokens ?? 0) - cacheReadInputTokens - cacheWriteInputTokens
const safe = (value: number) => {
if (!Number.isFinite(value)) return 0
return value
@@ -441,13 +450,8 @@ export namespace Session {
output: safe(input.usage.outputTokens ?? 0),
reasoning: safe(input.usage?.reasoningTokens ?? 0),
cache: {
- write: safe(
- (input.metadata?.["anthropic"]?.["cacheCreationInputTokens"] ??
- // @ts-expect-error
- input.metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ??
- 0) as number,
- ),
- read: safe(cachedInputTokens),
+ write: safe(cacheWriteInputTokens),
+ read: safe(cacheReadInputTokens),
},
}