@knowzai/local-store 0.1.0 → 0.2.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.
@@ -5,9 +5,22 @@
5
5
  * import so the package loads even when the optional dep is absent.
6
6
  */
7
7
  import { SCHEMA_VERSION, DEFAULT_DIM, } from './types.js';
8
+ import { graphJsonV1, validateGraphJsonV1 } from './graph-json.js';
9
+ import { assertGraphScopeGuid } from './graph-scope.js';
8
10
  function vecLiteral(v) {
9
11
  return `[${Array.from(v).join(',')}]`;
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 PostgresStore {
12
25
  dsn;
13
26
  dim;
@@ -31,30 +44,80 @@ export class PostgresStore {
31
44
  }
32
45
  async init() {
33
46
  await this.connect();
34
- await this.client.query('CREATE EXTENSION IF NOT EXISTS vector');
35
- await this.client.query(`CREATE TABLE IF NOT EXISTS meta(key text primary key, value text)`);
36
- await this.client.query(`CREATE TABLE IF NOT EXISTS items(
37
- id text primary key, vault_id text, title text not null, type text not null,
38
- content_hash text not null, content text, tags jsonb not null default '[]',
39
- updated_at text not null, sync_state text not null, remote_version integer)`);
40
- await this.client.query(`CREATE TABLE IF NOT EXISTS chunks(
41
- id text primary key, item_id text not null, ordinal int not null, text text not null,
42
- start_byte int, end_byte int, lang text)`);
43
- await this.client.query(`CREATE TABLE IF NOT EXISTS embeddings(chunk_id text primary key references chunks(id) on delete cascade, embedding vector(${this.dim}))`);
44
- await this.client.query(`CREATE TABLE IF NOT EXISTS file_state(
45
- path text primary key, hash text not null, mtime_ms double precision not null, size bigint not null,
46
- item_id text, last_indexed_at text)`);
47
+ const metaProbe = await this.client.query("SELECT to_regclass('public.meta') AS table_name");
48
+ const metaExists = metaProbe.rows[0]?.table_name != null;
49
+ const versionResult = metaExists
50
+ ? await this.client.query(`SELECT value FROM meta WHERE key='schemaVersion'`)
51
+ : { rows: [] };
52
+ const versionRaw = versionResult.rows[0]?.value;
53
+ const version = versionRaw == null ? 0 : Number(versionRaw);
54
+ if (!Number.isInteger(version) || version < 0)
55
+ throw new Error(`Invalid local store schema version: ${String(versionRaw)}`);
56
+ if (version > SCHEMA_VERSION) {
57
+ throw new Error(`Local store was written by a newer client (schema ${version}; this client supports ${SCHEMA_VERSION})`);
58
+ }
47
59
  // F9 — reject a re-open at a different --dim before overwriting the dim
48
60
  // meta, mirroring SqliteStore. Read the persisted value FIRST (it's still
49
61
  // the old one until the upsert below runs) so mixing vector(N) widths can't
50
62
  // silently corrupt KNN.
51
- const existing = await this.client.query(`SELECT value FROM meta WHERE key='dim'`);
63
+ const existing = metaExists
64
+ ? await this.client.query(`SELECT value FROM meta WHERE key='dim'`)
65
+ : { rows: [] };
52
66
  const existingDim = existing.rows[0]?.value;
53
67
  if (existingDim && Number(existingDim) !== this.dim) {
54
68
  throw new Error(`Local store dim mismatch: store=${existingDim}, requested=${this.dim}`);
55
69
  }
56
- await this.client.query(`INSERT INTO meta(key,value) VALUES('schemaVersion',$1),('dim',$2)
57
- ON CONFLICT(key) DO UPDATE SET value=excluded.value`, [String(SCHEMA_VERSION), String(this.dim)]);
70
+ if (version === SCHEMA_VERSION)
71
+ return;
72
+ try {
73
+ await this.client.query('BEGIN');
74
+ await this.client.query(`CREATE TABLE IF NOT EXISTS meta(key text primary key, value text)`);
75
+ await this.client.query('CREATE EXTENSION IF NOT EXISTS vector');
76
+ await this.client.query(`CREATE TABLE IF NOT EXISTS items(
77
+ id text primary key, vault_id text, title text not null, type text not null,
78
+ content_hash text not null, content text, tags jsonb not null default '[]',
79
+ updated_at text not null, sync_state text not null, remote_version integer)`);
80
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_items_vault ON items(vault_id)`);
81
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_items_sync ON items(sync_state)`);
82
+ await this.client.query(`CREATE TABLE IF NOT EXISTS chunks(
83
+ id text primary key, item_id text not null, ordinal int not null, text text not null,
84
+ start_byte int, end_byte int, lang text)`);
85
+ await this.client.query(`CREATE TABLE IF NOT EXISTS embeddings(chunk_id text primary key references chunks(id) on delete cascade, embedding vector(${this.dim}))`);
86
+ await this.client.query(`CREATE TABLE IF NOT EXISTS file_state(
87
+ path text primary key, hash text not null, mtime_ms double precision not null, size bigint not null,
88
+ item_id text, last_indexed_at text)`);
89
+ await this.client.query(`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
+ await this.client.query(`CREATE TABLE IF NOT EXISTS graph_edges(
95
+ vault_id text not null, from_id text not null, to_id text not null, target_token text not null,
96
+ kind text not null check(kind in ('contains','calls','imports','references')),
97
+ resolution_state text not null check(resolution_state in ('resolved','unresolved')),
98
+ primary key(vault_id,from_id,target_token,kind))`);
99
+ await this.client.query(`CREATE TABLE IF NOT EXISTS graph_file_state(
100
+ vault_id text not null, file text not null, hash text not null, item_id text,
101
+ last_indexed_at text not null, primary key(vault_id,file))`);
102
+ await this.client.query(`CREATE TABLE IF NOT EXISTS graph_import_meta(
103
+ vault_id text primary key, sidecar_sha256 text not null, imported_at text not null)`);
104
+ await this.client.query(`CREATE TABLE IF NOT EXISTS scope_migration(
105
+ singleton integer primary key check(singleton=1), old_vault_id text not null,
106
+ new_vault_id text not null, pending_binding_json text not null, started_at text not null)`);
107
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_nodes_kind ON graph_nodes(vault_id,kind)`);
108
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_nodes_name ON graph_nodes(vault_id,name)`);
109
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_nodes_file ON graph_nodes(vault_id,file)`);
110
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_edges_from ON graph_edges(vault_id,from_id)`);
111
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_edges_to ON graph_edges(vault_id,to_id)`);
112
+ await this.client.query(`CREATE INDEX IF NOT EXISTS idx_graph_edges_resolution ON graph_edges(vault_id,resolution_state)`);
113
+ await this.client.query(`INSERT INTO meta(key,value) VALUES('schemaVersion',$1),('dim',$2)
114
+ ON CONFLICT(key) DO UPDATE SET value=excluded.value`, [String(SCHEMA_VERSION), String(this.dim)]);
115
+ await this.client.query('COMMIT');
116
+ }
117
+ catch (error) {
118
+ await this.client.query('ROLLBACK').catch(() => undefined);
119
+ throw error;
120
+ }
58
121
  }
