mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-24 23:04:55 +00:00
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import type { PermissionRequest, Session } from "@opencode-ai/sdk/v2/client"
|
|
import { trimSessions } from "./session-trim"
|
|
|
|
const session = (input: { id: string; parentID?: string; created: number; updated?: number; archived?: number }) =>
|
|
({
|
|
id: input.id,
|
|
parentID: input.parentID,
|
|
time: {
|
|
created: input.created,
|
|
updated: input.updated,
|
|
archived: input.archived,
|
|
},
|
|
}) as Session
|
|
|
|
describe("trimSessions", () => {
|
|
test("keeps base roots and recent roots beyond the limit", () => {
|
|
const now = 1_000_000
|
|
const list = [
|
|
session({ id: "a", created: now - 100_000 }),
|
|
session({ id: "b", created: now - 90_000 }),
|
|
session({ id: "c", created: now - 80_000 }),
|
|
session({ id: "d", created: now - 70_000, updated: now - 1_000 }),
|
|
session({ id: "e", created: now - 60_000, archived: now - 10 }),
|
|
]
|
|
|
|
const result = trimSessions(list, { limit: 2, permission: {}, now })
|
|
expect(result.map((x) => x.id)).toEqual(["a", "b", "c", "d"])
|
|
})
|
|
|
|
test("keeps children when root is kept, permission exists, or child is recent", () => {
|
|
const now = 1_000_000
|
|
const list = [
|
|
session({ id: "root-1", created: now - 1000 }),
|
|
session({ id: "root-2", created: now - 2000 }),
|
|
session({ id: "z-root", created: now - 30_000_000 }),
|
|
session({ id: "child-kept-by-root", parentID: "root-1", created: now - 20_000_000 }),
|
|
session({ id: "child-kept-by-permission", parentID: "z-root", created: now - 20_000_000 }),
|
|
session({ id: "child-kept-by-recency", parentID: "z-root", created: now - 500 }),
|
|
session({ id: "child-trimmed", parentID: "z-root", created: now - 20_000_000 }),
|
|
]
|
|
|
|
const result = trimSessions(list, {
|
|
limit: 2,
|
|
permission: {
|
|
"child-kept-by-permission": [{ id: "perm-1" } as PermissionRequest],
|
|
},
|
|
now,
|
|
})
|
|
|
|
expect(result.map((x) => x.id)).toEqual([
|
|
"child-kept-by-permission",
|
|
"child-kept-by-recency",
|
|
"child-kept-by-root",
|
|
"root-1",
|
|
"root-2",
|
|
])
|
|
})
|
|
})
|