stellar-memory 0.8.4 → 1.0.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.
Files changed (139) hide show
  1. package/dist/api/routes/memories.js +5 -4
  2. package/dist/api/routes/memories.js.map +1 -1
  3. package/dist/api/websocket.d.ts +0 -6
  4. package/dist/api/websocket.js +1 -1
  5. package/dist/api/websocket.js.map +1 -1
  6. package/dist/engine/analytics.js +4 -33
  7. package/dist/engine/analytics.js.map +1 -1
  8. package/dist/engine/conflict.js +2 -4
  9. package/dist/engine/conflict.js.map +1 -1
  10. package/dist/engine/consolidation.js +3 -21
  11. package/dist/engine/consolidation.js.map +1 -1
  12. package/dist/engine/constellation.js +6 -14
  13. package/dist/engine/constellation.js.map +1 -1
  14. package/dist/engine/corona.js +3 -1
  15. package/dist/engine/corona.js.map +1 -1
  16. package/dist/engine/multiproject.js +6 -73
  17. package/dist/engine/multiproject.js.map +1 -1
  18. package/dist/engine/observation.d.ts +1 -42
  19. package/dist/engine/observation.js +4 -23
  20. package/dist/engine/observation.js.map +1 -1
  21. package/dist/engine/orbit.js +50 -11
  22. package/dist/engine/orbit.js.map +1 -1
  23. package/dist/engine/planet.d.ts +3 -0
  24. package/dist/engine/planet.js +16 -11
  25. package/dist/engine/planet.js.map +1 -1
  26. package/dist/engine/procedural.d.ts +0 -13
  27. package/dist/engine/procedural.js +2 -47
  28. package/dist/engine/procedural.js.map +1 -1
  29. package/dist/engine/services/commit-service.d.ts +29 -0
  30. package/dist/engine/services/commit-service.js +35 -0
  31. package/dist/engine/services/commit-service.js.map +1 -0
  32. package/dist/engine/services/index.d.ts +4 -0
  33. package/dist/engine/services/index.js +4 -0
  34. package/dist/engine/services/index.js.map +1 -0
  35. package/dist/engine/services/memory-service.d.ts +48 -0
  36. package/dist/engine/services/memory-service.js +85 -0
  37. package/dist/engine/services/memory-service.js.map +1 -0
  38. package/dist/engine/services/recall-service.d.ts +31 -0
  39. package/dist/engine/services/recall-service.js +35 -0
  40. package/dist/engine/services/recall-service.js.map +1 -0
  41. package/dist/engine/sun.d.ts +9 -5
  42. package/dist/engine/sun.js +111 -12
  43. package/dist/engine/sun.js.map +1 -1
  44. package/dist/engine/temporal.js +8 -67
  45. package/dist/engine/temporal.js.map +1 -1
  46. package/dist/engine/types.d.ts +0 -15
  47. package/dist/engine/types.js +0 -7
  48. package/dist/engine/types.js.map +1 -1
  49. package/dist/mcp/server.js +88 -123
  50. package/dist/mcp/server.js.map +1 -1
  51. package/dist/mcp/tools/analytics-handlers.d.ts +20 -0
  52. package/dist/mcp/tools/analytics-handlers.js +292 -0
  53. package/dist/mcp/tools/analytics-handlers.js.map +1 -0
  54. package/dist/mcp/tools/graph-handlers.d.ts +20 -0
  55. package/dist/mcp/tools/graph-handlers.js +126 -0
  56. package/dist/mcp/tools/graph-handlers.js.map +1 -0
  57. package/dist/mcp/tools/memory-handlers.d.ts +27 -0
  58. package/dist/mcp/tools/memory-handlers.js +177 -0
  59. package/dist/mcp/tools/memory-handlers.js.map +1 -0
  60. package/dist/mcp/tools/memory-tools.d.ts +19 -117
  61. package/dist/mcp/tools/memory-tools.js +19 -1049
  62. package/dist/mcp/tools/memory-tools.js.map +1 -1
  63. package/dist/mcp/tools/observation-handlers.d.ts +15 -0
  64. package/dist/mcp/tools/observation-handlers.js +74 -0
  65. package/dist/mcp/tools/observation-handlers.js.map +1 -0
  66. package/dist/mcp/tools/shared.d.ts +36 -0
  67. package/dist/mcp/tools/shared.js +71 -0
  68. package/dist/mcp/tools/shared.js.map +1 -0
  69. package/dist/mcp/tools/sun-handler.d.ts +12 -0
  70. package/dist/mcp/tools/sun-handler.js +35 -0
  71. package/dist/mcp/tools/sun-handler.js.map +1 -0
  72. package/dist/mcp/tools/system-handlers.d.ts +27 -0
  73. package/dist/mcp/tools/system-handlers.js +259 -0
  74. package/dist/mcp/tools/system-handlers.js.map +1 -0
  75. package/dist/mcp/tools/temporal-handlers.d.ts +15 -0
  76. package/dist/mcp/tools/temporal-handlers.js +82 -0
  77. package/dist/mcp/tools/temporal-handlers.js.map +1 -0
  78. package/dist/scanner/local/filesystem.d.ts +0 -2
  79. package/dist/scanner/local/filesystem.js +1 -5
  80. package/dist/scanner/local/filesystem.js.map +1 -1
  81. package/dist/scanner/local/git.d.ts +0 -5
  82. package/dist/scanner/local/git.js +1 -1
  83. package/dist/scanner/local/git.js.map +1 -1
  84. package/dist/scanner/metadata-scanner.d.ts +3 -14
  85. package/dist/scanner/metadata-scanner.js +10 -10
  86. package/dist/scanner/metadata-scanner.js.map +1 -1
  87. package/dist/service/scheduler.js +32 -13
  88. package/dist/service/scheduler.js.map +1 -1
  89. package/dist/storage/database.js +81 -2
  90. package/dist/storage/database.js.map +1 -1
  91. package/dist/storage/queries/analytics-queries.d.ts +59 -0
  92. package/dist/storage/queries/analytics-queries.js +265 -0
  93. package/dist/storage/queries/analytics-queries.js.map +1 -0
  94. package/dist/storage/queries/conflict-queries.d.ts +16 -0
  95. package/dist/storage/queries/conflict-queries.js +56 -0
  96. package/dist/storage/queries/conflict-queries.js.map +1 -0
  97. package/dist/storage/queries/constellation-queries.d.ts +18 -0
  98. package/dist/storage/queries/constellation-queries.js +101 -0
  99. package/dist/storage/queries/constellation-queries.js.map +1 -0
  100. package/dist/storage/queries/datasource-queries.d.ts +9 -0
  101. package/dist/storage/queries/datasource-queries.js +53 -0
  102. package/dist/storage/queries/datasource-queries.js.map +1 -0
  103. package/dist/storage/queries/memory-queries.d.ts +53 -0
  104. package/dist/storage/queries/memory-queries.js +415 -0
  105. package/dist/storage/queries/memory-queries.js.map +1 -0
  106. package/dist/storage/queries/observation-queries.d.ts +7 -0
  107. package/dist/storage/queries/observation-queries.js +23 -0
  108. package/dist/storage/queries/observation-queries.js.map +1 -0
  109. package/dist/storage/queries/orbit-queries.d.ts +7 -0
  110. package/dist/storage/queries/orbit-queries.js +23 -0
  111. package/dist/storage/queries/orbit-queries.js.map +1 -0
  112. package/dist/storage/queries/shared.d.ts +106 -0
  113. package/dist/storage/queries/shared.js +120 -0
  114. package/dist/storage/queries/shared.js.map +1 -0
  115. package/dist/storage/queries/sun-queries.d.ts +9 -0
  116. package/dist/storage/queries/sun-queries.js +43 -0
  117. package/dist/storage/queries/sun-queries.js.map +1 -0
  118. package/dist/storage/queries/temporal-queries.d.ts +32 -0
  119. package/dist/storage/queries/temporal-queries.js +112 -0
  120. package/dist/storage/queries/temporal-queries.js.map +1 -0
  121. package/dist/storage/queries.d.ts +15 -84
  122. package/dist/storage/queries.js +15 -896
  123. package/dist/storage/queries.js.map +1 -1
  124. package/dist/storage/vec.d.ts +5 -1
  125. package/dist/storage/vec.js +48 -24
  126. package/dist/storage/vec.js.map +1 -1
  127. package/dist/utils/config.d.ts +0 -1
  128. package/dist/utils/config.js +1 -1
  129. package/dist/utils/config.js.map +1 -1
  130. package/dist/utils/logger.d.ts +0 -2
  131. package/dist/utils/logger.js +0 -2
  132. package/dist/utils/logger.js.map +1 -1
  133. package/dist/utils/stopwords.d.ts +6 -0
  134. package/dist/utils/stopwords.js +22 -0
  135. package/dist/utils/stopwords.js.map +1 -0
  136. package/dist/utils/tokenizer.d.ts +2 -1
  137. package/dist/utils/tokenizer.js +7 -5
  138. package/dist/utils/tokenizer.js.map +1 -1
  139. package/package.json +78 -78
