fix(core): refresh reused session recency
This commit is contained in:
parent
4f235fc59b
commit
d71bc0055a
2 changed files with 28 additions and 0 deletions
|
|
@ -654,6 +654,12 @@ const layer = Layer.effectDiscard(
|
|||
input: event.data.input,
|
||||
timeCreated: event.created,
|
||||
})
|
||||
yield* db
|
||||
.update(SessionTable)
|
||||
.set({ time_updated: DateTime.toEpochMillis(event.created) })
|
||||
.where(eq(SessionTable.id, event.data.sessionID))
|
||||
.run()
|
||||
.pipe(Effect.orDie)
|
||||
}),
|
||||
)
|
||||
yield* events.project(SessionEvent.Compaction.Admitted, (event) =>
|
||||
|
|
|
|||
|
|
@ -171,6 +171,28 @@ describe("SessionV2.create", () => {
|
|||
}),
|
||||
)
|
||||
|
||||
it.effect("orders reused sessions by prompt admission time", () =>
|
||||
Effect.gen(function* () {
|
||||
const session = yield* SessionV2.Service
|
||||
const events = yield* EventV2.Service
|
||||
const { db } = yield* Database.Service
|
||||
const reused = yield* session.create({ location, title: "reused" })
|
||||
const newer = yield* session.create({ location, title: "newer" })
|
||||
yield* db.update(SessionTable).set({ time_updated: -2 }).where(eq(SessionTable.id, reused.id)).run()
|
||||
yield* db.update(SessionTable).set({ time_updated: -1 }).where(eq(SessionTable.id, newer.id)).run()
|
||||
|
||||
const admitted = yield* events.publish(SessionEvent.InputAdmitted, {
|
||||
sessionID: reused.id,
|
||||
inputID: SessionMessage.ID.create(),
|
||||
input: { type: "user", data: { text: "continue" }, delivery: "steer" },
|
||||
})
|
||||
|
||||
const page = yield* session.list({ directory: location.directory, parentID: null, order: "desc" })
|
||||
expect(page.data.map((item) => item.id)).toEqual([reused.id, newer.id])
|
||||
expect(page.data[0]!.time.updated).toEqual(admitted.created)
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("filters direct child sessions by parent ID", () =>
|
||||
Effect.gen(function* () {
|
||||
const session = yield* SessionV2.Service
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue