@spool-lab/core 0.3.5 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +8 -5
  3. package/dist/db/db.d.ts +4 -0
  4. package/dist/db/db.d.ts.map +1 -1
  5. package/dist/db/db.js +103 -121
  6. package/dist/db/db.js.map +1 -1
  7. package/dist/db/queries.d.ts +9 -14
  8. package/dist/db/queries.d.ts.map +1 -1
  9. package/dist/db/queries.js +85 -179
  10. package/dist/db/queries.js.map +1 -1
  11. package/dist/index.d.ts +0 -19
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +0 -14
  14. package/dist/index.js.map +1 -1
  15. package/dist/sync/watcher.d.ts +38 -8
  16. package/dist/sync/watcher.d.ts.map +1 -1
  17. package/dist/sync/watcher.js +158 -43
  18. package/dist/sync/watcher.js.map +1 -1
  19. package/dist/types.d.ts +8 -18
  20. package/dist/types.d.ts.map +1 -1
  21. package/package.json +3 -10
  22. package/dist/connectors/capabilities/cookies-chrome.d.ts +0 -19
  23. package/dist/connectors/capabilities/cookies-chrome.d.ts.map +0 -1
  24. package/dist/connectors/capabilities/cookies-chrome.js +0 -199
  25. package/dist/connectors/capabilities/cookies-chrome.js.map +0 -1
  26. package/dist/connectors/capabilities/exec-impl.d.ts +0 -3
  27. package/dist/connectors/capabilities/exec-impl.d.ts.map +0 -1
  28. package/dist/connectors/capabilities/exec-impl.js +0 -108
  29. package/dist/connectors/capabilities/exec-impl.js.map +0 -1
  30. package/dist/connectors/capabilities/fetch-impl.d.ts +0 -3
  31. package/dist/connectors/capabilities/fetch-impl.d.ts.map +0 -1
  32. package/dist/connectors/capabilities/fetch-impl.js +0 -4
  33. package/dist/connectors/capabilities/fetch-impl.js.map +0 -1
  34. package/dist/connectors/capabilities/index.d.ts +0 -6
  35. package/dist/connectors/capabilities/index.d.ts.map +0 -1
  36. package/dist/connectors/capabilities/index.js +0 -6
  37. package/dist/connectors/capabilities/index.js.map +0 -1
  38. package/dist/connectors/capabilities/log-impl.d.ts +0 -3
  39. package/dist/connectors/capabilities/log-impl.d.ts.map +0 -1
  40. package/dist/connectors/capabilities/log-impl.js +0 -26
  41. package/dist/connectors/capabilities/log-impl.js.map +0 -1
  42. package/dist/connectors/capabilities/sqlite-impl.d.ts +0 -3
  43. package/dist/connectors/capabilities/sqlite-impl.d.ts.map +0 -1
  44. package/dist/connectors/capabilities/sqlite-impl.js +0 -19
  45. package/dist/connectors/capabilities/sqlite-impl.js.map +0 -1
  46. package/dist/connectors/loader.d.ts +0 -47
  47. package/dist/connectors/loader.d.ts.map +0 -1
  48. package/dist/connectors/loader.js +0 -328
  49. package/dist/connectors/loader.js.map +0 -1
  50. package/dist/connectors/npm-install.d.ts +0 -26
  51. package/dist/connectors/npm-install.d.ts.map +0 -1
  52. package/dist/connectors/npm-install.js +0 -71
  53. package/dist/connectors/npm-install.js.map +0 -1
  54. package/dist/connectors/prerequisites.d.ts +0 -14
  55. package/dist/connectors/prerequisites.d.ts.map +0 -1
  56. package/dist/connectors/prerequisites.js +0 -109
  57. package/dist/connectors/prerequisites.js.map +0 -1
  58. package/dist/connectors/registry-fetch.d.ts +0 -22
  59. package/dist/connectors/registry-fetch.d.ts.map +0 -1
  60. package/dist/connectors/registry-fetch.js +0 -54
  61. package/dist/connectors/registry-fetch.js.map +0 -1
  62. package/dist/connectors/registry.d.ts +0 -23
  63. package/dist/connectors/registry.d.ts.map +0 -1
  64. package/dist/connectors/registry.js +0 -59
  65. package/dist/connectors/registry.js.map +0 -1
  66. package/dist/connectors/sync-engine.d.ts +0 -30
  67. package/dist/connectors/sync-engine.d.ts.map +0 -1
  68. package/dist/connectors/sync-engine.js +0 -589
  69. package/dist/connectors/sync-engine.js.map +0 -1
  70. package/dist/connectors/sync-scheduler.d.ts +0 -56
  71. package/dist/connectors/sync-scheduler.d.ts.map +0 -1
  72. package/dist/connectors/sync-scheduler.js +0 -238
  73. package/dist/connectors/sync-scheduler.js.map +0 -1
  74. package/dist/connectors/trust-store.d.ts +0 -13
  75. package/dist/connectors/trust-store.d.ts.map +0 -1
  76. package/dist/connectors/trust-store.js +0 -48
  77. package/dist/connectors/trust-store.js.map +0 -1
  78. package/dist/connectors/types.d.ts +0 -111
  79. package/dist/connectors/types.d.ts.map +0 -1
  80. package/dist/connectors/types.js +0 -50
  81. package/dist/connectors/types.js.map +0 -1
