Buckets:
GHHG10/CodeServer / opencode /packages /app /src /components /session /session-context-breakdown.test.ts
| import { describe, expect, test } from "bun:test" | |
| import type { Message, Part } from "@opencode-ai/sdk/v2/client" | |
| import { estimateSessionContextBreakdown } from "./session-context-breakdown" | |
| const user = (id: string) => { | |
| return { | |
| id, | |
| role: "user", | |
| time: { created: 1 }, | |
| } as unknown as Message | |
| } | |
| const assistant = (id: string) => { | |
| return { | |
| id, | |
| role: "assistant", | |
| time: { created: 1 }, | |
| } as unknown as Message | |
| } | |
| describe("estimateSessionContextBreakdown", () => { | |
| test("estimates tokens and keeps remaining tokens as other", () => { | |
| const messages = [user("u1"), assistant("a1")] | |
| const parts = { | |
| u1: [{ type: "text", text: "hello world" }] as unknown as Part[], | |
| a1: [{ type: "text", text: "assistant response" }] as unknown as Part[], | |
| } | |
| const output = estimateSessionContextBreakdown({ | |
| messages, | |
| parts, | |
| input: 20, | |
| systemPrompt: "system prompt", | |
| }) | |
| const map = Object.fromEntries(output.map((segment) => [segment.key, segment.tokens])) | |
| expect(map.system).toBe(4) | |
| expect(map.user).toBe(3) | |
| expect(map.assistant).toBe(5) | |
| expect(map.other).toBe(8) | |
| }) | |
| test("scales segments when estimates exceed input", () => { | |
| const messages = [user("u1"), assistant("a1")] | |
| const parts = { | |
| u1: [{ type: "text", text: "x".repeat(400) }] as unknown as Part[], | |
| a1: [{ type: "text", text: "y".repeat(400) }] as unknown as Part[], | |
| } | |
| const output = estimateSessionContextBreakdown({ | |
| messages, | |
| parts, | |
| input: 10, | |
| systemPrompt: "z".repeat(200), | |
| }) | |
| const total = output.reduce((sum, segment) => sum + segment.tokens, 0) | |
| expect(total).toBeLessThanOrEqual(10) | |
| expect(output.every((segment) => segment.width <= 100)).toBeTrue() | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 1.79 kB
- Xet hash:
- b21b2b0bad18873e1a9d91d4d1e62d57593990adb5177ca56e8edc41d8036eb9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.