import { describe, expect, it } from 'vitest' import { upsert } from '../lib/messages.js' describe('upsert', () => { it('appends when last role differs', () => { expect(upsert([{ role: 'user', text: 'hi' }], 'assistant', 'hello')).toHaveLength(2) }) it('replaces when last role matches', () => { expect(upsert([{ role: 'assistant', text: 'partial' }], 'assistant', 'full')[0]!.text).toBe('full') }) it('appends to empty', () => { expect(upsert([], 'user', 'first')).toEqual([{ role: 'user', text: 'first' }]) }) it('does not mutate', () => { const prev = [{ role: 'user' as const, text: 'hi' }] upsert(prev, 'assistant', 'yo') expect(prev).toHaveLength(1) }) })