-- v1.1 (contract request 5): an assistant message's citations live in its own column. -- v1 stored them as an extra row with role 'sources' right after the assistant row (ids sort in write order). -- Fold each such row into the assistant row before it, then drop every 'sources' row. ALTER TABLE ai_messages ADD COLUMN citations_json TEXT; UPDATE ai_messages SET citations_json = ( SELECT s.content FROM ai_messages s WHERE s.conversation_id = ai_messages.conversation_id AND s.role = 'sources' AND s.id = (SELECT MIN(n.id) FROM ai_messages n WHERE n.conversation_id = ai_messages.conversation_id AND n.id > ai_messages.id) ) WHERE role = 'assistant'; DELETE FROM ai_messages WHERE role = 'sources';