session-compaction.test.ts 987 B

123456789101112131415161718192021222324252627
  1. import { expect, test } from "bun:test"
  2. import { SessionCompaction } from "@opencode-ai/core/session/compaction"
  3. test("compaction prompt preserves detailed work state and relevant files", () => {
  4. const prompt = SessionCompaction.buildPrompt({ context: ["conversation history"] })
  5. expect(prompt).toContain("## Work State\n### Completed")
  6. expect(prompt).toContain("### Active")
  7. expect(prompt).toContain("### Blocked")
  8. expect(prompt).toContain("## Relevant Files")
  9. })
  10. test("compaction describes tool media without embedding base64", () => {
  11. const base64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAAB"
  12. const serialized = SessionCompaction.serializeToolContent([
  13. { type: "text", text: "Image read successfully" },
  14. {
  15. type: "file",
  16. uri: `data:image/png;base64,${base64}`,
  17. mime: "image/png",
  18. name: "pixel.png",
  19. },
  20. ])
  21. expect(serialized).toBe("Image read successfully\n[Attached image/png: pixel.png]")
  22. expect(serialized).not.toContain(base64)
  23. })