(database: Database)
| 123 | } |
| 124 | |
| 125 | export function ensureThreadStateSchema(database: Database) { |
| 126 | if (schemaReady) { |
| 127 | return |
| 128 | } |
| 129 | |
| 130 | database.exec(` |
| 131 | PRAGMA journal_mode = WAL; |
| 132 | PRAGMA foreign_keys = ON; |
| 133 | |
| 134 | CREATE TABLE IF NOT EXISTS projects ( |
| 135 | cwd TEXT PRIMARY KEY, |
| 136 | name TEXT NOT NULL, |
| 137 | custom_name TEXT, |
| 138 | order_index INTEGER, |
| 139 | pinned INTEGER NOT NULL DEFAULT 0, |
| 140 | hidden INTEGER NOT NULL DEFAULT 0, |
| 141 | collapsed INTEGER NOT NULL DEFAULT 1, |
| 142 | repo_origin_url TEXT, |
| 143 | repo_origin_checked INTEGER NOT NULL DEFAULT 0, |
| 144 | git_ops_mode TEXT, |
| 145 | created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 146 | updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP |
| 147 | ); |
| 148 | |
| 149 | CREATE TABLE IF NOT EXISTS threads ( |
| 150 | id TEXT PRIMARY KEY, |
| 151 | cwd TEXT NOT NULL, |
| 152 | session_path TEXT NOT NULL UNIQUE, |
| 153 | title TEXT NOT NULL, |
| 154 | last_assistant_message_json TEXT, |
| 155 | last_assistant_preview TEXT, |
| 156 | last_assistant_at_ms INTEGER, |
| 157 | running INTEGER NOT NULL DEFAULT 0, |
| 158 | pinned INTEGER NOT NULL DEFAULT 0, |
| 159 | archived INTEGER NOT NULL DEFAULT 0, |
| 160 | diff_baseline_json TEXT, |
| 161 | diff_render_mode TEXT, |
| 162 | last_modified_ms INTEGER NOT NULL, |
| 163 | created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 164 | updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 165 | FOREIGN KEY (cwd) REFERENCES projects(cwd) ON DELETE CASCADE |
| 166 | ); |
| 167 | |
| 168 | CREATE INDEX IF NOT EXISTS threads_by_cwd_idx ON threads(cwd, pinned DESC, last_modified_ms DESC); |
| 169 | CREATE INDEX IF NOT EXISTS threads_by_path_idx ON threads(session_path); |
| 170 | |
| 171 | CREATE TABLE IF NOT EXISTS inbox_items ( |
| 172 | session_path TEXT PRIMARY KEY, |
| 173 | unread INTEGER NOT NULL DEFAULT 1, |
| 174 | last_user_prompt TEXT, |
| 175 | last_assistant_message_json TEXT, |
| 176 | last_assistant_preview TEXT, |
| 177 | last_assistant_at_ms INTEGER, |
| 178 | created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 179 | updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| 180 | FOREIGN KEY (session_path) REFERENCES threads(session_path) ON DELETE CASCADE |
| 181 | ); |
| 182 |
no test coverage detected