summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-04-19 19:53:43 -0400
committerDax Raad <[email protected]>2026-04-19 19:53:43 -0400
commitb9640fc7e472626e9b6806df800a34d48471ebb4 (patch)
treeec27713c9d92eebda98ddea81d4b81bdfaaac210
parent29f05cb1ee84b480f8ac862bf79e2864a97ee0f2 (diff)
downloadopencode-b9640fc7e472626e9b6806df800a34d48471ebb4.tar.gz
opencode-b9640fc7e472626e9b6806df800a34d48471ebb4.zip
core: fix session compaction test to properly enable prune config option
-rw-r--r--packages/opencode/test/session/compaction.test.ts149
1 files changed, 78 insertions, 71 deletions
diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts
index 015a1653a..ef5fb5db0 100644
--- a/packages/opencode/test/session/compaction.test.ts
+++ b/packages/opencode/test/session/compaction.test.ts
@@ -564,65 +564,13 @@ describe("session.compaction.create", () => {
describe("session.compaction.prune", () => {
it.live(
"compacts old completed tool output",
- provideTmpdirInstance((dir) =>
- Effect.gen(function* () {
- const compact = yield* SessionCompaction.Service
- const ssn = yield* SessionNs.Service
- const info = yield* ssn.create({})
- const a = yield* ssn.updateMessage({
- id: MessageID.ascending(),
- role: "user",
- sessionID: info.id,
- agent: "build",
- model: ref,
- time: { created: Date.now() },
- })
- yield* ssn.updatePart({
- id: PartID.ascending(),
- messageID: a.id,
- sessionID: info.id,
- type: "text",
- text: "first",
- })
- const b: MessageV2.Assistant = {
- id: MessageID.ascending(),
- role: "assistant",
- sessionID: info.id,
- mode: "build",
- agent: "build",
- path: { cwd: dir, root: dir },
- cost: 0,
- tokens: {
- output: 0,
- input: 0,
- reasoning: 0,
- cache: { read: 0, write: 0 },
- },
- modelID: ref.modelID,
- providerID: ref.providerID,
- parentID: a.id,
- time: { created: Date.now() },
- finish: "end_turn",
- }
- yield* ssn.updateMessage(b)
- yield* ssn.updatePart({
- id: PartID.ascending(),
- messageID: b.id,
- sessionID: info.id,
- type: "tool",
- callID: crypto.randomUUID(),
- tool: "bash",
- state: {
- status: "completed",
- input: {},
- output: "x".repeat(200_000),
- title: "done",
- metadata: {},
- time: { start: Date.now(), end: Date.now() },
- },
- })
- for (const text of ["second", "third"]) {
- const msg = yield* ssn.updateMessage({
+ provideTmpdirInstance(
+ (dir) =>
+ Effect.gen(function* () {
+ const compact = yield* SessionCompaction.Service
+ const ssn = yield* SessionNs.Service
+ const info = yield* ssn.create({})
+ const a = yield* ssn.updateMessage({
id: MessageID.ascending(),
role: "user",
sessionID: info.id,
@@ -632,23 +580,82 @@ describe("session.compaction.prune", () => {
})
yield* ssn.updatePart({
id: PartID.ascending(),
- messageID: msg.id,
+ messageID: a.id,
sessionID: info.id,
type: "text",
- text,
+ text: "first",
})
- }
+ const b: MessageV2.Assistant = {
+ id: MessageID.ascending(),
+ role: "assistant",
+ sessionID: info.id,
+ mode: "build",
+ agent: "build",
+ path: { cwd: dir, root: dir },
+ cost: 0,
+ tokens: {
+ output: 0,
+ input: 0,
+ reasoning: 0,
+ cache: { read: 0, write: 0 },
+ },
+ modelID: ref.modelID,
+ providerID: ref.providerID,
+ parentID: a.id,
+ time: { created: Date.now() },
+ finish: "end_turn",
+ }
+ yield* ssn.updateMessage(b)
+ yield* ssn.updatePart({
+ id: PartID.ascending(),
+ messageID: b.id,
+ sessionID: info.id,
+ type: "tool",
+ callID: crypto.randomUUID(),
+ tool: "bash",
+ state: {
+ status: "completed",
+ input: {},
+ output: "x".repeat(200_000),
+ title: "done",
+ metadata: {},
+ time: { start: Date.now(), end: Date.now() },
+ },
+ })
+ for (const text of ["second", "third"]) {
+ const msg = yield* ssn.updateMessage({
+ id: MessageID.ascending(),
+ role: "user",
+ sessionID: info.id,
+ agent: "build",
+ model: ref,
+ time: { created: Date.now() },
+ })
+ yield* ssn.updatePart({
+ id: PartID.ascending(),
+ messageID: msg.id,
+ sessionID: info.id,
+ type: "text",
+ text,
+ })
+ }
- yield* compact.prune({ sessionID: info.id })
+ yield* compact.prune({ sessionID: info.id })
- const msgs = yield* ssn.messages({ sessionID: info.id })
- const part = msgs.flatMap((msg) => msg.parts).find((part) => part.type === "tool")
- expect(part?.type).toBe("tool")
- expect(part?.state.status).toBe("completed")
- if (part?.type === "tool" && part.state.status === "completed") {
- expect(part.state.time.compacted).toBeNumber()
- }
- }),
+ const msgs = yield* ssn.messages({ sessionID: info.id })
+ const part = msgs.flatMap((msg) => msg.parts).find((part) => part.type === "tool")
+ expect(part?.type).toBe("tool")
+ expect(part?.state.status).toBe("completed")
+ if (part?.type === "tool" && part.state.status === "completed") {
+ expect(part.state.time.compacted).toBeNumber()
+ }
+ }),
+
+ {
+ config: {
+ compaction: { prune: true },
+ },
+ },
),
)