fix(core): harden model selection edges (#30987)

This commit is contained in:
Kit Langton 2026-06-05 12:28:32 -04:00 committed by GitHub
commit 3151e2246a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 50 additions and 15 deletions

View file

@ -356,12 +356,23 @@ describe("SessionV2.create", () => {
expect(
Array.from(yield* session.events({ sessionID: created.id }).pipe(Stream.take(1), Stream.runCollect)),
).toMatchObject([{ event: { type: "session.next.model.switched", data: { model } } }])
}),
)
it.effect("persists repeated switches as distinct durable Session events", () =>
Effect.gen(function* () {
const session = yield* SessionV2.Service
const created = yield* session.create({ location })
const model = ModelV2.Ref.make({ id: ModelV2.ID.make("sonnet"), providerID: ProviderV2.ID.anthropic })
yield* session.switchModel({ sessionID: created.id, model })
yield* session.switchModel({ sessionID: created.id, model })
const { db } = yield* Database.Service
expect(
yield* db.select().from(EventTable).where(eq(EventTable.aggregate_id, created.id)).all().pipe(Effect.orDie),
).toHaveLength(2)
).toHaveLength(3)
expect(yield* session.get(created.id)).toMatchObject({ model })
}),
)