feat(core): compact v2 session context (#30986)
This commit is contained in:
parent
a7bd1cd0d0
commit
beae7290f3
26 changed files with 569 additions and 296 deletions
|
|
@ -34,6 +34,8 @@ test.skip("step snapshots carry over to assistant messages", () => {
|
|||
} satisfies SessionEvent.Event),
|
||||
)
|
||||
|
||||
expect(state.messages).toEqual([])
|
||||
|
||||
Effect.runSync(
|
||||
SessionMessageUpdater.update(SessionMessageUpdater.memory(state), {
|
||||
id: EventV2.ID.create(),
|
||||
|
|
@ -194,10 +196,11 @@ test.skip("tool completion stores completed timestamp", () => {
|
|||
expect(state.messages[0].content[0].provider).toEqual({ executed: true, metadata: { fake: { status: "done" } } })
|
||||
})
|
||||
|
||||
test.skip("compaction events reduce to compaction message", () => {
|
||||
test("compaction events reduce to compaction message only when completed", () => {
|
||||
const state: SessionMessageUpdater.MemoryState = { messages: [] }
|
||||
const sessionID = SessionID.make("session")
|
||||
const id = EventV2.ID.create()
|
||||
const compactionID = SessionMessage.ID.create()
|
||||
|
||||
Effect.runSync(
|
||||
SessionMessageUpdater.update(SessionMessageUpdater.memory(state), {
|
||||
|
|
@ -205,19 +208,22 @@ test.skip("compaction events reduce to compaction message", () => {
|
|||
type: "session.next.compaction.started",
|
||||
data: {
|
||||
sessionID,
|
||||
messageID: SessionMessage.ID.create(),
|
||||
messageID: compactionID,
|
||||
timestamp: DateTime.makeUnsafe(1),
|
||||
reason: "auto",
|
||||
},
|
||||
} satisfies SessionEvent.Event),
|
||||
)
|
||||
|
||||
expect(state.messages).toEqual([])
|
||||
|
||||
Effect.runSync(
|
||||
SessionMessageUpdater.update(SessionMessageUpdater.memory(state), {
|
||||
id: EventV2.ID.create(),
|
||||
type: "session.next.compaction.delta",
|
||||
data: {
|
||||
sessionID,
|
||||
messageID: compactionID,
|
||||
timestamp: DateTime.makeUnsafe(2),
|
||||
text: "hello ",
|
||||
},
|
||||
|
|
@ -230,6 +236,7 @@ test.skip("compaction events reduce to compaction message", () => {
|
|||
type: "session.next.compaction.delta",
|
||||
data: {
|
||||
sessionID,
|
||||
messageID: compactionID,
|
||||
timestamp: DateTime.makeUnsafe(3),
|
||||
text: "summary",
|
||||
},
|
||||
|
|
@ -242,20 +249,22 @@ test.skip("compaction events reduce to compaction message", () => {
|
|||
type: "session.next.compaction.ended",
|
||||
data: {
|
||||
sessionID,
|
||||
messageID: compactionID,
|
||||
timestamp: DateTime.makeUnsafe(4),
|
||||
reason: "auto",
|
||||
text: "final summary",
|
||||
include: "recent context",
|
||||
recent: "recent context",
|
||||
},
|
||||
} satisfies SessionEvent.Event),
|
||||
)
|
||||
|
||||
expect(state.messages).toHaveLength(1)
|
||||
expect(state.messages[0]).toMatchObject({
|
||||
id,
|
||||
id: compactionID,
|
||||
type: "compaction",
|
||||
reason: "auto",
|
||||
summary: "final summary",
|
||||
include: "recent context",
|
||||
time: { created: DateTime.makeUnsafe(1) },
|
||||
recent: "recent context",
|
||||
time: { created: DateTime.makeUnsafe(4) },
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue