@knowzai/local-store 0.1.0 → 0.3.0

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.
@@ -3,11 +3,24 @@ import { dirname } from 'node:path';
3
3
  import Database from 'better-sqlite3';
4
4
  import * as sqliteVec from 'sqlite-vec';
5
5
  import { SCHEMA_VERSION, DEFAULT_DIM, } from './types.js';
6
+ import { graphJsonV1, validateGraphJsonV1 } from './graph-json.js';
7
+ import { assertGraphScopeGuid } from './graph-scope.js';
6
8
  // sqlite-vec accepts a JSON array as float-vector input; this avoids a
7
9
  // BLOB-binding path that misparses under better-sqlite3 (spurious rowid error).
8
10
  function vecParam(v) {
9
11
  return JSON.stringify(Array.from(v));
10
12
  }
13
+ function normalizeGraphFile(file) {
14
+ const normalized = file.replace(/\\/g, '/').replace(/^\.\//, '');
15
+ if (!normalized || normalized.startsWith('/') || /^[A-Za-z]:\//.test(normalized) || normalized.split('/').includes('..')) {
16
+ throw new Error(`Graph file must be a normalized repo-relative path: ${file}`);
17
+ }
18
+ return normalized;
19
+ }
20
+ function likeLiteral(value) {
21
+ return `%${value.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_')}%`;
22
+ }
23
+ const GRAPH_NODE_KINDS = new Set(['file', 'function', 'class', 'method', 'interface', 'symbol']);
11
24
  export class SqliteStore {
12
25
  driver = 'sqlite';
13
26
  db;
@@ -23,48 +36,93 @@ export class SqliteStore {
23
36
  this.db.pragma('journal_mode = WAL');
24
37
  }
25
38
  async init() {
26
- this.db.exec(`
27
- CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT);
28
- CREATE TABLE IF NOT EXISTS items (
29
- id TEXT PRIMARY KEY, vault_id TEXT, title TEXT NOT NULL, type TEXT NOT NULL,
30
- content_hash TEXT NOT NULL, content TEXT, tags TEXT NOT NULL DEFAULT '[]',
31
- updated_at TEXT NOT NULL, sync_state TEXT NOT NULL, remote_version INTEGER
32
- );
33
- CREATE INDEX IF NOT EXISTS idx_items_vault ON items(vault_id);
34
- CREATE INDEX IF NOT EXISTS idx_items_sync ON items(sync_state);
35
- CREATE TABLE IF NOT EXISTS chunks (
36
- rowid INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT UNIQUE NOT NULL, item_id TEXT NOT NULL,
37
- ordinal INTEGER NOT NULL, text TEXT NOT NULL, start_byte INTEGER, end_byte INTEGER, lang TEXT
38
- );
39
- CREATE INDEX IF NOT EXISTS idx_chunks_item ON chunks(item_id);
40
- CREATE TABLE IF NOT EXISTS file_state (
41
- path TEXT PRIMARY KEY, hash TEXT NOT NULL, mtime_ms REAL NOT NULL, size INTEGER NOT NULL,
42
- item_id TEXT, last_indexed_at TEXT
43
- );
44
- CREATE TABLE IF NOT EXISTS sync_log (
45
- ts TEXT NOT NULL, direction TEXT NOT NULL, item_id TEXT, action TEXT, detail TEXT
46
- );
47
- CREATE TABLE IF NOT EXISTS observations (
48
- id TEXT PRIMARY KEY, session_id TEXT NOT NULL, ts TEXT NOT NULL,
49
- kind TEXT NOT NULL, tool_name TEXT, summary TEXT NOT NULL,
50
- redacted INTEGER NOT NULL DEFAULT 0, vault_id TEXT, sealed_into_item_id TEXT
51
- );
52
- CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(session_id);
53
- CREATE INDEX IF NOT EXISTS idx_obs_sealed ON observations(sealed_into_item_id);
54
- CREATE TABLE IF NOT EXISTS capture_outbox (
55
- idempotency_key TEXT PRIMARY KEY, item_id TEXT NOT NULL, session_id TEXT NOT NULL,
56
- created_at TEXT NOT NULL, attempts INTEGER NOT NULL DEFAULT 0, last_attempt_at TEXT,
57
- state TEXT NOT NULL DEFAULT 'pending', last_error TEXT, lease_until TEXT
58
- );
59
- CREATE INDEX IF NOT EXISTS idx_outbox_state ON capture_outbox(state);
60
- `);
61
- this.db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS embeddings USING vec0(embedding float[${this.dim}]);`);
62
- const existingDim = this.getMeta('dim');
39
+ const metaExists = Boolean(this.db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='meta'").get());
40
+ const existingVersionRaw = metaExists ? this.getMeta('schemaVersion') : undefined;
41
+ const existingVersion = existingVersionRaw == null ? 0 : Number(existingVersionRaw);
42
+ if (!Number.isInteger(existingVersion) || existingVersion < 0) {
43
+ throw new Error(`Invalid local store schema version: ${String(existingVersionRaw)}`);
44
+ }
45
+ if (existingVersion > SCHEMA_VERSION) {
46
+ throw new Error(`Local store was written by a newer client (schema ${existingVersion}; this client supports ${SCHEMA_VERSION})`);
47
+ }
48
+ const existingDim = metaExists ? this.getMeta('dim') : undefined;
63
49
  if (existingDim && Number(existingDim) !== this.dim) {
64
50
  throw new Error(`Local store dim mismatch: store=${existingDim}, requested=${this.dim}`);
65
51
  }
66
- this.setMeta('schemaVersion', String(SCHEMA_VERSION));
67
- this.setMeta('dim', String(this.dim));
52
+ if (existingVersion === SCHEMA_VERSION)
53
+ return;
54
+ const migrate = this.db.transaction(() => {
55
+ this.db.exec(`
56
+ CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT);
57
+ CREATE TABLE IF NOT EXISTS items (
58
+ id TEXT PRIMARY KEY, vault_id TEXT, title TEXT NOT NULL, type TEXT NOT NULL,
59
+ content_hash TEXT NOT NULL, content TEXT, tags TEXT NOT NULL DEFAULT '[]',
60
+ updated_at TEXT NOT NULL, sync_state TEXT NOT NULL, remote_version INTEGER
61
+ );
62
+ CREATE INDEX IF NOT EXISTS idx_items_vault ON items(vault_id);
63
+ CREATE INDEX IF NOT EXISTS idx_items_sync ON items(sync_state);
64
+ CREATE TABLE IF NOT EXISTS chunks (
65
+ rowid INTEGER PRIMARY KEY AUTOINCREMENT, id TEXT UNIQUE NOT NULL, item_id TEXT NOT NULL,
66
+ ordinal INTEGER NOT NULL, text TEXT NOT NULL, start_byte INTEGER, end_byte INTEGER, lang TEXT
67
+ );
68
+ CREATE INDEX IF NOT EXISTS idx_chunks_item ON chunks(item_id);
69
+ CREATE TABLE IF NOT EXISTS file_state (
70
+ path TEXT PRIMARY KEY, hash TEXT NOT NULL, mtime_ms REAL NOT NULL, size INTEGER NOT NULL,
71
+ item_id TEXT, last_indexed_at TEXT
72
+ );
73
+ CREATE TABLE IF NOT EXISTS sync_log (
74
+ ts TEXT NOT NULL, direction TEXT NOT NULL, item_id TEXT, action TEXT, detail TEXT
75
+ );
76
+ CREATE TABLE IF NOT EXISTS observations (
77
+ id TEXT PRIMARY KEY, session_id TEXT NOT NULL, ts TEXT NOT NULL,
78
+ kind TEXT NOT NULL, tool_name TEXT, summary TEXT NOT NULL,
79
+ redacted INTEGER NOT NULL DEFAULT 0, vault_id TEXT, sealed_into_item_id TEXT
80
+ );
81
+ CREATE INDEX IF NOT EXISTS idx_obs_session ON observations(session_id);
82
+ CREATE INDEX IF NOT EXISTS idx_obs_sealed ON observations(sealed_into_item_id);
83
+ CREATE TABLE IF NOT EXISTS capture_outbox (
84
+ idempotency_key TEXT PRIMARY KEY, item_id TEXT NOT NULL, session_id TEXT NOT NULL,
85
+ created_at TEXT NOT NULL, attempts INTEGER NOT NULL DEFAULT 0, last_attempt_at TEXT,
86
+ state TEXT NOT NULL DEFAULT 'pending', last_error TEXT, lease_until TEXT
87
+ );
88
+ CREATE INDEX IF NOT EXISTS idx_outbox_state ON capture_outbox(state);
89
+ CREATE TABLE IF NOT EXISTS graph_nodes (
90
+ vault_id TEXT NOT NULL, id TEXT NOT NULL, name TEXT NOT NULL,
91
+ kind TEXT NOT NULL CHECK(kind IN ('file','function','class','method','interface','symbol')),
92
+ file TEXT NOT NULL, start_byte INTEGER, end_byte INTEGER, content_hash TEXT,
93
+ updated_at TEXT NOT NULL, PRIMARY KEY(vault_id,id)
94
+ );
95
+ CREATE TABLE IF NOT EXISTS graph_edges (
96
+ vault_id TEXT NOT NULL, from_id TEXT NOT NULL, to_id TEXT NOT NULL,
97
+ target_token TEXT NOT NULL,
98
+ kind TEXT NOT NULL CHECK(kind IN ('contains','calls','imports','references')),
99
+ resolution_state TEXT NOT NULL CHECK(resolution_state IN ('resolved','unresolved')),
100
+ PRIMARY KEY(vault_id,from_id,target_token,kind)
101
+ );
102
+ CREATE TABLE IF NOT EXISTS graph_file_state (
103
+ vault_id TEXT NOT NULL, file TEXT NOT NULL, hash TEXT NOT NULL,
104
+ item_id TEXT, last_indexed_at TEXT NOT NULL,
105
+ PRIMARY KEY(vault_id,file)
106
+ );
107
+ CREATE TABLE IF NOT EXISTS graph_import_meta (
108
+ vault_id TEXT PRIMARY KEY, sidecar_sha256 TEXT NOT NULL, imported_at TEXT NOT NULL
109
+ );
110
+ CREATE TABLE IF NOT EXISTS scope_migration (
111
+ singleton INTEGER PRIMARY KEY CHECK(singleton=1), old_vault_id TEXT NOT NULL,
112
+ new_vault_id TEXT NOT NULL, pending_binding_json TEXT NOT NULL, started_at TEXT NOT NULL
113
+ );
114
+ CREATE INDEX IF NOT EXISTS idx_graph_nodes_kind ON graph_nodes(vault_id,kind);
115
+ CREATE INDEX IF NOT EXISTS idx_graph_nodes_name ON graph_nodes(vault_id,name);
116
+ CREATE INDEX IF NOT EXISTS idx_graph_nodes_file ON graph_nodes(vault_id,file);
117
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_from ON graph_edges(vault_id,from_id);
118
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_to ON graph_edges(vault_id,to_id);
119
+ CREATE INDEX IF NOT EXISTS idx_graph_edges_resolution ON graph_edges(vault_id,resolution_state);
120
+ `);
121
+ this.db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS embeddings USING vec0(embedding float[${this.dim}]);`);
122
+ this.setMeta('dim', String(this.dim));
123
+ this.setMeta('schemaVersion', String(SCHEMA_VERSION));
124
+ });
125
+ migrate.immediate();
68
126
  }
69
127
  getMeta(key) {
70
128
  const r = this.db.prepare('SELECT value FROM meta WHERE key = ?').get(key);
@@ -238,6 +296,376 @@ export class SqliteStore {
238
296
  lastIndexedAt: r.last_indexed_at ?? undefined,
239
297
  }));
240
298
  }
299
+ graphNode(row) {
300
+ return {
301
+ vaultId: row.vault_id,
302
+ id: row.id,
303
+ name: row.name,
304
+ kind: row.kind,
305
+ file: row.file,
306
+ ...(row.start_byte == null ? {} : { startByte: row.start_byte }),
307
+ ...(row.end_byte == null ? {} : { endByte: row.end_byte }),
308
+ ...(row.content_hash == null ? {} : { contentHash: row.content_hash }),
309
+ updatedAt: row.updated_at,
310
+ };
311
+ }
312
+ graphEdge(row) {
313
+ return {
314
+ vaultId: row.vault_id,
315
+ fromId: row.from_id,
316
+ toId: row.to_id,
317
+ targetToken: row.target_token,
318
+ kind: row.kind,
319
+ resolutionState: row.resolution_state,
320
+ };
321
+ }
322
+ insertGraphRows(vaultId, nodes, edges) {
323
+ const insertNode = this.db.prepare(`
324
+ INSERT INTO graph_nodes(vault_id,id,name,kind,file,start_byte,end_byte,content_hash,updated_at)
325
+ VALUES(@vault_id,@id,@name,@kind,@file,@start_byte,@end_byte,@content_hash,@updated_at)`);
326
+ for (const node of nodes) {
327
+ if (node.vaultId !== vaultId)
328
+ throw new Error('Graph node vaultId does not match the operation scope');
329
+ insertNode.run({
330
+ vault_id: vaultId,
331
+ id: node.id,
332
+ name: node.name,
333
+ kind: node.kind,
334
+ file: normalizeGraphFile(node.file),
335
+ start_byte: node.startByte ?? null,
336
+ end_byte: node.endByte ?? null,
337
+ content_hash: node.contentHash ?? null,
338
+ updated_at: node.updatedAt,
339
+ });
340
+ }
341
+ const insertEdge = this.db.prepare(`
342
+ INSERT INTO graph_edges(vault_id,from_id,to_id,target_token,kind,resolution_state)
343
+ VALUES(@vault_id,@from_id,@to_id,@target_token,@kind,@resolution_state)`);
344
+ for (const edge of edges) {
345
+ if (edge.vaultId !== vaultId)
346
+ throw new Error('Graph edge vaultId does not match the operation scope');
347
+ insertEdge.run({
348
+ vault_id: vaultId,
349
+ from_id: edge.fromId,
350
+ to_id: edge.toId,
351
+ target_token: edge.targetToken,
352
+ kind: edge.kind,
353
+ resolution_state: edge.resolutionState,
354
+ });
355
+ }
356
+ }
357
+ resolveVaultGraphSync(vaultId) {
358
+ this.db.prepare(`
359
+ UPDATE graph_edges
360
+ SET to_id = 'unresolved:' || kind || ':' || target_token,
361
+ resolution_state = 'unresolved'
362
+ WHERE vault_id = ? AND kind IN ('calls','imports')`).run(vaultId);
363
+ this.db.prepare(`
364
+ UPDATE graph_edges
365
+ SET to_id = (
366
+ SELECT MIN(n.id) FROM graph_nodes n
367
+ WHERE n.vault_id = graph_edges.vault_id AND n.name = graph_edges.target_token
368
+ GROUP BY n.name HAVING COUNT(*) = 1
369
+ ),
370
+ resolution_state = 'resolved'
371
+ WHERE graph_edges.vault_id = ?
372
+ AND graph_edges.kind IN ('calls','imports')
373
+ AND 1 = (
374
+ SELECT COUNT(*) FROM graph_nodes n
375
+ WHERE n.vault_id = graph_edges.vault_id AND n.name = graph_edges.target_token
376
+ )`).run(vaultId);
377
+ this.db.prepare(`
378
+ UPDATE graph_edges
379
+ SET to_id = 'unresolved:' || kind || ':' || target_token,
380
+ resolution_state = 'unresolved'
381
+ WHERE vault_id = ? AND kind IN ('contains','references')
382
+ AND NOT EXISTS (
383
+ SELECT 1 FROM graph_nodes n
384
+ WHERE n.vault_id = graph_edges.vault_id AND n.id = graph_edges.target_token
385
+ )`).run(vaultId);
386
+ this.db.prepare(`
387
+ UPDATE graph_edges
388
+ SET to_id = target_token, resolution_state = 'resolved'
389
+ WHERE vault_id = ? AND kind IN ('contains','references')
390
+ AND EXISTS (
391
+ SELECT 1 FROM graph_nodes n
392
+ WHERE n.vault_id = graph_edges.vault_id AND n.id = graph_edges.target_token
393
+ )`).run(vaultId);
394
+ }
395
+ async replaceFileGraph(vaultId, file, nodes, outgoingEdges, state) {
396
+ assertGraphScopeGuid(vaultId);
397
+ const normalizedFile = normalizeGraphFile(file);
398
+ const replace = this.db.transaction(() => {
399
+ const oldIds = this.db
400
+ .prepare('SELECT id FROM graph_nodes WHERE vault_id = ? AND file = ?')
401
+ .all(vaultId, normalizedFile);
402
+ const deleteOutgoing = this.db.prepare('DELETE FROM graph_edges WHERE vault_id = ? AND from_id = ?');
403
+ for (const { id } of oldIds)
404
+ deleteOutgoing.run(vaultId, id);
405
+ this.db.prepare('DELETE FROM graph_nodes WHERE vault_id = ? AND file = ?').run(vaultId, normalizedFile);
406
+ this.insertGraphRows(vaultId, nodes, outgoingEdges);
407
+ if (state) {
408
+ this.db.prepare(`
409
+ INSERT INTO graph_file_state(vault_id,file,hash,item_id,last_indexed_at)
410
+ VALUES(?,?,?,?,?)
411
+ ON CONFLICT(vault_id,file) DO UPDATE SET
412
+ hash=excluded.hash,item_id=excluded.item_id,last_indexed_at=excluded.last_indexed_at`)
413
+ .run(vaultId, normalizedFile, state.hash, state.itemId ?? null, state.lastIndexedAt);
414
+ }
415
+ this.resolveVaultGraphSync(vaultId);
416
+ });
417
+ replace.immediate();
418
+ }
419
+ async deleteFileGraph(vaultId, file) {
420
+ assertGraphScopeGuid(vaultId);
421
+ const normalizedFile = normalizeGraphFile(file);
422
+ const remove = this.db.transaction(() => {
423
+ const graphState = this.db
424
+ .prepare('SELECT item_id FROM graph_file_state WHERE vault_id = ? AND file = ?')
425
+ .get(vaultId, normalizedFile);
426
+ const oldIds = this.db
427
+ .prepare('SELECT id FROM graph_nodes WHERE vault_id = ? AND file = ?')
428
+ .all(vaultId, normalizedFile);
429
+ const deleteOutgoing = this.db.prepare('DELETE FROM graph_edges WHERE vault_id = ? AND from_id = ?');
430
+ for (const { id } of oldIds)
431
+ deleteOutgoing.run(vaultId, id);
432
+ this.db.prepare('DELETE FROM graph_nodes WHERE vault_id = ? AND file = ?').run(vaultId, normalizedFile);
433
+ this.db.prepare('DELETE FROM graph_file_state WHERE vault_id = ? AND file = ?').run(vaultId, normalizedFile);
434
+ if (graphState?.item_id) {
435
+ const item = this.db.prepare('SELECT vault_id FROM items WHERE id = ?').get(graphState.item_id);
436
+ if (item?.vault_id === vaultId) {
437
+ const chunks = this.db.prepare('SELECT rowid FROM chunks WHERE item_id = ?').all(graphState.item_id);
438
+ const deleteEmbedding = this.db.prepare('DELETE FROM embeddings WHERE rowid = ?');
439
+ for (const chunk of chunks)
440
+ deleteEmbedding.run(chunk.rowid);
441
+ this.db.prepare('DELETE FROM chunks WHERE item_id = ?').run(graphState.item_id);
442
+ this.db.prepare('DELETE FROM file_state WHERE item_id = ?').run(graphState.item_id);
443
+ this.db.prepare('DELETE FROM items WHERE id = ? AND vault_id = ?').run(graphState.item_id, vaultId);
444
+ }
445
+ }
446
+ this.resolveVaultGraphSync(vaultId);
447
+ });
448
+ remove.immediate();
449
+ }
450
+ async replaceVaultGraph(vaultId, nodes, edges, states = []) {
451
+ assertGraphScopeGuid(vaultId);
452
+ const replace = this.db.transaction(() => {
453
+ this.db.prepare('DELETE FROM graph_edges WHERE vault_id = ?').run(vaultId);
454
+ this.db.prepare('DELETE FROM graph_nodes WHERE vault_id = ?').run(vaultId);
455
+ this.db.prepare('DELETE FROM graph_file_state WHERE vault_id = ?').run(vaultId);
456
+ this.insertGraphRows(vaultId, nodes, edges);
457
+ const insertState = this.db.prepare(`
458
+ INSERT INTO graph_file_state(vault_id,file,hash,item_id,last_indexed_at) VALUES(?,?,?,?,?)`);
459
+ for (const state of states) {
460
+ if (state.vaultId !== vaultId)
461
+ throw new Error('Graph file state vaultId does not match the operation scope');
462
+ insertState.run(vaultId, normalizeGraphFile(state.file), state.hash, state.itemId ?? null, state.lastIndexedAt);
463
+ }
464
+ this.resolveVaultGraphSync(vaultId);
465
+ });
466
+ replace.immediate();
467
+ }
468
+ async resolveVaultGraph(vaultId) {
469
+ assertGraphScopeGuid(vaultId);
470
+ const resolve = this.db.transaction(() => this.resolveVaultGraphSync(vaultId));
471
+ resolve.immediate();
472
+ }
473
+ async graphStats(vaultId) {
474
+ assertGraphScopeGuid(vaultId);
475
+ const nodeCount = this.db.prepare('SELECT COUNT(*) AS n FROM graph_nodes WHERE vault_id = ?').get(vaultId).n;
476
+ const edgeCount = this.db.prepare('SELECT COUNT(*) AS n FROM graph_edges WHERE vault_id = ?').get(vaultId).n;
477
+ const unresolvedCount = this.db.prepare("SELECT COUNT(*) AS n FROM graph_edges WHERE vault_id = ? AND resolution_state = 'unresolved'").get(vaultId).n;
478
+ const kinds = this.db.prepare('SELECT kind,COUNT(*) AS n FROM graph_nodes WHERE vault_id = ? GROUP BY kind ORDER BY kind').all(vaultId);
479
+ const updated = this.db.prepare('SELECT MAX(updated_at) AS value FROM graph_nodes WHERE vault_id = ?').get(vaultId);
480
+ return {
481
+ nodeCount,
482
+ edgeCount,
483
+ byKind: Object.fromEntries(kinds.map((row) => [row.kind, row.n])),
484
+ unresolvedCount,
485
+ ...(updated.value == null ? {} : { updatedAtMax: updated.value }),
486
+ };
487
+ }
488
+ async queryGraph(vaultId, query) {
489
+ assertGraphScopeGuid(vaultId);
490
+ const limit = query.limit ?? 20;
491
+ const offset = query.offset ?? 0;
492
+ if (!Number.isInteger(limit) || limit < 1 || limit > 200)
493
+ throw new Error('Graph query limit must be an integer from 1 to 200');
494
+ if (!Number.isInteger(offset) || offset < 0)
495
+ throw new Error('Graph query offset must be a non-negative integer');
496
+ if (query.kind != null && !GRAPH_NODE_KINDS.has(query.kind))
497
+ throw new Error('Graph query kind is invalid');
498
+ const params = [];
499
+ let cte = '';
500
+ if (query.neighborhood) {
501
+ params.push(vaultId, query.neighborhood, query.neighborhood, vaultId, vaultId);
502
+ cte = `WITH seeds(id) AS (
503
+ SELECT id FROM graph_nodes WHERE vault_id = ? AND (id = ? OR lower(name) = lower(?))
504
+ ), neighborhood_ids(id) AS (
505
+ SELECT id FROM seeds
506
+ UNION SELECT e.to_id FROM graph_edges e JOIN seeds s ON s.id=e.from_id WHERE e.vault_id = ?
507
+ UNION SELECT e.from_id FROM graph_edges e JOIN seeds s ON s.id=e.to_id WHERE e.vault_id = ?
508
+ )`;
509
+ }
510
+ const where = ['n.vault_id = ?'];
511
+ params.push(vaultId);
512
+ if (query.neighborhood)
513
+ where.push('n.id IN (SELECT id FROM neighborhood_ids)');
514
+ if (query.symbol != null) {
515
+ where.push("(lower(n.name) LIKE lower(?) ESCAPE '\\' OR lower(n.id) LIKE lower(?) ESCAPE '\\')");
516
+ const literal = likeLiteral(query.symbol);
517
+ params.push(literal, literal);
518
+ }
519
+ if (query.file != null) {
520
+ where.push("lower(n.file) LIKE lower(?) ESCAPE '\\'");
521
+ params.push(likeLiteral(query.file.replace(/\\/g, '/')));
522
+ }
523
+ if (query.kind != null) {
524
+ where.push('n.kind = ?');
525
+ params.push(query.kind);
526
+ }
527
+ const fromWhere = `FROM graph_nodes n WHERE ${where.join(' AND ')}`;
528
+ const totalNodes = this.db.prepare(`${cte} SELECT COUNT(*) AS n ${fromWhere}`).get(...params).n;
529
+ const rows = this.db.prepare(`${cte} SELECT n.* ${fromWhere} ORDER BY n.kind ASC,n.name ASC,n.id ASC LIMIT ? OFFSET ?`).all(...params, limit, offset);
530
+ const nodes = rows.map((row) => this.graphNode(row));
531
+ const ids = nodes.map((node) => node.id);
532
+ let edges = [];
533
+ if (ids.length > 0) {
534
+ const placeholders = ids.map(() => '?').join(',');
535
+ edges = this.db.prepare(`SELECT * FROM graph_edges WHERE vault_id = ?
536
+ AND from_id IN (${placeholders}) AND to_id IN (${placeholders})
537
+ ORDER BY kind,from_id,to_id,target_token`).all(vaultId, ...ids, ...ids).map((row) => this.graphEdge(row));
538
+ }
539
+ return {
540
+ stats: await this.graphStats(vaultId),
541
+ nodes,
542
+ edges,
543
+ totalNodes,
544
+ hasMore: offset + nodes.length < totalNodes,
545
+ };
546
+ }
547
+ async queryGraphAdjacency(vaultId, nodeId, query) {
548
+ const limit = query.limit ?? 200;
549
+ const offset = query.offset ?? 0;
550
+ if (!Number.isInteger(limit) || limit < 1 || limit > 200)
551
+ throw new Error('Graph adjacency limit must be an integer from 1 to 200');
552
+ if (!Number.isInteger(offset) || offset < 0)
553
+ throw new Error('Graph adjacency offset must be a non-negative integer');
554
+ const predicate = `vault_id = ? AND from_id = ? AND EXISTS (
555
+ SELECT 1 FROM graph_nodes n WHERE n.vault_id = graph_edges.vault_id AND n.id = graph_edges.to_id
556
+ )`;
557
+ const totalEdges = this.db.prepare(`SELECT COUNT(*) AS n FROM graph_edges WHERE ${predicate}`)
558
+ .get(vaultId, nodeId).n;
559
+ const edgeRows = this.db.prepare(`SELECT * FROM graph_edges WHERE ${predicate}
560
+ ORDER BY kind ASC,to_id ASC,target_token ASC LIMIT ? OFFSET ?`).all(vaultId, nodeId, limit, offset);
561
+ const edges = edgeRows.map((row) => this.graphEdge(row));
562
+ const ids = [...new Set([nodeId, ...edges.map((edge) => edge.toId)])];
563
+ const placeholders = ids.map(() => '?').join(',');
564
+ const nodes = ids.length === 0 ? [] : this.db.prepare(`SELECT * FROM graph_nodes WHERE vault_id = ? AND id IN (${placeholders}) ORDER BY kind,name,id`).all(vaultId, ...ids).map((row) => this.graphNode(row));
565
+ return { nodes, edges, totalEdges, hasMore: offset + edges.length < totalEdges };
566
+ }
567
+ async scopeInventory() {
568
+ const rows = this.db.prepare(`
569
+ SELECT vault_id FROM items WHERE vault_id IS NOT NULL
570
+ UNION SELECT vault_id FROM graph_nodes
571
+ UNION SELECT vault_id FROM graph_edges
572
+ UNION SELECT vault_id FROM graph_file_state
573
+ UNION SELECT vault_id FROM graph_import_meta
574
+ ORDER BY vault_id`).all();
575
+ const unscopedItemCount = this.db.prepare('SELECT COUNT(*) AS n FROM items WHERE vault_id IS NULL').get().n;
576
+ return { vaultIds: rows.map((row) => row.vault_id), unscopedItemCount };
577
+ }
578
+ async getGraphFileState(vaultId, file) {
579
+ assertGraphScopeGuid(vaultId);
580
+ const row = this.db.prepare('SELECT * FROM graph_file_state WHERE vault_id = ? AND file = ?').get(vaultId, normalizeGraphFile(file));
581
+ return row ? {
582
+ vaultId: row.vault_id,
583
+ file: row.file,
584
+ hash: row.hash,
585
+ ...(row.item_id == null ? {} : { itemId: row.item_id }),
586
+ lastIndexedAt: row.last_indexed_at,
587
+ } : undefined;
588
+ }
589
+ async listGraphFileStates(vaultId) {
590
+ assertGraphScopeGuid(vaultId);
591
+ const rows = this.db.prepare('SELECT * FROM graph_file_state WHERE vault_id = ? ORDER BY file').all(vaultId);
592
+ return rows.map((row) => ({
593
+ vaultId: row.vault_id,
594
+ file: row.file,
595
+ hash: row.hash,
596
+ ...(row.item_id == null ? {} : { itemId: row.item_id }),
597
+ lastIndexedAt: row.last_indexed_at,
598
+ }));
599
+ }
600
+ async importGraphJson(vaultId, records, sidecarSha256) {
601
+ assertGraphScopeGuid(vaultId);
602
+ if (!/^[0-9a-f]{64}$/i.test(sidecarSha256))
603
+ throw new Error('sidecarSha256 must be a SHA-256 hex digest');
604
+ const parsed = validateGraphJsonV1(vaultId, records);
605
+ const importRows = this.db.transaction(() => {
606
+ const marker = this.db.prepare('SELECT 1 FROM graph_import_meta WHERE vault_id = ?').get(vaultId);
607
+ if (marker)
608
+ return;
609
+ const count = this.db.prepare('SELECT COUNT(*) AS n FROM graph_nodes WHERE vault_id = ?').get(vaultId).n;
610
+ if (count !== 0)
611
+ throw new Error('Cannot import a graph into a non-empty vault scope');
612
+ this.insertGraphRows(vaultId, parsed.nodes, parsed.edges);
613
+ this.resolveVaultGraphSync(vaultId);
614
+ this.db.prepare('INSERT INTO graph_import_meta(vault_id,sidecar_sha256,imported_at) VALUES(?,?,?)')
615
+ .run(vaultId, sidecarSha256.toLowerCase(), new Date().toISOString());
616
+ });
617
+ importRows.immediate();
618
+ }
619
+ async markGraphRebuildComplete(vaultId, sidecarSha256) {
620
+ assertGraphScopeGuid(vaultId);
621
+ if (!/^[0-9a-f]{64}$/i.test(sidecarSha256))
622
+ throw new Error('sidecarSha256 must be a SHA-256 hex digest');
623
+ this.db.prepare(`
624
+ INSERT INTO graph_import_meta(vault_id,sidecar_sha256,imported_at) VALUES(?,?,?)
625
+ ON CONFLICT(vault_id) DO UPDATE SET sidecar_sha256=excluded.sidecar_sha256,imported_at=excluded.imported_at`)
626
+ .run(vaultId, sidecarSha256.toLowerCase(), new Date().toISOString());
627
+ }
628
+ async exportGraphJson(vaultId) {
629
+ assertGraphScopeGuid(vaultId);
630
+ const nodes = this.db.prepare('SELECT * FROM graph_nodes WHERE vault_id = ? ORDER BY kind,name,id').all(vaultId).map((row) => this.graphNode(row));
631
+ const edges = this.db.prepare('SELECT * FROM graph_edges WHERE vault_id = ? ORDER BY kind,from_id,target_token').all(vaultId).map((row) => this.graphEdge(row));
632
+ return graphJsonV1(nodes, edges);
633
+ }
634
+ async beginScopeMigration(oldVaultId, newVaultId, pendingBindingJson) {
635
+ assertGraphScopeGuid(oldVaultId);
636
+ assertGraphScopeGuid(newVaultId);
637
+ const migrate = this.db.transaction(() => {
638
+ const existing = this.db.prepare('SELECT * FROM scope_migration WHERE singleton = 1').get();
639
+ if (existing) {
640
+ if (existing.old_vault_id === oldVaultId &&
641
+ existing.new_vault_id === newVaultId &&
642
+ existing.pending_binding_json === pendingBindingJson)
643
+ return;
644
+ throw new Error('A different scope migration is already pending');
645
+ }
646
+ this.db.prepare(`
647
+ INSERT INTO scope_migration(singleton,old_vault_id,new_vault_id,pending_binding_json,started_at)
648
+ VALUES(1,?,?,?,?)`).run(oldVaultId, newVaultId, pendingBindingJson, new Date().toISOString());
649
+ this.db.prepare('UPDATE items SET vault_id = ? WHERE vault_id = ?').run(newVaultId, oldVaultId);
650
+ this.db.prepare('UPDATE graph_nodes SET vault_id = ? WHERE vault_id = ?').run(newVaultId, oldVaultId);
651
+ this.db.prepare('UPDATE graph_edges SET vault_id = ? WHERE vault_id = ?').run(newVaultId, oldVaultId);
652
+ this.db.prepare('UPDATE graph_file_state SET vault_id = ? WHERE vault_id = ?').run(newVaultId, oldVaultId);
653
+ this.db.prepare('UPDATE graph_import_meta SET vault_id = ? WHERE vault_id = ?').run(newVaultId, oldVaultId);
654
+ });
655
+ migrate.immediate();
656
+ }
657
+ async getPendingScopeMigration() {
658
+ const row = this.db.prepare('SELECT * FROM scope_migration WHERE singleton = 1').get();
659
+ return row ? {
660
+ oldVaultId: row.old_vault_id,
661
+ newVaultId: row.new_vault_id,
662
+ pendingBindingJson: row.pending_binding_json,
663
+ startedAt: row.started_at,
664
+ } : undefined;
665
+ }
666
+ async clearScopeMigration() {
667
+ this.db.prepare('DELETE FROM scope_migration WHERE singleton = 1').run();
668
+ }
241
669
  async meta() {
242
670
  const itemCount = this.db.prepare('SELECT COUNT(*) AS n FROM items').get().n;
243
671
  const chunkCount = this.db.prepare('SELECT COUNT(*) AS n FROM chunks').get().n;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../src/sqlite-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../src/sqlite-store.ts"],"names":[],"mappings":"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"}