CREATE TABLE inbox_items_next ( id TEXT PRIMARY KEY, project_id TEXT NOT NULL REFERENCES projects(id), task_id TEXT NOT NULL REFERENCES tasks(id), agent_session_id TEXT NOT NULL REFERENCES agent_sessions(id), thread_id TEXT NOT NULL, kind TEXT NOT NULL, priority INTEGER NOT NULL DEFAULT 0, blocking INTEGER NOT NULL DEFAULT 1, payload TEXT NOT NULL, state TEXT NOT NULL, snoozed_until TEXT, created_at TEXT NOT NULL, resolved_by TEXT REFERENCES users(login), resolved_at TEXT ); INSERT INTO inbox_items_next SELECT id, project_id, task_id, agent_session_id, thread_id, kind, priority, blocking, payload, state, snoozed_until, created_at, resolved_by, resolved_at FROM inbox_items; DROP TABLE inbox_items; ALTER TABLE inbox_items_next RENAME TO inbox_items; CREATE INDEX inbox_items_open ON inbox_items(state, created_at); CREATE INDEX inbox_items_session ON inbox_items(agent_session_id, state); CREATE TABLE users_next ( login TEXT PRIMARY KEY, display_name TEXT NOT NULL, git_name TEXT NOT NULL DEFAULT '', git_email TEXT NOT NULL DEFAULT '', created_at TEXT NOT NULL, notification_prefs TEXT NOT NULL DEFAULT '{"questions":true,"reports":false,"errors":false,"rate_limits":false}', focus TEXT NOT NULL DEFAULT '{"tabs":["transcript"],"tab":"transcript"}' ); INSERT INTO users_next (login, display_name, git_name, git_email, created_at, notification_prefs, focus) SELECT login, display_name, git_name, git_email, created_at, json_remove(json_set(notification_prefs, '$.questions', json(CASE WHEN json_extract(notification_prefs, '$.blocking_questions') THEN 'true' ELSE 'false' END)), '$.blocking_questions'), focus FROM users; DROP TABLE users; ALTER TABLE users_next RENAME TO users;