59
122
  async upsertItem(i) {
60
123
  await this.client.query(`INSERT INTO items(id,vault_id,title,type,content_hash,content,tags,updated_at,sync_state,remote_version)
@@ -173,6 +236,351 @@ export class PostgresStore {
173
236
  lastIndexedAt: row.last_indexed_at ?? undefined,
174
237
  }));
175
238
  }
239
+ graphNode(row) {
240
+ return {
241
+ vaultId: row.vault_id,
242
+ id: row.id,
243
+ name: row.name,
244
+ kind: row.kind,
245
+ file: row.file,
246
+ ...(row.start_byte == null ? {} : { startByte: Number(row.start_byte) }),
247
+ ...(row.end_byte == null ? {} : { endByte: Number(row.end_byte) }),
248
+ ...(row.content_hash == null ? {} : { contentHash: row.content_hash }),
249
+ updatedAt: row.updated_at,
250
+ };
251
+ }
252
+ graphEdge(row) {
253
+ return {
254
+ vaultId: row.vault_id,
255
+ fromId: row.from_id,
256
+ toId: row.to_id,
257
+ targetToken: row.target_token,
258
+ kind: row.kind,
259
+ resolutionState: row.resolution_state,
260
+ };
261
+ }
262
+ async insertGraphRows(vaultId, nodes, edges) {
263
+ for (const node of nodes) {
264
+ if (node.vaultId !== vaultId)
265
+ throw new Error('Graph node vaultId does not match the operation scope');
266
+ await this.client.query(`INSERT INTO graph_nodes(vault_id,id,name,kind,file,start_byte,end_byte,content_hash,updated_at)
267
+ VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9)`, [vaultId, node.id, node.name, node.kind, normalizeGraphFile(node.file), node.startByte ?? null,
268
+ node.endByte ?? null, node.contentHash ?? null, node.updatedAt]);
269
+ }
270
+ for (const edge of edges) {
271
+ if (edge.vaultId !== vaultId)
272
+ throw new Error('Graph edge vaultId does not match the operation scope');
273
+ await this.client.query(`INSERT INTO graph_edges(vault_id,from_id,to_id,target_token,kind,resolution_state)
274
+ VALUES($1,$2,$3,$4,$5,$6)`, [vaultId, edge.fromId, edge.toId, edge.targetToken, edge.kind, edge.resolutionState]);
275
+ }
276
+ }
277
+ async resolveVaultGraphRows(vaultId) {
278
+ await this.client.query(`UPDATE graph_edges SET to_id='unresolved:' || kind || ':' || target_token,resolution_state='unresolved'
279
+ WHERE vault_id=$1 AND kind IN ('calls','imports')`, [vaultId]);
280
+ await this.client.query(`WITH unique_targets AS (
281
+ SELECT name,MIN(id) AS id FROM graph_nodes WHERE vault_id=$1 GROUP BY name HAVING COUNT(*)=1
282
+ )
283
+ UPDATE graph_edges e SET to_id=u.id,resolution_state='resolved'
284
+ FROM unique_targets u
285
+ WHERE e.vault_id=$1 AND e.kind IN ('calls','imports') AND e.target_token=u.name`, [vaultId]);
286
+ await this.client.query(`UPDATE graph_edges e
287
+ SET to_id='unresolved:' || e.kind || ':' || e.target_token,resolution_state='unresolved'
288
+ WHERE e.vault_id=$1 AND e.kind IN ('contains','references')
289
+ AND NOT EXISTS (SELECT 1 FROM graph_nodes n WHERE n.vault_id=e.vault_id AND n.id=e.target_token)`, [vaultId]);
290
+ await this.client.query(`UPDATE graph_edges e SET to_id=e.target_token,resolution_state='resolved'
291
+ WHERE e.vault_id=$1 AND e.kind IN ('contains','references')
292
+ AND EXISTS (SELECT 1 FROM graph_nodes n WHERE n.vault_id=e.vault_id AND n.id=e.target_token)`, [vaultId]);
293
+ }
294
+ async replaceFileGraph(vaultId, file, nodes, outgoingEdges, state) {
295
+ assertGraphScopeGuid(vaultId);
296
+ const normalizedFile = normalizeGraphFile(file);
297
+ try {
298
+ await this.client.query('BEGIN');
299
+ const old = await this.client.query('SELECT id FROM graph_nodes WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
300
+ for (const row of old.rows) {
301
+ await this.client.query('DELETE FROM graph_edges WHERE vault_id=$1 AND from_id=$2', [vaultId, row.id]);
302
+ }
303
+ await this.client.query('DELETE FROM graph_nodes WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
304
+ await this.insertGraphRows(vaultId, nodes, outgoingEdges);
305
+ if (state) {
306
+ await this.client.query(`INSERT INTO graph_file_state(vault_id,file,hash,item_id,last_indexed_at) VALUES($1,$2,$3,$4,$5)
307
+ ON CONFLICT(vault_id,file) DO UPDATE SET hash=excluded.hash,item_id=excluded.item_id,last_indexed_at=excluded.last_indexed_at`, [vaultId, normalizedFile, state.hash, state.itemId ?? null, state.lastIndexedAt]);
308
+ }
309
+ await this.resolveVaultGraphRows(vaultId);
310
+ await this.client.query('COMMIT');
311
+ }
312
+ catch (error) {
313
+ await this.client.query('ROLLBACK').catch(() => undefined);
314
+ throw error;
315
+ }
316
+ }
317
+ async deleteFileGraph(vaultId, file) {
318
+ assertGraphScopeGuid(vaultId);
319
+ const normalizedFile = normalizeGraphFile(file);
320
+ try {
321
+ await this.client.query('BEGIN');
322
+ const state = await this.client.query('SELECT item_id FROM graph_file_state WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
323
+ const old = await this.client.query('SELECT id FROM graph_nodes WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
324
+ for (const row of old.rows) {
325
+ await this.client.query('DELETE FROM graph_edges WHERE vault_id=$1 AND from_id=$2', [vaultId, row.id]);
326
+ }
327
+ await this.client.query('DELETE FROM graph_nodes WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
328
+ await this.client.query('DELETE FROM graph_file_state WHERE vault_id=$1 AND file=$2', [vaultId, normalizedFile]);
329
+ const itemId = state.rows[0]?.item_id;
330
+ if (itemId) {
331
+ const item = await this.client.query('SELECT vault_id FROM items WHERE id=$1', [itemId]);
332
+ if (item.rows[0]?.vault_id === vaultId) {
333
+ await this.client.query('DELETE FROM chunks WHERE item_id=$1', [itemId]);
334
+ await this.client.query('DELETE FROM file_state WHERE item_id=$1', [itemId]);
335
+ await this.client.query('DELETE FROM items WHERE id=$1 AND vault_id=$2', [itemId, vaultId]);
336
+ }
337
+ }
338
+ await this.resolveVaultGraphRows(vaultId);
339
+ await this.client.query('COMMIT');
340
+ }
341
+ catch (error) {
342
+ await this.client.query('ROLLBACK').catch(() => undefined);
343
+ throw error;
344
+ }
345
+ }
346
+ async replaceVaultGraph(vaultId, nodes, edges, states = []) {
347
+ assertGraphScopeGuid(vaultId);
348
+ try {
349
+ await this.client.query('BEGIN');
350
+ await this.client.query('DELETE FROM graph_edges WHERE vault_id=$1', [vaultId]);
351
+ await this.client.query('DELETE FROM graph_nodes WHERE vault_id=$1', [vaultId]);
352
+ await this.client.query('DELETE FROM graph_file_state WHERE vault_id=$1', [vaultId]);
353
+ await this.insertGraphRows(vaultId, nodes, edges);
354
+ for (const state of states) {
355
+ if (state.vaultId !== vaultId)
356
+ throw new Error('Graph file state vaultId does not match the operation scope');
357
+ await this.client.query(`INSERT INTO graph_file_state(vault_id,file,hash,item_id,last_indexed_at) VALUES($1,$2,$3,$4,$5)`, [vaultId, normalizeGraphFile(state.file), state.hash, state.itemId ?? null, state.lastIndexedAt]);
358
+ }
359
+ await this.resolveVaultGraphRows(vaultId);
360
+ await this.client.query('COMMIT');
361
+ }
362
+ catch (error) {
363
+ await this.client.query('ROLLBACK').catch(() => undefined);
364
+ throw error;
365
+ }
366
+ }
367
+ async resolveVaultGraph(vaultId) {
368
+ assertGraphScopeGuid(vaultId);
369
+ try {
370
+ await this.client.query('BEGIN');
371
+ await this.resolveVaultGraphRows(vaultId);
372
+ await this.client.query('COMMIT');
373
+ }
374
+ catch (error) {
375
+ await this.client.query('ROLLBACK').catch(() => undefined);
376
+ throw error;
377
+ }
378
+ }
379
+ async graphStats(vaultId) {
380
+ assertGraphScopeGuid(vaultId);
381
+ const counts = await this.client.query(`SELECT
382
+ (SELECT COUNT(*)::int FROM graph_nodes WHERE vault_id=$1) AS node_count,
383
+ (SELECT COUNT(*)::int FROM graph_edges WHERE vault_id=$1) AS edge_count,
384
+ (SELECT COUNT(*)::int FROM graph_edges WHERE vault_id=$1 AND resolution_state='unresolved') AS unresolved_count,
385
+ (SELECT MAX(updated_at) FROM graph_nodes WHERE vault_id=$1) AS updated_at_max`, [vaultId]);
386
+ const kinds = await this.client.query('SELECT kind,COUNT(*)::int AS n FROM graph_nodes WHERE vault_id=$1 GROUP BY kind ORDER BY kind', [vaultId]);
387
+ const row = counts.rows[0];
388
+ return {
389
+ nodeCount: Number(row.node_count),
390
+ edgeCount: Number(row.edge_count),
391
+ byKind: Object.fromEntries(kinds.rows.map((kind) => [kind.kind, Number(kind.n)])),
392
+ unresolvedCount: Number(row.unresolved_count),
393
+ ...(row.updated_at_max == null ? {} : { updatedAtMax: row.updated_at_max }),
394
+ };
395
+ }
396
+ async queryGraph(vaultId, query) {
397
+ assertGraphScopeGuid(vaultId);
398
+ const limit = query.limit ?? 20;
399
+ const offset = query.offset ?? 0;
400
+ if (!Number.isInteger(limit) || limit < 1 || limit > 200)
401
+ throw new Error('Graph query limit must be an integer from 1 to 200');
402
+ if (!Number.isInteger(offset) || offset < 0)
403
+ throw new Error('Graph query offset must be a non-negative integer');
404
+ if (query.kind != null && !GRAPH_NODE_KINDS.has(query.kind))
405
+ throw new Error('Graph query kind is invalid');
406
+ const params = [];
407
+ const bind = (value) => { params.push(value); return `$${params.length}`; };
408
+ let cte = '';
409
+ if (query.neighborhood) {
410
+ const v1 = bind(vaultId);
411
+ const q1 = bind(query.neighborhood);
412
+ const q2 = bind(query.neighborhood);
413
+ const v2 = bind(vaultId);
414
+ const v3 = bind(vaultId);
415
+ cte = `WITH seeds(id) AS (
416
+ SELECT id FROM graph_nodes WHERE vault_id=${v1} AND (id=${q1} OR lower(name)=lower(${q2}))
417
+ ), neighborhood_ids(id) AS (
418
+ SELECT id FROM seeds
419
+ UNION SELECT e.to_id FROM graph_edges e JOIN seeds s ON s.id=e.from_id WHERE e.vault_id=${v2}
420
+ UNION SELECT e.from_id FROM graph_edges e JOIN seeds s ON s.id=e.to_id WHERE e.vault_id=${v3}
421
+ )`;
422
+ }
423
+ const where = [`n.vault_id=${bind(vaultId)}`];
424
+ if (query.neighborhood)
425
+ where.push('n.id IN (SELECT id FROM neighborhood_ids)');
426
+ if (query.symbol != null) {
427
+ const literal = likeLiteral(query.symbol);
428
+ where.push(`(n.name ILIKE ${bind(literal)} ESCAPE '\\' OR n.id ILIKE ${bind(literal)} ESCAPE '\\')`);
429
+ }
430
+ if (query.file != null)
431
+ where.push(`n.file ILIKE ${bind(likeLiteral(query.file.replace(/\\/g, '/')))} ESCAPE '\\'`);
432
+ if (query.kind != null)
433
+ where.push(`n.kind=${bind(query.kind)}`);
434
+ const fromWhere = `FROM graph_nodes n WHERE ${where.join(' AND ')}`;
435
+ const count = await this.client.query(`${cte} SELECT COUNT(*)::int AS n ${fromWhere}`, params);
436
+ const pageParams = [...params, limit, offset];
437
+ const rows = await this.client.query(`${cte} SELECT n.* ${fromWhere} ORDER BY n.kind,n.name,n.id LIMIT $${params.length + 1} OFFSET $${params.length + 2}`, pageParams);
438
+ const nodes = rows.rows.map((row) => this.graphNode(row));
439
+ let edges = [];
440
+ if (nodes.length > 0) {
441
+ const ids = nodes.map((node) => node.id);
442
+ const edgeRows = await this.client.query(`SELECT * FROM graph_edges WHERE vault_id=$1 AND from_id=ANY($2::text[]) AND to_id=ANY($2::text[])
443
+ ORDER BY kind,from_id,to_id,target_token`, [vaultId, ids]);
444
+ edges = edgeRows.rows.map((row) => this.graphEdge(row));
445
+ }
446
+ const totalNodes = Number(count.rows[0].n);
447
+ return {
448
+ stats: await this.graphStats(vaultId), nodes, edges, totalNodes,
449
+ hasMore: offset + nodes.length < totalNodes,
450
+ };
451
+ }
452
+ async queryGraphAdjacency(vaultId, nodeId, query) {
453
+ const limit = query.limit ?? 200;
454
+ const offset = query.offset ?? 0;
455
+ if (!Number.isInteger(limit) || limit < 1 || limit > 200)
456
+ throw new Error('Graph adjacency limit must be an integer from 1 to 200');
457
+ if (!Number.isInteger(offset) || offset < 0)
458
+ throw new Error('Graph adjacency offset must be a non-negative integer');
459
+ const predicate = `e.vault_id=$1 AND e.from_id=$2 AND EXISTS (
460
+ SELECT 1 FROM graph_nodes n WHERE n.vault_id=e.vault_id AND n.id=e.to_id
461
+ )`;
462
+ const count = await this.client.query(`SELECT COUNT(*)::int AS n FROM graph_edges e WHERE ${predicate}`, [vaultId, nodeId]);
463
+ const edgeResult = await this.client.query(`SELECT e.* FROM graph_edges e WHERE ${predicate}
464
+ ORDER BY e.kind ASC,e.to_id ASC,e.target_token ASC LIMIT $3 OFFSET $4`, [vaultId, nodeId, limit, offset]);
465
+ const edges = edgeResult.rows.map((row) => this.graphEdge(row));
466
+ const ids = [...new Set([nodeId, ...edges.map((edge) => edge.toId)])];
467
+ const nodeResult = await this.client.query('SELECT * FROM graph_nodes WHERE vault_id=$1 AND id = ANY($2::text[]) ORDER BY kind,name,id', [vaultId, ids]);
468
+ const totalEdges = count.rows[0].n;
469
+ return {
470
+ nodes: nodeResult.rows.map((row) => this.graphNode(row)),
471
+ edges,
472
+ totalEdges,
473
+ hasMore: offset + edges.length < totalEdges,
474
+ };
475
+ }
476
+ async scopeInventory() {
477
+ const rows = await this.client.query(`
478
+ SELECT vault_id FROM items WHERE vault_id IS NOT NULL
479
+ UNION SELECT vault_id FROM graph_nodes
480
+ UNION SELECT vault_id FROM graph_edges
481
+ UNION SELECT vault_id FROM graph_file_state
482
+ UNION SELECT vault_id FROM graph_import_meta
483
+ ORDER BY vault_id`);
484
+ const unscoped = await this.client.query('SELECT COUNT(*)::int AS n FROM items WHERE vault_id IS NULL');
485
+ return {
486
+ vaultIds: rows.rows.map((row) => row.vault_id),
487
+ unscopedItemCount: unscoped.rows[0].n,
488
+ };
489
+ }
490
+ async getGraphFileState(vaultId, file) {
491
+ assertGraphScopeGuid(vaultId);
492
+ const result = await this.client.query('SELECT * FROM graph_file_state WHERE vault_id=$1 AND file=$2', [vaultId, normalizeGraphFile(file)]);
493
+ const row = result.rows[0];
494
+ return row ? {
495
+ vaultId: row.vault_id, file: row.file, hash: row.hash,
496
+ ...(row.item_id == null ? {} : { itemId: row.item_id }), lastIndexedAt: row.last_indexed_at,
497
+ } : undefined;
498
+ }
499
+ async listGraphFileStates(vaultId) {
500
+ assertGraphScopeGuid(vaultId);
501
+ const result = await this.client.query('SELECT * FROM graph_file_state WHERE vault_id=$1 ORDER BY file', [vaultId]);
502
+ return result.rows.map((row) => ({
503
+ vaultId: row.vault_id, file: row.file, hash: row.hash,
504
+ ...(row.item_id == null ? {} : { itemId: row.item_id }), lastIndexedAt: row.last_indexed_at,
505
+ }));
506
+ }
507
+ async importGraphJson(vaultId, records, sidecarSha256) {
508
+ assertGraphScopeGuid(vaultId);
509
+ if (!/^[0-9a-f]{64}$/i.test(sidecarSha256))
510
+ throw new Error('sidecarSha256 must be a SHA-256 hex digest');
511
+ const parsed = validateGraphJsonV1(vaultId, records);
512
+ try {
513
+ await this.client.query('BEGIN');
514
+ const marker = await this.client.query('SELECT 1 FROM graph_import_meta WHERE vault_id=$1', [vaultId]);
515
+ if (marker.rows.length > 0) {
516
+ await this.client.query('COMMIT');
517
+ return;
518
+ }
519
+ const count = await this.client.query('SELECT COUNT(*)::int AS n FROM graph_nodes WHERE vault_id=$1', [vaultId]);
520
+ if (Number(count.rows[0].n) !== 0)
521
+ throw new Error('Cannot import a graph into a non-empty vault scope');
522
+ await this.insertGraphRows(vaultId, parsed.nodes, parsed.edges);
523
+ await this.resolveVaultGraphRows(vaultId);
524
+ await this.client.query('INSERT INTO graph_import_meta(vault_id,sidecar_sha256,imported_at) VALUES($1,$2,$3)', [vaultId, sidecarSha256.toLowerCase(), new Date().toISOString()]);
525
+ await this.client.query('COMMIT');
526
+ }
527
+ catch (error) {
528
+ await this.client.query('ROLLBACK').catch(() => undefined);
529
+ throw error;
530
+ }
531
+ }
532
+ async markGraphRebuildComplete(vaultId, sidecarSha256) {
533
+ assertGraphScopeGuid(vaultId);
534
+ if (!/^[0-9a-f]{64}$/i.test(sidecarSha256))
535
+ throw new Error('sidecarSha256 must be a SHA-256 hex digest');
536
+ await this.client.query(`INSERT INTO graph_import_meta(vault_id,sidecar_sha256,imported_at) VALUES($1,$2,$3)
537
+ ON CONFLICT(vault_id) DO UPDATE SET sidecar_sha256=excluded.sidecar_sha256,imported_at=excluded.imported_at`, [vaultId, sidecarSha256.toLowerCase(), new Date().toISOString()]);
538
+ }
539
+ async exportGraphJson(vaultId) {
540
+ assertGraphScopeGuid(vaultId);
541
+ const nodeRows = await this.client.query('SELECT * FROM graph_nodes WHERE vault_id=$1 ORDER BY kind,name,id', [vaultId]);
542
+ const edgeRows = await this.client.query('SELECT * FROM graph_edges WHERE vault_id=$1 ORDER BY kind,from_id,target_token', [vaultId]);
543
+ return graphJsonV1(nodeRows.rows.map((row) => this.graphNode(row)), edgeRows.rows.map((row) => this.graphEdge(row)));
544
+ }
545
+ async beginScopeMigration(oldVaultId, newVaultId, pendingBindingJson) {
546
+ assertGraphScopeGuid(oldVaultId);
547
+ assertGraphScopeGuid(newVaultId);
548
+ try {
549
+ await this.client.query('BEGIN');
550
+ const current = await this.client.query('SELECT * FROM scope_migration WHERE singleton=1');
551
+ if (current.rows.length > 0) {
552
+ const row = current.rows[0];
553
+ if (row.old_vault_id === oldVaultId && row.new_vault_id === newVaultId && row.pending_binding_json === pendingBindingJson) {
554
+ await this.client.query('COMMIT');
555
+ return;
556
+ }
557
+ throw new Error('A different scope migration is already pending');
558
+ }
559
+ await this.client.query(`INSERT INTO scope_migration(singleton,old_vault_id,new_vault_id,pending_binding_json,started_at)
560
+ VALUES(1,$1,$2,$3,$4)`, [oldVaultId, newVaultId, pendingBindingJson, new Date().toISOString()]);
561
+ await this.client.query('UPDATE items SET vault_id=$1 WHERE vault_id=$2', [newVaultId, oldVaultId]);
562
+ await this.client.query('UPDATE graph_nodes SET vault_id=$1 WHERE vault_id=$2', [newVaultId, oldVaultId]);
563
+ await this.client.query('UPDATE graph_edges SET vault_id=$1 WHERE vault_id=$2', [newVaultId, oldVaultId]);
564
+ await this.client.query('UPDATE graph_file_state SET vault_id=$1 WHERE vault_id=$2', [newVaultId, oldVaultId]);
565
+ await this.client.query('UPDATE graph_import_meta SET vault_id=$1 WHERE vault_id=$2', [newVaultId, oldVaultId]);
566
+ await this.client.query('COMMIT');
567
+ }
568
+ catch (error) {
569
+ await this.client.query('ROLLBACK').catch(() => undefined);
570
+ throw error;
571
+ }
572
+ }
573
+ async getPendingScopeMigration() {
574
+ const result = await this.client.query('SELECT * FROM scope_migration WHERE singleton=1');
575
+ const row = result.rows[0];
576
+ return row ? {
577
+ oldVaultId: row.old_vault_id, newVaultId: row.new_vault_id,
578
+ pendingBindingJson: row.pending_binding_json, startedAt: row.started_at,
579
+ } : undefined;
580
+ }
581
+ async clearScopeMigration() {
582
+ await this.client.query('DELETE FROM scope_migration WHERE singleton=1');
583
+ }
176
584
  async meta() {
177
585
  const ic = await this.client.query('SELECT COUNT(*)::int AS n FROM items');
178
586
  const cc = await this.client.query('SELECT COUNT(*)::int AS n FROM chunks');
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../src/postgres-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAOL,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,SAAS,UAAU,CAAC,CAAe;IACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACxC,CAAC;AAKD,MAAM,OAAO,aAAa;IAIL;IACA;IAJV,MAAM,GAAG,UAAmB,CAAC;IAC9B,MAAM,CAAY;IAC1B,YACmB,GAAW,EACX,MAAc,WAAW;QADzB,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAsB;IACzC,CAAC;IAEI,KAAK,CAAC,OAAO;QACnB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,yEAAyE;QACzE,8DAA8D;QAC9D,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAClG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;;kFAGsD,CAAC,CAAC;QAChF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;+CAEmB,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,6HAA6H,IAAI,CAAC,GAAG,IAAI,CAC1I,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;0CAEc,CAAC,CAAC;QACxC,wEAAwE;QACxE,0EAA0E;QAC1E,4EAA4E;QAC5E,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAA2B,CAAC;QAClE,IAAI,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB;2DACqD,EACrD,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAY;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB;;;;8GAIwG,EACxG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAC9J,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,CAA0B;QAC1C,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAY;YAClB,OAAO,EAAG,CAAC,CAAC,QAAmB,IAAI,SAAS;YAC5C,KAAK,EAAE,CAAC,CAAC,KAAe;YACxB,IAAI,EAAE,CAAC,CAAC,IAAc;YACtB,WAAW,EAAE,CAAC,CAAC,YAAsB;YACrC,OAAO,EAAG,CAAC,CAAC,OAAkB,IAAI,SAAS;YAC3C,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAc,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,IAAiB,IAAI,EAAE,CAAC;YAClG,SAAS,EAAE,CAAC,CAAC,UAAoB;YACjC,SAAS,EAAE,CAAC,CAAC,UAAuB;YACpC,aAAa,EAAG,CAAC,CAAC,cAAyB,IAAI,SAAS;SACzD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,KAAa;QAC/C,4EAA4E;QAC5E,4EAA4E;QAC5E,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACzF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7F,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAsD,EAAE;QACtE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9F,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QACpG,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC/B,uBAAuB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B,EACpG,MAAM,CACP,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,MAAe,EAAE,OAAwB;QACvE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAE,CAAC;YACvB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,mGAAmG,EACnG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAC5F,CAAC;YACF,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAsB,EAAE,CAAS,EAAE,MAA6B;QAC9E,MAAM,MAAM,GAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,WAAW,GAAG,sDAAsD,MAAM,CAAC,MAAM,EAAE,CAAC;QACtF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAC/B;8DACwD,WAAW;oDACrB,MAAM,CAAC,MAAM,EAAE,EAC7D,MAAM,CACP,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CAAC,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B,KAAK,EAAE;gBACL,EAAE,EAAE,GAAG,CAAC,EAAY;gBACpB,MAAM,EAAE,GAAG,CAAC,OAAiB;gBAC7B,OAAO,EAAE,GAAG,CAAC,OAAiB;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAc;gBACxB,SAAS,EAAG,GAAG,CAAC,UAAqB,IAAI,SAAS;gBAClD,OAAO,EAAG,GAAG,CAAC,QAAmB,IAAI,SAAS;gBAC9C,IAAI,EAAG,GAAG,CAAC,IAAe,IAAI,SAAS;aACxC;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,CAAY;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB;;2EAEqE,EACrE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS,EAAE,CAAC;IACtL,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,MAAM,EAAG,GAAG,CAAC,OAAkB,IAAI,SAAS;YAC5C,aAAa,EAAG,GAAG,CAAC,eAA0B,IAAI,SAAS;SAC5D,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC3E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC5E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7G,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../src/postgres-store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type LocalStore, type LocalItem, type Chunk, type FileState, type KnnHit, type SyncState, type ObservationOutboxStore, type Observation, type OutboxEntry, type OutboxState, type OutboxStats } from './types.js';
1
+ import { type LocalStore, type LocalItem, type Chunk, type FileState, type KnnHit, type SyncState, type ObservationOutboxStore, type Observation, type OutboxEntry, type OutboxState, type OutboxStats, type LocalGraphNode, type LocalGraphEdge, type GraphFileState, type GraphQuery, type GraphQueryResult, type GraphAdjacencyResult, type GraphStats, type GraphJsonV1, type PendingScopeMigration, type StoreScopeInventory } from './types.js';
2
2
  export declare class SqliteStore implements LocalStore, ObservationOutboxStore {
3
3
  readonly driver: "sqlite";
4
4
  private db;
@@ -23,6 +23,29 @@ export declare class SqliteStore implements LocalStore, ObservationOutboxStore {
23
23
  setFileState(s: FileState): Promise<void>;
24
24
  getFileState(path: string): Promise<FileState | undefined>;
25
25
  listFileStates(): Promise<FileState[]>;
26
+ private graphNode;
27
+ private graphEdge;
28
+ private insertGraphRows;
29
+ private resolveVaultGraphSync;
30
+ replaceFileGraph(vaultId: string, file: string, nodes: LocalGraphNode[], outgoingEdges: LocalGraphEdge[], state?: Omit<GraphFileState, 'vaultId' | 'file'>): Promise<void>;
31
+ deleteFileGraph(vaultId: string, file: string): Promise<void>;
32
+ replaceVaultGraph(vaultId: string, nodes: LocalGraphNode[], edges: LocalGraphEdge[], states?: GraphFileState[]): Promise<void>;
33
+ resolveVaultGraph(vaultId: string): Promise<void>;
34
+ graphStats(vaultId: string): Promise<GraphStats>;
35
+ queryGraph(vaultId: string, query: GraphQuery): Promise<GraphQueryResult>;
36
+ queryGraphAdjacency(vaultId: string, nodeId: string, query: {
37
+ limit?: number;
38
+ offset?: number;
39
+ }): Promise<GraphAdjacencyResult>;
40
+ scopeInventory(): Promise<StoreScopeInventory>;
41
+ getGraphFileState(vaultId: string, file: string): Promise<GraphFileState | undefined>;
42
+ listGraphFileStates(vaultId: string): Promise<GraphFileState[]>;
43
+ importGraphJson(vaultId: string, records: unknown, sidecarSha256: string): Promise<void>;
44
+ markGraphRebuildComplete(vaultId: string, sidecarSha256: string): Promise<void>;
45
+ exportGraphJson(vaultId: string): Promise<GraphJsonV1>;
46
+ beginScopeMigration(oldVaultId: string, newVaultId: string, pendingBindingJson: string): Promise<void>;
47
+ getPendingScopeMigration(): Promise<PendingScopeMigration | undefined>;
48
+ clearScopeMigration(): Promise<void>;
26
49
  meta(): Promise<{
27
50
  schemaVersion: number;
28
51
  dim: number;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../src/sqlite-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../src/sqlite-store.ts"],"names":[],"mappings":"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"}