Compare commits

...
1 Commits
Author SHA1 Message Date
Aiden Cline 0641017655 fix(opencode): include cache writes in ACP usage 2026-08-04 14:16:37 +00:00
3 changed files with 9 additions and 5 deletions
+1 -1
View File
@@ -656,7 +656,7 @@ function makeUsageService(sdk: OpencodeClient) {
sessionId: params.sessionID,
update: {
sessionUpdate: "usage_update",
used: message.tokens.input + message.tokens.cache.read,
used: UsageService.contextTokens(message),
size,
cost: { amount: UsageService.totalSessionCost(messages), currency: "USD" },
},
+5 -1
View File
@@ -83,6 +83,10 @@ export function messageLoaderFromSDK(sdk: SDK): MessageLoaderInterface {
export const messageLoaderLayer = (sdk: SDK) => Layer.succeed(MessageLoader, messageLoaderFromSDK(sdk))
export function contextTokens(message: AssistantTokenCost): number {
return message.tokens.input + message.tokens.cache.read + message.tokens.cache.write
}
export function buildUsage(message: AssistantTokenCost): Usage {
const cachedReadTokens = message.tokens.cache.read
const cachedWriteTokens = message.tokens.cache.write
@@ -207,7 +211,7 @@ const layer = Layer.effect(
sessionId: input.sessionID,
update: {
sessionUpdate: "usage_update",
used: message.tokens.input + message.tokens.cache.read,
used: contextTokens(message),
size,
cost: { amount: totalSessionCost(messages), currency: "USD" },
},
+3 -3
View File
@@ -207,7 +207,7 @@ describe("acp usage", () => {
)
})
it.effect("sends ACP usage_update with context size and cumulative assistant cost", () => {
it.effect("includes cache reads and writes in ACP context usage", () => {
const updates: SessionNotification[] = []
return Effect.gen(function* () {
const usage = yield* UsageService.Service
@@ -222,7 +222,7 @@ describe("acp usage", () => {
sessionId: "ses_1",
update: {
sessionUpdate: "usage_update",
used: 15,
used: 22,
size: 128_000,
cost: { amount: 3, currency: "USD" },
},
@@ -239,7 +239,7 @@ describe("acp usage", () => {
input: 10,
output: 20,
reasoning: 0,
cache: { read: 5, write: 0 },
cache: { read: 5, write: 7 },
},
}),
]),