@@ -0,0 +1,56 @@
1
+ /**
2
+ * storage/queries/conflict-queries.ts — Conflict management
3
+ */
4
+ import { getDatabase } from '../database.js';
5
+ import { deserializeConflict } from './shared.js';
6
+ export function createConflict(conflict) {
7
+ const db = getDatabase();
8
+ db.prepare(`
9
+ INSERT INTO memory_conflicts (
10
+ id, memory_id, conflicting_memory_id, severity,
11
+ description, status, resolution, project, created_at, resolved_at
12
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
13
+ `).run(conflict.id, conflict.memory_id, conflict.conflicting_memory_id, conflict.severity, conflict.description, conflict.status, conflict.resolution ?? null, conflict.project, conflict.created_at, conflict.resolved_at ?? null);
14
+ }
15
+ export function getConflicts(project, status) {
16
+ const db = getDatabase();
17
+ const rows = status
18
+ ? db.prepare(`
19
+ SELECT * FROM memory_conflicts
20
+ WHERE project = ? AND status = ?
21
+ ORDER BY created_at DESC
22
+ `).all(project, status)
23
+ : db.prepare(`
24
+ SELECT * FROM memory_conflicts
25
+ WHERE project = ?
26
+ ORDER BY created_at DESC
27
+ `).all(project);
28
+ return rows.map((r) => deserializeConflict(r));
29
+ }
30
+ export function getConflictsForMemory(memoryId) {
31
+ const db = getDatabase();
32
+ const rows = db.prepare(`
33
+ SELECT * FROM memory_conflicts
34
+ WHERE memory_id = ? OR conflicting_memory_id = ?
35
+ ORDER BY created_at DESC
36
+ `).all(memoryId, memoryId);
37
+ return rows.map((r) => deserializeConflict(r));
38
+ }
39
+ export function resolveConflict(id, resolution) {
40
+ const db = getDatabase();
41
+ const now = new Date().toISOString();
42
+ db.prepare(`
43
+ UPDATE memory_conflicts
44
+ SET status = 'resolved', resolution = ?, resolved_at = ?
45
+ WHERE id = ?
46
+ `).run(resolution, now, id);
47
+ }
48
+ /**
49
+ * Get conflict row for a given conflict ID (used by conflict.ts resolveConflict action=supersede).
50
+ */
51
+ export function getConflictById(id) {
52
+ const db = getDatabase();
53
+ const row = db.prepare(`SELECT memory_id, conflicting_memory_id FROM memory_conflicts WHERE id = ?`).get(id);
54
+ return row ?? null;
55
+ }
56
+ //# sourceMappingURL=conflict-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-queries.js","sourceRoot":"","sources":["../../../src/storage/queries/conflict-queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,EAAE,CAAC,OAAO,CAAC;;;;;GAKV,CAAC,CAAC,GAAG,CACJ,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,qBAAqB,EAC9B,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,UAAU,IAAI,IAAI,EAC3B,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,WAAW,IAAI,IAAI,CAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAe;IAC3D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAc;QACtC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CAAC,OAAO,CAAc,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAmB,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIvB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAc,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAmB,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,UAAkB;IAC5D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CAAC;;;;GAIV,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,4EAA4E,CAC7E,CAAC,GAAG,CAAC,EAAE,CAAqE,CAAC;IAC9E,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * storage/queries/constellation-queries.ts — Knowledge graph (constellation edges)
3
+ */
4
+ import type { Memory, ConstellationEdge } from '../../engine/types.js';
5
+ export declare function createEdge(edge: ConstellationEdge): void;
6
+ export declare function getEdges(memoryId: string, project: string): ConstellationEdge[];
7
+ export declare function getConstellation(memoryId: string, project: string, depth?: number): {
8
+ nodes: Memory[];
9
+ edges: ConstellationEdge[];
10
+ };
11
+ export declare function getEdgesForBatch(memoryIds: string[], project: string): Map<string, Set<string>>;
12
+ export declare function deleteEdge(id: string): void;
13
+ export declare function getEdgeCountForMemory(memoryId: string): number;
14
+ /**
15
+ * Get all edge IDs for a memory (no project filter needed — used for cleanup).
16
+ */
17
+ export declare function getEdgeIdsForMemory(memoryId: string): string[];
18
+ //# sourceMappingURL=constellation-queries.d.ts.map
@@ -0,0 +1,101 @@
1
+ /**
2
+ * storage/queries/constellation-queries.ts — Knowledge graph (constellation edges)
3
+ */
4
+ import { getDatabase } from '../database.js';
5
+ import { deserializeConstellationEdge, } from './shared.js';
6
+ import { getMemoryByIds } from './memory-queries.js';
7
+ export function createEdge(edge) {
8
+ const db = getDatabase();
9
+ db.prepare(`
10
+ INSERT INTO constellation_edges (id, source_id, target_id, relation, weight, project, metadata, created_at)
11
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
12
+ ON CONFLICT(source_id, target_id, relation) DO UPDATE SET
13
+ weight = excluded.weight,
14
+ metadata = excluded.metadata
15
+ `).run(edge.id, edge.source_id, edge.target_id, edge.relation, edge.weight, edge.project, JSON.stringify(edge.metadata ?? {}), edge.created_at);
16
+ }
17
+ export function getEdges(memoryId, project) {
18
+ const db = getDatabase();
19
+ const rows = db.prepare(`
20
+ SELECT * FROM constellation_edges
21
+ WHERE (source_id = ? OR target_id = ?) AND project = ?
22
+ ORDER BY weight DESC
23
+ `).all(memoryId, memoryId, project);
24
+ return rows.map((r) => deserializeConstellationEdge(r));
25
+ }
26
+ export function getConstellation(memoryId, project, depth = 1) {
27
+ const db = getDatabase();
28
+ const visitedNodeIds = new Set([memoryId]);
29
+ const allEdges = [];
30
+ let frontier = [memoryId];
31
+ for (let d = 0; d < depth; d++) {
32
+ if (frontier.length === 0)
33
+ break;
34
+ const placeholders = frontier.map(() => '?').join(', ');
35
+ const edgeRows = db.prepare(`
36
+ SELECT * FROM constellation_edges
37
+ WHERE (source_id IN (${placeholders}) OR target_id IN (${placeholders}))
38
+ AND project = ?
39
+ `).all(...frontier, ...frontier, project);
40
+ for (const r of edgeRows) {
41
+ const edge = deserializeConstellationEdge(r);
42
+ allEdges.push(edge);
43
+ visitedNodeIds.add(edge.source_id);
44
+ visitedNodeIds.add(edge.target_id);
45
+ }
46
+ frontier = [...visitedNodeIds].filter((id) => !frontier.includes(id) && id !== memoryId);
47
+ }
48
+ const nodes = getMemoryByIds([...visitedNodeIds]);
49
+ return { nodes, edges: allEdges };
50
+ }
51
+ export function getEdgesForBatch(memoryIds, project) {
52
+ if (memoryIds.length === 0)
53
+ return new Map();
54
+ const db = getDatabase();
55
+ const placeholders = memoryIds.map(() => '?').join(', ');
56
+ const rows = db.prepare(`
57
+ SELECT source_id, target_id FROM constellation_edges
58
+ WHERE (source_id IN (${placeholders}) OR target_id IN (${placeholders}))
59
+ AND project = ?
60
+ `).all(...memoryIds, ...memoryIds, project);
61
+ const idSet = new Set(memoryIds);
62
+ const result = new Map();
63
+ for (const r of rows) {
64
+ const row = r;
65
+ if (idSet.has(row.source_id)) {
66
+ const neighbors = result.get(row.source_id) ?? new Set();
67
+ neighbors.add(row.target_id);
68
+ result.set(row.source_id, neighbors);
69
+ }
70
+ if (idSet.has(row.target_id)) {
71
+ const neighbors = result.get(row.target_id) ?? new Set();
72
+ neighbors.add(row.source_id);
73
+ result.set(row.target_id, neighbors);
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ export function deleteEdge(id) {
79
+ const db = getDatabase();
80
+ db.prepare(`DELETE FROM constellation_edges WHERE id = ?`).run(id);
81
+ }
82
+ export function getEdgeCountForMemory(memoryId) {
83
+ const db = getDatabase();
84
+ const row = db.prepare(`
85
+ SELECT COUNT(*) as count FROM constellation_edges
86
+ WHERE source_id = ? OR target_id = ?
87
+ `).get(memoryId, memoryId);
88
+ return row?.count ?? 0;
89
+ }
90
+ /**
91
+ * Get all edge IDs for a memory (no project filter needed — used for cleanup).
92
+ */
93
+ export function getEdgeIdsForMemory(memoryId) {
94
+ const db = getDatabase();
95
+ const rows = db.prepare(`
96
+ SELECT id FROM constellation_edges
97
+ WHERE source_id = ? OR target_id = ?
98
+ `).all(memoryId, memoryId);
99
+ return rows.map(r => r.id);
100
+ }
101
+ //# sourceMappingURL=constellation-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constellation-queries.js","sourceRoot":"","sources":["../../../src/storage/queries/constellation-queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * storage/queries/datasource-queries.ts — Data source management
3
+ */
4
+ import type { DataSource } from '../../scanner/types.js';
5
+ export declare function insertDataSource(ds: Omit<DataSource, 'created_at' | 'updated_at'>): DataSource;
6
+ export declare function updateDataSource(id: string, patch: Partial<Pick<DataSource, 'status' | 'last_scanned_at' | 'file_count' | 'total_size' | 'config'>>): void;
7
+ export declare function getAllDataSources(): DataSource[];
8
+ export declare function getDataSourceByPath(path: string): DataSource | null;
9
+ //# sourceMappingURL=datasource-queries.d.ts.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * storage/queries/datasource-queries.ts — Data source management
3
+ */
4
+ import { getDatabase } from '../database.js';
5
+ import { asRawDataSource, deserializeDataSource } from './shared.js';
6
+ export function insertDataSource(ds) {
7
+ const db = getDatabase();
8
+ const now = new Date().toISOString();
9
+ db.prepare(`
10
+ INSERT INTO data_sources (id, path, type, status, last_scanned_at, file_count, total_size, config, created_at, updated_at)
11
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
12
+ `).run(ds.id, ds.path, ds.type, ds.status, ds.last_scanned_at ?? null, ds.file_count ?? 0, ds.total_size ?? 0, JSON.stringify(ds.config ?? {}), now, now);
13
+ return { ...ds, config: ds.config ?? {}, created_at: now, updated_at: now };
14
+ }
15
+ export function updateDataSource(id, patch) {
16
+ const db = getDatabase();
17
+ const now = new Date().toISOString();
18
+ const sets = ['updated_at = ?'];
19
+ const values = [now];
20
+ if (patch.status !== undefined) {
21
+ sets.push('status = ?');
22
+ values.push(patch.status);
23
+ }
24
+ if (patch.last_scanned_at !== undefined) {
25
+ sets.push('last_scanned_at = ?');
26
+ values.push(patch.last_scanned_at);
27
+ }
28
+ if (patch.file_count !== undefined) {
29
+ sets.push('file_count = ?');
30
+ values.push(patch.file_count);
31
+ }
32
+ if (patch.total_size !== undefined) {
33
+ sets.push('total_size = ?');
34
+ values.push(patch.total_size);
35
+ }
36
+ if (patch.config !== undefined) {
37
+ sets.push('config = ?');
38
+ values.push(JSON.stringify(patch.config));
39
+ }
40
+ values.push(id);
41
+ db.prepare(`UPDATE data_sources SET ${sets.join(', ')} WHERE id = ?`).run(...values);
42
+ }
43
+ export function getAllDataSources() {
44
+ const db = getDatabase();
45
+ const rows = db.prepare(`SELECT * FROM data_sources ORDER BY created_at DESC`).all();
46
+ return rows.map((r) => deserializeDataSource(asRawDataSource(r)));
47
+ }
48
+ export function getDataSourceByPath(path) {
49
+ const db = getDatabase();
50
+ const row = db.prepare(`SELECT * FROM data_sources WHERE path = ? LIMIT 1`).get(path);
51
+ return row ? deserializeDataSource(asRawDataSource(row)) : null;
52
+ }
53
+ //# sourceMappingURL=datasource-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasource-queries.js","sourceRoot":"","sources":["../../../src/storage/queries/datasource-queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * storage/queries/memory-queries.ts — Memory CRUD and search operations
3
+ */
4
+ import type { Memory, OrbitZone } from '../../engine/types.js';
5
+ export declare function insertMemory(memory: Partial<Memory>): Memory;
6
+ export declare function getMemoryById(id: string): Memory | null;
7
+ export declare function getMemoryByIds(ids: string[]): Memory[];
8
+ export declare function getMemoriesByProject(project: string, includeDeleted?: boolean): Memory[];
9
+ export declare function getRecentMemories(project: string, hoursAgo?: number): Memory[];
10
+ export declare function getMemoriesInZone(project: string, zone: OrbitZone): Memory[];
11
+ export declare function getNearestMemories(project: string, limit: number): Memory[];
12
+ export declare function updateMemoryOrbit(id: string, distance: number, importance: number, velocity: number): void;
13
+ export declare function updateMemoryAccess(id: string): void;
14
+ export declare function softDeleteMemory(id: string): void;
15
+ export declare function updateMemoryContent(id: string, content: string): void;
16
+ export declare function updateQualityScore(memoryId: string, score: number): void;
17
+ export declare function memoryExistsForSource(sourcePath: string, sourceHash: string): boolean;
18
+ export declare function getMemoryBySourcePath(sourcePath: string): Memory | null;
19
+ export declare function getMemoryByContentHash(project: string, contentHash: string): Memory | null;
20
+ export declare function searchMemories(project: string, query: string, limit?: number): Memory[];
21
+ export declare function searchMemoriesInRange(project: string, query: string, minDistance: number, maxDistance: number, limit: number): Memory[];
22
+ export declare function consolidateMemories(sourceIds: string[], targetId: string): void;
23
+ export declare function getConsolidationHistory(memoryId: string): Memory[];
24
+ export declare function getUniversalMemories(limit?: number): Memory[];
25
+ export declare function setUniversal(memoryId: string, isUniversal: boolean): void;
26
+ export declare function listProjects(): Array<{
27
+ project: string;
28
+ count: number;
29
+ }>;
30
+ export declare function getStoredEmbeddingForMemory(memoryId: string): Float32Array | null;
31
+ /**
32
+ * Get the embedding of the highest-importance memory in a project.
33
+ * Used by orbit.ts to compute sun-context relevance via hybridRelevance.
34
+ */
35
+ export declare function getTopProjectEmbedding(project: string): Float32Array | null;
36
+ /**
37
+ * Return the list of distinct project names that have at least one non-deleted memory.
38
+ */
39
+ export declare function getAllProjects(): string[];
40
+ /**
41
+ * Permanently remove soft-deleted memories older than the given number of days.
42
+ * Also cleans up related embeddings, constellation edges, and orbit log entries.
43
+ */
44
+ export declare function purgeDeletedMemories(project: string, olderThanDays?: number): number;
45
+ /**
46
+ * Soft-delete noisy or superseded memories.
47
+ * Returns count and breakdown by reason.
48
+ */
49
+ export declare function curateMemories(project: string): {
50
+ deleted: number;
51
+ reasons: Record<string, number>;
52
+ };
53
+ //# sourceMappingURL=memory-queries.d.ts.map