summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/test/session/compaction.test.ts30
1 files changed, 29 insertions, 1 deletions
diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts
index 0dac255b1..799bb3e2a 100644
--- a/packages/opencode/test/session/compaction.test.ts
+++ b/packages/opencode/test/session/compaction.test.ts
@@ -1080,7 +1080,7 @@ describe("session.getUsage", () => {
expect(result.tokens.cache.read).toBe(200)
})
- test("handles reasoning tokens", () => {
+ test("separates reasoning tokens from output tokens", () => {
const model = createModel({ context: 100_000, output: 32_000 })
const result = Session.getUsage({
model,
@@ -1092,7 +1092,35 @@ describe("session.getUsage", () => {
},
})
+ expect(result.tokens.input).toBe(1000)
+ expect(result.tokens.output).toBe(400)
expect(result.tokens.reasoning).toBe(100)
+ expect(result.tokens.total).toBe(1500)
+ })
+
+ test("does not double count reasoning tokens in cost", () => {
+ const model = createModel({
+ context: 100_000,
+ output: 32_000,
+ cost: {
+ input: 0,
+ output: 15,
+ cache: { read: 0, write: 0 },
+ },
+ })
+ const result = Session.getUsage({
+ model,
+ usage: {
+ inputTokens: 0,
+ outputTokens: 1_000_000,
+ totalTokens: 1_000_000,
+ reasoningTokens: 250_000,
+ },
+ })
+
+ expect(result.tokens.output).toBe(750_000)
+ expect(result.tokens.reasoning).toBe(250_000)
+ expect(result.cost).toBe(15)
})
test("handles undefined optional values gracefully", () => {