package/LICENSE CHANGED
@@ -19,3 +19,14 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
22
+
23
+ ---
24
+
25
+ TRADEMARK NOTICE
26
+
27
+ "Spool" and the Spool logo are trademarks of TypeSafe Limited. The MIT
28
+ License above governs the source code only; it does not grant any right or
29
+ license to use the "Spool" name, the Spool logo, or any other TypeSafe
30
+ Limited trademark. Forks and redistributions must not use the "Spool" name
31
+ or logo in a way that suggests endorsement by, or affiliation with,
32
+ TypeSafe Limited.
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # @spool-lab/core
2
2
 
3
- The engine behind [Spool](https://spool.pro) — a local search engine for your AI sessions and connected sources.
3
+ The engine behind [Spool](https://spool.pro) — a local search engine for your AI sessions.
4
4
 
5
- This package provides the core runtime: session parsing, full-text search, the connector sync engine, and the SQLite database layer. It powers both the Spool desktop app and the `@spool-lab/cli`.
5
+ This package provides the core runtime: session parsing, full-text search, and the SQLite database layer. It powers both the Spool desktop app and the `@spool-lab/cli`.
6
6
 
7
7
  ## Usage
8
8
 
@@ -26,9 +26,8 @@ syncer.syncAll()
26
26
 
27
27
  - **Session parsers** — reads Claude Code, Codex, and Gemini CLI session files
28
28
  - **Full-text search** — FTS5 with unicode + trigram indexes for CJK support
29
- - **Sync engine** — paginated connector sync with cursor-based state, backfill, and error recovery
30
- - **Connector loader** — discovers and loads connector plugins from `~/.spool/connectors/`
31
- - **Connector registry** — in-memory registry of available connectors
29
+ - **Watcher** — incremental indexing as new session files arrive
30
+ - **Stars** — pin sessions for quick recall
32
31
 
33
32
  ## Native dependency
34
33
 
@@ -37,3 +36,7 @@ This package depends on [`better-sqlite3`](https://github.com/WiseLibs/better-sq
37
36
  ## License
38
37
 
39
38
  MIT
39
+
40
+ ## Trademark
41
+
42
+ Spool™ is a trademark of TypeSafe Limited. The MIT License covers the source code only and does not grant permission to use the Spool name or logo.
package/dist/db/db.d.ts CHANGED
@@ -2,5 +2,9 @@ import Database from 'better-sqlite3';
2
2
  export declare const SPOOL_DIR: string;
3
3
  export declare const DB_PATH: string;
4
4
  export declare function getDB(_readonly?: boolean): Database.Database;
5
+ /** True if the DB file did not exist before this process opened it. */
6
+ export declare function wasNewDb(): boolean;
7
+ /** user_version of the DB before any migrations ran this process. Null if getDB() hasn't been called. */
8
+ export declare function getInitialUserVersion(): number | null;
5
9
  export declare function getDBSize(): number;
6
10
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAKrC,eAAO,MAAM,SAAS,QAA6D,CAAA;AACnF,eAAO,MAAM,OAAO,QAA8B,CAAA;AAIlD,wBAAgB,KAAK,CAAC,SAAS,UAAQ,GAAG,QAAQ,CAAC,QAAQ,CAU1D;AAED,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAKrC,eAAO,MAAM,SAAS,QAA6D,CAAA;AACnF,eAAO,MAAM,OAAO,QAA8B,CAAA;AAMlD,wBAAgB,KAAK,CAAC,SAAS,UAAQ,GAAG,QAAQ,CAAC,QAAQ,CAgB1D;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,OAAO,CAAqB;AAExD,yGAAyG;AACzG,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAA+B;AAErF,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
package/dist/db/db.js CHANGED
@@ -1,22 +1,34 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { mkdirSync, statSync } from 'node:fs';
4
+ import { existsSync, mkdirSync, statSync } from 'node:fs';
5
5
  export const SPOOL_DIR = process.env['SPOOL_DATA_DIR'] ?? join(homedir(), '.spool');
6
6
  export const DB_PATH = join(SPOOL_DIR, 'spool.db');
7
7
  let _db = null;
8
+ let _wasNewDb = false;
9
+ let _initialUserVersion = null;
8
10
  export function getDB(_readonly = false) {
9
11
  if (_db)
10
12
  return _db;
11
13
  mkdirSync(SPOOL_DIR, { recursive: true });
14
+ // Capture pre-open state before better-sqlite3 creates the file. These two
15
+ // signals together let callers tell apart "fresh install" from "upgrade":
16
+ // - wasNewDb=true → DB file did not exist; this is a first-time install
17
+ // - wasNewDb=false → upgrade path, and initialUserVersion tells you from where
18
+ _wasNewDb = !existsSync(DB_PATH);
12
19
  const db = new Database(DB_PATH);
13
20
  db.pragma('journal_mode = WAL');
14
21
  db.pragma('foreign_keys = ON');
15
22
  db.pragma('busy_timeout = 5000');
23
+ _initialUserVersion = db.pragma('user_version')[0]?.user_version ?? 0;
16
24
  runMigrations(db);
17
25
  _db = db;
18
26
  return db;
19
27
  }
28
+ /** True if the DB file did not exist before this process opened it. */
29
+ export function wasNewDb() { return _wasNewDb; }
30
+ /** user_version of the DB before any migrations ran this process. Null if getDB() hasn't been called. */
31
+ export function getInitialUserVersion() { return _initialUserVersion; }
20
32
  export function getDBSize() {
21
33
  try {
22
34
  return statSync(DB_PATH).size;
@@ -35,10 +47,9 @@ function runMigrations(db) {
35
47
  );
36
48
 
37
49
  INSERT OR IGNORE INTO sources (name, base_path) VALUES
38
- ('claude', '~/.claude/projects'),
39
- ('codex', '~/.codex/sessions'),
40
- ('gemini', '~/.gemini/tmp'),
41
- ('connector', '<plugin>');
50
+ ('claude', '~/.claude/projects'),
51
+ ('codex', '~/.codex/sessions'),
52
+ ('gemini', '~/.gemini/tmp');
42
53
 
43
54
  CREATE TABLE IF NOT EXISTS projects (
44
55
  id INTEGER PRIMARY KEY,
@@ -137,79 +148,23 @@ function runMigrations(db) {
137
148
  tokenize='trigram'
138
149
  );
139
150
 
140
- -- ── Captures (connector items) ─────────────────────────────────────────
141
-
142
- CREATE TABLE IF NOT EXISTS captures (
143
- id INTEGER PRIMARY KEY,
144
- source_id INTEGER NOT NULL REFERENCES sources(id),
145
- capture_uuid TEXT NOT NULL UNIQUE,
146
- url TEXT NOT NULL,
147
- title TEXT NOT NULL DEFAULT '',
148
- content_text TEXT NOT NULL DEFAULT '',
149
- author TEXT,
150
- platform TEXT NOT NULL,
151
- platform_id TEXT,
152
- content_type TEXT NOT NULL DEFAULT 'page',
153
- thumbnail_url TEXT,
154
- metadata TEXT NOT NULL DEFAULT '{}',
155
- captured_at TEXT NOT NULL,
156
- indexed_at TEXT NOT NULL DEFAULT (datetime('now')),
157
- raw_json TEXT
158
- );
159
-
160
- CREATE INDEX IF NOT EXISTS idx_captures_platform ON captures(platform);
161
- CREATE INDEX IF NOT EXISTS idx_captures_url ON captures(url);
162
- CREATE INDEX IF NOT EXISTS idx_captures_captured ON captures(captured_at DESC);
163
-
164
- CREATE VIRTUAL TABLE IF NOT EXISTS captures_fts USING fts5(
165
- title,
166
- content_text,
167
- content='captures',
168
- content_rowid='id',
169
- tokenize='unicode61 remove_diacritics 1'
151
+ -- ── Stars ─────────────────────────────────────────────────────────────
152
+ -- Star table keyed by session_uuid (natural id, stable across re-index).
153
+ -- No FK queries filter orphans at read time via JOIN, so transient
154
+ -- referent absence (e.g. transcript file removed then restored) doesn't
155
+ -- destroy the star. CHECK constraint guards against typos in item_type.
156
+ CREATE TABLE IF NOT EXISTS stars (
157
+ item_type TEXT NOT NULL CHECK (item_type = 'session'),
158
+ item_uuid TEXT NOT NULL,
159
+ starred_at TEXT NOT NULL DEFAULT (datetime('now')),
160
+ PRIMARY KEY (item_type, item_uuid)
170
161
  );
171
162
 
172
- CREATE VIRTUAL TABLE IF NOT EXISTS captures_fts_trigram USING fts5(
173
- title,
174
- content_text,
175
- content='captures',
176
- content_rowid='id',
177
- tokenize='trigram'
178
- );
179
-
180
- -- ── Connector sync state ────────────────────────────────────────────────
181
-
182
- CREATE TABLE IF NOT EXISTS capture_connectors (
183
- capture_id INTEGER NOT NULL REFERENCES captures(id) ON DELETE CASCADE,
184
- connector_id TEXT NOT NULL,
185
- PRIMARY KEY (capture_id, connector_id)
186
- );
187
-
188
- CREATE INDEX IF NOT EXISTS idx_capture_connectors_connector
189
- ON capture_connectors(connector_id);
190
-
191
- CREATE TABLE IF NOT EXISTS connector_sync_state (
192
- connector_id TEXT PRIMARY KEY,
193
- head_cursor TEXT,
194
- head_item_id TEXT,
195
- tail_cursor TEXT,
196
- tail_complete INTEGER NOT NULL DEFAULT 0,
197
- last_forward_sync_at TEXT,
198
- last_backfill_sync_at TEXT,
199
- total_synced INTEGER NOT NULL DEFAULT 0,
200
- consecutive_errors INTEGER NOT NULL DEFAULT 0,
201
- enabled INTEGER NOT NULL DEFAULT 1,
202
- config_json TEXT NOT NULL DEFAULT '{}',
203
- last_error_at TEXT,
204
- last_error_code TEXT,
205
- last_error_message TEXT
206
- );
163
+ CREATE INDEX IF NOT EXISTS idx_stars_starred_at ON stars(starred_at DESC);
207
164
  `);
208
165
  db.exec(`
209
166
  DROP TRIGGER IF EXISTS messages_fts_insert;
210
167
  DROP TRIGGER IF EXISTS messages_fts_delete;
211
- DROP TRIGGER IF EXISTS captures_fts_insert;
212
- DROP TRIGGER IF EXISTS captures_fts_delete;
213
168
  DROP TRIGGER IF EXISTS session_search_fts_insert;
214
169
  DROP TRIGGER IF EXISTS session_search_fts_update;
215
170
  DROP TRIGGER IF EXISTS session_search_fts_delete;
@@ -230,22 +185,6 @@ function runMigrations(db) {
230
185
  VALUES('delete', OLD.id, OLD.content_text);
231
186
  END;
232
187
 
233
- CREATE TRIGGER captures_fts_insert
234
- AFTER INSERT ON captures BEGIN
235
- INSERT INTO captures_fts(rowid, title, content_text)
236
- VALUES(NEW.id, NEW.title, NEW.content_text);
237
- INSERT INTO captures_fts_trigram(rowid, title, content_text)
238
- VALUES(NEW.id, NEW.title, NEW.content_text);
239
- END;
240
-
241
- CREATE TRIGGER captures_fts_delete
242
- AFTER DELETE ON captures BEGIN
243
- INSERT INTO captures_fts(captures_fts, rowid, title, content_text)
244
- VALUES('delete', OLD.id, OLD.title, OLD.content_text);
245
- INSERT INTO captures_fts_trigram(captures_fts_trigram, rowid, title, content_text)
246
- VALUES('delete', OLD.id, OLD.title, OLD.content_text);
247
- END;
248
-
249
188
  CREATE TRIGGER session_search_fts_insert
250
189
  AFTER INSERT ON session_search BEGIN
251
190
  INSERT INTO session_search_fts(rowid, title, user_text, assistant_text)
@@ -279,59 +218,102 @@ function runMigrations(db) {
279
218
  // Each migration runs exactly once. Add new migrations at the end with
280
219
  // the next sequential version number.
281
220
  const version = db.pragma('user_version')[0].user_version;
221
+ // Historical connector migrations (v1-v3): all operate on the captures /
222
+ // connector_sync_state tables that were dropped in v5. Wrapped to no-op
223
+ // when those tables aren't present (fresh install on the post-v5 schema).
282
224
  if (version < 1) {
283
- // v1: add last_error_at for accurate backoff timing
284
225
  try {
285
226
  db.exec('ALTER TABLE connector_sync_state ADD COLUMN last_error_at TEXT');
286
227
  }
287
- catch {
288
- // Column may already exist if user ran a dev build before this migration
289
- }
228
+ catch { }
290
229
  db.pragma('user_version = 1');
291
230
  }
292
231
  if (version < 2) {
293
- // v2: rebuild captures FTS indexes to fix corruption from old opencli data
294
- // that causes DELETE triggers to fail with SQLITE_CORRUPT
295
232
  try {
296
233
  db.exec("INSERT INTO captures_fts(captures_fts) VALUES('rebuild')");
297
- db.exec("INSERT INTO captures_fts_trigram(captures_fts_trigram) VALUES('rebuild')");
298
234
  }
299
- catch {
300
- // FTS tables may not exist yet on fresh installs — safe to skip
235
+ catch { }
236
+ try {
237
+ db.exec("INSERT INTO captures_fts_trigram(captures_fts_trigram) VALUES('rebuild')");
301
238
  }
239
+ catch { }
302
240
  db.pragma('user_version = 2');
303
241
  }
304
242
  if (version < 3) {
305
- // v3: migrate connector provenance from metadata.connectorId (single-valued,
306
- // clobbered on UPSERT) to the M:N capture_connectors table, and stop
307
- // claiming connector captures came from source_id=claude.
243
+ try {
244
+ db.transaction(() => {
245
+ db.exec(`
246
+ INSERT OR IGNORE INTO capture_connectors (capture_id, connector_id)
247
+ SELECT id, json_extract(metadata, '$.connectorId')
248
+ FROM captures
249
+ WHERE json_extract(metadata, '$.connectorId') IS NOT NULL
250
+ `);
251
+ db.exec(`
252
+ UPDATE captures
253
+ SET metadata = json_remove(metadata, '$.connectorId')
254
+ WHERE json_extract(metadata, '$.connectorId') IS NOT NULL
255
+ `);
256
+ db.exec(`
257
+ UPDATE captures
258
+ SET source_id = (SELECT id FROM sources WHERE name = 'connector')
259
+ WHERE id IN (SELECT capture_id FROM capture_connectors)
260
+ `);
261
+ db.exec(`DROP INDEX IF EXISTS idx_captures_source`);
262
+ })();
263
+ }
264
+ catch { }
265
+ db.pragma('user_version = 3');
266
+ }
267
+ if (version < 4) {
268
+ // v4: stars table. Created with the historical wide CHECK; v5 narrows it.
269
+ db.exec(`
270
+ DROP TABLE IF EXISTS session_stars;
271
+ CREATE TABLE IF NOT EXISTS stars (
272
+ item_type TEXT NOT NULL CHECK (item_type IN ('session', 'capture')),
273
+ item_uuid TEXT NOT NULL,
274
+ starred_at TEXT NOT NULL DEFAULT (datetime('now')),
275
+ PRIMARY KEY (item_type, item_uuid)
276
+ );
277
+ CREATE INDEX IF NOT EXISTS idx_stars_starred_at ON stars(starred_at DESC);
278
+ `);
279
+ db.pragma('user_version = 4');
280
+ }
281
+ if (version < 5) {
282
+ // v5: connector subsystem removed. Drop captures + connector_sync_state
283
+ // tables, narrow stars CHECK to session-only.
284
+ //
285
+ // SQLite can't ALTER a CHECK constraint, so we rebuild the stars table.
286
+ // For users who never had the wide CHECK (fresh install on post-v5
287
+ // schema), the rebuild is a no-op rename round-trip — safe and cheap.
288
+ // Captures data is dropped without backup; users were directed to Spool
289
+ // Daemon for connector functionality.
308
290
  db.transaction(() => {
309
- // Backfill M:N from existing metadata.connectorId.
291
+ db.exec(`DROP TRIGGER IF EXISTS captures_fts_insert`);
292
+ db.exec(`DROP TRIGGER IF EXISTS captures_fts_delete`);
293
+ db.exec(`DROP TABLE IF EXISTS captures_fts_trigram`);
294
+ db.exec(`DROP TABLE IF EXISTS captures_fts`);
295
+ db.exec(`DROP TABLE IF EXISTS capture_connectors`);
296
+ db.exec(`DROP TABLE IF EXISTS captures`);
297
+ db.exec(`DROP TABLE IF EXISTS connector_sync_state`);
298
+ db.exec(`DELETE FROM stars WHERE item_type = 'capture'`);
310
299
  db.exec(`
311
- INSERT OR IGNORE INTO capture_connectors (capture_id, connector_id)
312
- SELECT id, json_extract(metadata, '$.connectorId')
313
- FROM captures
314
- WHERE json_extract(metadata, '$.connectorId') IS NOT NULL
300
+ CREATE TABLE stars_new (
301
+ item_type TEXT NOT NULL CHECK (item_type = 'session'),
302
+ item_uuid TEXT NOT NULL,
303
+ starred_at TEXT NOT NULL DEFAULT (datetime('now')),
304
+ PRIMARY KEY (item_type, item_uuid)
305
+ );
306
+ INSERT INTO stars_new (item_type, item_uuid, starred_at)
307
+ SELECT item_type, item_uuid, starred_at FROM stars;
308
+ DROP TABLE stars;
309
+ ALTER TABLE stars_new RENAME TO stars;
310
+ CREATE INDEX IF NOT EXISTS idx_stars_starred_at ON stars(starred_at DESC);
315
311
  `);
316
- // Strip the now-redundant field from metadata.
317
- db.exec(`
318
- UPDATE captures
319
- SET metadata = json_remove(metadata, '$.connectorId')
320
- WHERE json_extract(metadata, '$.connectorId') IS NOT NULL
321
- `);
322
- // Point connector captures at the 'connector' source row instead of claude.
323
- db.exec(`
324
- UPDATE captures
325
- SET source_id = (SELECT id FROM sources WHERE name = 'connector')
326
- WHERE id IN (SELECT capture_id FROM capture_connectors)
327
- `);
328
- // idx_captures_source was never used by any query — drop it.
329
- db.exec(`DROP INDEX IF EXISTS idx_captures_source`);
312
+ db.exec(`DELETE FROM sources WHERE name = 'connector'`);
330
313
  })();
331
- db.pragma('user_version = 3');
314
+ db.pragma('user_version = 5');
332
315
  }
333
316
  rebuildFtsTableIfEmpty(db, 'messages', 'messages_fts_trigram');
334
- rebuildFtsTableIfEmpty(db, 'captures', 'captures_fts_trigram');
335
317
  rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts');
336
318
  rebuildFtsTableIfEmpty(db, 'session_search', 'session_search_fts_trigram');
337
319
  }
package/dist/db/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type Database from 'better-sqlite3';
2
- import type { Session, Message, FragmentResult, StatusInfo, CaptureResult, SearchResult, Source, SessionSource } from '../types.js';
3
- import type { CapturedItem } from '../connectors/types.js';
2
+ import type { Session, Message, FragmentResult, StatusInfo, SessionSource, StarKind, StarredItem } from '../types.js';
4
3
  export declare function getOrCreateProject(db: Database.Database, sourceId: number, slug: string, displayPath: string, displayName: string): number;
5
4
  export declare function getSourceId(db: Database.Database, name: SessionSource): number;
6
5
  export declare function getSessionMtime(db: Database.Database, filePath: string): string | null;
@@ -45,6 +44,7 @@ export declare function searchFragments(db: Database.Database, query: string, op
45
44
  limit?: number;
46
45
  source?: SessionSource;
47
46
  since?: string;
47
+ onlyStarred?: boolean;
48
48
  }): FragmentResult[];
49
49
  export declare function searchSessionPreview(db: Database.Database, query: string, opts?: {
50
50
  limit?: number;
@@ -52,17 +52,12 @@ export declare function searchSessionPreview(db: Database.Database, query: strin
52
52
  since?: string;
53
53
  }): FragmentResult[];
54
54
  export declare function buildLikeSnippet(text: string, terms: string[]): string;
55
+ export declare function starItem(db: Database.Database, kind: StarKind, uuid: string): void;
56
+ export declare function unstarItem(db: Database.Database, kind: StarKind, uuid: string): void;
57
+ export declare function isStarred(db: Database.Database, kind: StarKind, uuid: string): boolean;
58
+ export declare function getStarredUuidsByType(db: Database.Database): {
59
+ session: string[];
60
+ };
61
+ export declare function listStarredItems(db: Database.Database, limit?: number): StarredItem[];
55
62
  export declare function getStatus(db: Database.Database): StatusInfo;
56
- export declare function insertCapture(db: Database.Database, sourceId: number, item: CapturedItem): number;
57
- export declare function searchCaptures(db: Database.Database, query: string, opts?: {
58
- limit?: number;
59
- platform?: string;
60
- since?: string;
61
- }): CaptureResult[];
62
- export declare function searchAll(db: Database.Database, query: string, opts?: {
63
- limit?: number;
64
- source?: Source;
65
- since?: string;
66
- }): SearchResult[];
67
- export declare function getCaptureCount(db: Database.Database, platform?: string): number;
68
63
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}