summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authordpuyosa <[email protected]>2026-01-27 16:59:12 +0100
committerGitHub <[email protected]>2026-01-27 10:59:12 -0500
commitd8e7e915e24f294886529d5b32fc07e497ab8e45 (patch)
treef3df7f4923297545a47764441662c1cc257cce05 /packages
parent712d2b7d15269a4d4bc7ef0829cc1014cd81c4b3 (diff)
downloadopencode-d8e7e915e24f294886529d5b32fc07e497ab8e45.tar.gz
opencode-d8e7e915e24f294886529d5b32fc07e497ab8e45.zip
feat(opencode): Handle Venice cache creation tokens (#10735)
Co-authored-by: Aiden Cline <[email protected]>
Diffstat (limited to 'packages')
-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),
},
}