From d8e7e915e24f294886529d5b32fc07e497ab8e45 Mon Sep 17 00:00:00 2001 From: dpuyosa Date: Tue, 27 Jan 2026 16:59:12 +0100 Subject: [PATCH] feat(opencode): Handle Venice cache creation tokens (#10735) Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> --- packages/opencode/src/session/index.ts | 22 +++++++++++++--------- 1 file 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().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), }, }