@framers/agentos 0.2.12 → 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.
Files changed (161) hide show
  1. package/dist/ingest-router/executors/EntityExtractor.d.ts +23 -0
  2. package/dist/ingest-router/executors/EntityExtractor.d.ts.map +1 -0
  3. package/dist/ingest-router/executors/EntityExtractor.js +69 -0
  4. package/dist/ingest-router/executors/EntityExtractor.js.map +1 -0
  5. package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts +46 -0
  6. package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts.map +1 -0
  7. package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js +45 -0
  8. package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js.map +1 -0
  9. package/dist/ingest-router/executors/entity-types.d.ts +55 -0
  10. package/dist/ingest-router/executors/entity-types.d.ts.map +1 -0
  11. package/dist/ingest-router/executors/entity-types.js +17 -0
  12. package/dist/ingest-router/executors/entity-types.js.map +1 -0
  13. package/dist/ingest-router/executors/index.d.ts +7 -0
  14. package/dist/ingest-router/executors/index.d.ts.map +1 -1
  15. package/dist/ingest-router/executors/index.js +6 -0
  16. package/dist/ingest-router/executors/index.js.map +1 -1
  17. package/dist/ingest-router/index.d.ts +2 -2
  18. package/dist/ingest-router/index.d.ts.map +1 -1
  19. package/dist/ingest-router/index.js +1 -1
  20. package/dist/ingest-router/index.js.map +1 -1
  21. package/dist/memory/AgentMemory.js +1 -1
  22. package/dist/memory/AgentMemory.js.map +1 -1
  23. package/dist/memory/CognitiveMemoryManager.js +4 -4
  24. package/dist/memory/CognitiveMemoryManager.js.map +1 -1
  25. package/dist/memory/archive/IMemoryArchive.d.ts +2 -2
  26. package/dist/memory/archive/SqlStorageMemoryArchive.d.ts +17 -13
  27. package/dist/memory/archive/SqlStorageMemoryArchive.d.ts.map +1 -1
  28. package/dist/memory/archive/SqlStorageMemoryArchive.js +36 -28
  29. package/dist/memory/archive/SqlStorageMemoryArchive.js.map +1 -1
  30. package/dist/memory/core/config.d.ts +4 -4
  31. package/dist/memory/core/config.d.ts.map +1 -1
  32. package/dist/memory/index.d.ts +3 -3
  33. package/dist/memory/index.d.ts.map +1 -1
  34. package/dist/memory/index.js +3 -3
  35. package/dist/memory/index.js.map +1 -1
  36. package/dist/memory/io/ChatGptImporter.d.ts +5 -5
  37. package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
  38. package/dist/memory/io/ChatGptImporter.js +9 -7
  39. package/dist/memory/io/ChatGptImporter.js.map +1 -1
  40. package/dist/memory/io/CsvImporter.d.ts +4 -4
  41. package/dist/memory/io/CsvImporter.d.ts.map +1 -1
  42. package/dist/memory/io/CsvImporter.js +11 -8
  43. package/dist/memory/io/CsvImporter.js.map +1 -1
  44. package/dist/memory/io/JsonExporter.d.ts +5 -5
  45. package/dist/memory/io/JsonExporter.d.ts.map +1 -1
  46. package/dist/memory/io/JsonExporter.js +13 -12
  47. package/dist/memory/io/JsonExporter.js.map +1 -1
  48. package/dist/memory/io/JsonImporter.d.ts +5 -5
  49. package/dist/memory/io/JsonImporter.d.ts.map +1 -1
  50. package/dist/memory/io/JsonImporter.js +50 -34
  51. package/dist/memory/io/JsonImporter.js.map +1 -1
  52. package/dist/memory/io/MarkdownExporter.d.ts +4 -4
  53. package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
  54. package/dist/memory/io/MarkdownExporter.js +1 -1
  55. package/dist/memory/io/MarkdownExporter.js.map +1 -1
  56. package/dist/memory/io/MarkdownImporter.d.ts +6 -6
  57. package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
  58. package/dist/memory/io/MarkdownImporter.js +8 -7
  59. package/dist/memory/io/MarkdownImporter.js.map +1 -1
  60. package/dist/memory/io/ObsidianImporter.d.ts +4 -4
  61. package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
  62. package/dist/memory/io/ObsidianImporter.js +15 -10
  63. package/dist/memory/io/ObsidianImporter.js.map +1 -1
  64. package/dist/memory/io/SqliteExporter.d.ts +5 -5
  65. package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
  66. package/dist/memory/io/SqliteExporter.js +3 -3
  67. package/dist/memory/io/SqliteExporter.js.map +1 -1
  68. package/dist/memory/io/SqliteImporter.d.ts +4 -4
  69. package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
  70. package/dist/memory/io/SqliteImporter.js +23 -16
  71. package/dist/memory/io/SqliteImporter.js.map +1 -1
  72. package/dist/memory/io/facade/Memory.d.ts +58 -10
  73. package/dist/memory/io/facade/Memory.d.ts.map +1 -1
  74. package/dist/memory/io/facade/Memory.js +124 -50
  75. package/dist/memory/io/facade/Memory.js.map +1 -1
  76. package/dist/memory/io/facade/types.d.ts +1 -1
  77. package/dist/memory/io/index.d.ts +2 -2
  78. package/dist/memory/io/index.js +2 -2
  79. package/dist/memory/io/tools/MemoryAddTool.d.ts +2 -2
  80. package/dist/memory/io/tools/MemoryAddTool.d.ts.map +1 -1
  81. package/dist/memory/io/tools/MemoryAddTool.js +2 -2
  82. package/dist/memory/io/tools/MemoryAddTool.js.map +1 -1
  83. package/dist/memory/io/tools/MemoryDeleteTool.d.ts +2 -2
  84. package/dist/memory/io/tools/MemoryDeleteTool.d.ts.map +1 -1
  85. package/dist/memory/io/tools/MemoryDeleteTool.js +1 -1
  86. package/dist/memory/io/tools/MemoryDeleteTool.js.map +1 -1
  87. package/dist/memory/io/tools/MemoryMergeTool.d.ts +2 -2
  88. package/dist/memory/io/tools/MemoryMergeTool.d.ts.map +1 -1
  89. package/dist/memory/io/tools/MemoryMergeTool.js +4 -3
  90. package/dist/memory/io/tools/MemoryMergeTool.js.map +1 -1
  91. package/dist/memory/io/tools/MemoryReflectTool.d.ts +2 -2
  92. package/dist/memory/io/tools/MemoryReflectTool.d.ts.map +1 -1
  93. package/dist/memory/io/tools/MemoryReflectTool.js.map +1 -1
  94. package/dist/memory/io/tools/MemorySearchTool.d.ts +2 -2
  95. package/dist/memory/io/tools/MemorySearchTool.d.ts.map +1 -1
  96. package/dist/memory/io/tools/MemorySearchTool.js.map +1 -1
  97. package/dist/memory/io/tools/MemoryUpdateTool.d.ts +2 -2
  98. package/dist/memory/io/tools/MemoryUpdateTool.d.ts.map +1 -1
  99. package/dist/memory/io/tools/MemoryUpdateTool.js +5 -4
  100. package/dist/memory/io/tools/MemoryUpdateTool.js.map +1 -1
  101. package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts +3 -3
  102. package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts.map +1 -1
  103. package/dist/memory/pipeline/consolidation/ConsolidationLoop.js +22 -17
  104. package/dist/memory/pipeline/consolidation/ConsolidationLoop.js.map +1 -1
  105. package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts +3 -3
  106. package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
  107. package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js +15 -12
  108. package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js.map +1 -1
  109. package/dist/memory/retrieval/graph/index.d.ts +0 -1
  110. package/dist/memory/retrieval/graph/index.d.ts.map +1 -1
  111. package/dist/memory/retrieval/graph/index.js +4 -1
  112. package/dist/memory/retrieval/graph/index.js.map +1 -1
  113. package/dist/memory/retrieval/store/{SqliteBrain.d.ts → Brain.d.ts} +111 -23
  114. package/dist/memory/retrieval/store/Brain.d.ts.map +1 -0
  115. package/dist/memory/retrieval/store/{SqliteBrain.js → Brain.js} +367 -76
  116. package/dist/memory/retrieval/store/Brain.js.map +1 -0
  117. package/dist/memory/retrieval/store/HnswSidecar.d.ts +1 -1
  118. package/dist/memory/retrieval/store/HnswSidecar.js +1 -1
  119. package/dist/memory/retrieval/store/MemoryStore.d.ts +6 -6
  120. package/dist/memory/retrieval/store/MemoryStore.d.ts.map +1 -1
  121. package/dist/memory/retrieval/store/MemoryStore.js +10 -9
  122. package/dist/memory/retrieval/store/MemoryStore.js.map +1 -1
  123. package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.d.ts → SqlKnowledgeGraph.d.ts} +12 -12
  124. package/dist/memory/retrieval/store/SqlKnowledgeGraph.d.ts.map +1 -0
  125. package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.js → SqlKnowledgeGraph.js} +83 -64
  126. package/dist/memory/retrieval/store/SqlKnowledgeGraph.js.map +1 -0
  127. package/dist/memory/retrieval/store/{SqliteMemoryGraph.d.ts → SqlMemoryGraph.d.ts} +11 -11
  128. package/dist/memory/retrieval/store/SqlMemoryGraph.d.ts.map +1 -0
  129. package/dist/memory/retrieval/store/{SqliteMemoryGraph.js → SqlMemoryGraph.js} +26 -24
  130. package/dist/memory/retrieval/store/SqlMemoryGraph.js.map +1 -0
  131. package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts +31 -0
  132. package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts.map +1 -0
  133. package/dist/memory/retrieval/store/migrations/v1-to-v2.js +423 -0
  134. package/dist/memory/retrieval/store/migrations/v1-to-v2.js.map +1 -0
  135. package/dist/memory-router/backends/EntityRetrievalRanker.d.ts +54 -0
  136. package/dist/memory-router/backends/EntityRetrievalRanker.d.ts.map +1 -0
  137. package/dist/memory-router/backends/EntityRetrievalRanker.js +39 -0
  138. package/dist/memory-router/backends/EntityRetrievalRanker.js.map +1 -0
  139. package/dist/memory-router/backends/index.d.ts +16 -0
  140. package/dist/memory-router/backends/index.d.ts.map +1 -0
  141. package/dist/memory-router/backends/index.js +16 -0
  142. package/dist/memory-router/backends/index.js.map +1 -0
  143. package/dist/memory-router/index.d.ts +2 -0
  144. package/dist/memory-router/index.d.ts.map +1 -1
  145. package/dist/memory-router/index.js +4 -0
  146. package/dist/memory-router/index.js.map +1 -1
  147. package/dist/rag/utils/vectorMath.d.ts +1 -1
  148. package/dist/rag/utils/vectorMath.js +1 -1
  149. package/dist/rag/vector-search/HnswIndexSidecar.d.ts +1 -1
  150. package/dist/rag/vector-search/HnswIndexSidecar.js +1 -1
  151. package/package.json +2 -2
  152. package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts +0 -10
  153. package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts.map +0 -1
  154. package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js +0 -10
  155. package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js.map +0 -1
  156. package/dist/memory/retrieval/store/SqliteBrain.d.ts.map +0 -1
  157. package/dist/memory/retrieval/store/SqliteBrain.js.map +0 -1
  158. package/dist/memory/retrieval/store/SqliteKnowledgeGraph.d.ts.map +0 -1
  159. package/dist/memory/retrieval/store/SqliteKnowledgeGraph.js.map +0 -1
  160. package/dist/memory/retrieval/store/SqliteMemoryGraph.d.ts.map +0 -1
  161. package/dist/memory/retrieval/store/SqliteMemoryGraph.js.map +0 -1
@@ -2,9 +2,9 @@
2
2
  * @fileoverview SQLite-backed implementation of IKnowledgeGraph.
3
3
  *
4
4
  * Persists knowledge entities (nodes), relations (edges), and episodic memories
5
- * to the `knowledge_nodes` and `knowledge_edges` tables managed by SqliteBrain.
5
+ * to the `knowledge_nodes` and `knowledge_edges` tables managed by Brain.
6
6
  *
7
- * Uses the async StorageAdapter API exposed by SqliteBrain (run/get/all/exec/
7
+ * Uses the async StorageAdapter API exposed by Brain (run/get/all/exec/
8
8
  * transaction) rather than direct better-sqlite3 access.
9
9
  *
10
10
  * Episodic memories are stored as knowledge_nodes with `type = 'memory'` and
@@ -16,14 +16,14 @@
16
16
  * Semantic search loads embeddings from BLOB columns and computes cosine
17
17
  * similarity in-process — no external vector DB needed for the SQLite path.
18
18
  *
19
- * @module memory/store/SqliteKnowledgeGraph
19
+ * @module memory/store/SqlKnowledgeGraph
20
20
  */
21
21
  import { uuid } from '../../core/util/crossPlatformCrypto.js';
22
22
  // ---------------------------------------------------------------------------
23
- // SqliteKnowledgeGraph
23
+ // SqlKnowledgeGraph
24
24
  // ---------------------------------------------------------------------------
25
25
  /**
26
- * Persistent knowledge graph backed by SQLite via SqliteBrain.
26
+ * Persistent knowledge graph backed by SQLite via Brain.
27
27
  *
28
28
  * Implements the full `IKnowledgeGraph` interface using the `knowledge_nodes`
29
29
  * and `knowledge_edges` tables. Extended entity/relation fields that don't
@@ -32,8 +32,8 @@ import { uuid } from '../../core/util/crossPlatformCrypto.js';
32
32
  *
33
33
  * @example
34
34
  * ```ts
35
- * const brain = await SqliteBrain.open('/tmp/agent-brain.sqlite');
36
- * const graph = new SqliteKnowledgeGraph(brain);
35
+ * const brain = await Brain.openSqlite('/tmp/agent-brain.sqlite');
36
+ * const graph = new SqlKnowledgeGraph(brain);
37
37
  * await graph.initialize();
38
38
  *
39
39
  * const entity = await graph.upsertEntity({
@@ -45,9 +45,9 @@ import { uuid } from '../../core/util/crossPlatformCrypto.js';
45
45
  * });
46
46
  * ```
47
47
  */
48
- export class SqliteKnowledgeGraph {
48
+ export class SqlKnowledgeGraph {
49
49
  /**
50
- * @param brain - A SqliteBrain instance whose async StorageAdapter methods
50
+ * @param brain - A Brain instance whose async StorageAdapter methods
51
51
  * are used for all queries.
52
52
  */
53
53
  constructor(brain) {
@@ -59,11 +59,11 @@ export class SqliteKnowledgeGraph {
59
59
  /**
60
60
  * Initialize the knowledge graph.
61
61
  *
62
- * The schema is already created by SqliteBrain's constructor, so this is
62
+ * The schema is already created by Brain's constructor, so this is
63
63
  * effectively a no-op. Provided to satisfy the IKnowledgeGraph contract.
64
64
  */
65
65
  async initialize() {
66
- // Schema already exists via SqliteBrain._initSchema().
66
+ // Schema already exists via Brain._initSchema().
67
67
  // Nothing additional to do.
68
68
  }
69
69
  // =========================================================================
@@ -83,7 +83,7 @@ export class SqliteKnowledgeGraph {
83
83
  const now = new Date().toISOString();
84
84
  const id = entity.id ?? uuid();
85
85
  // Check if the entity already exists to preserve createdAt.
86
- const existing = await this.brain.get('SELECT * FROM knowledge_nodes WHERE id = ?', [id]);
86
+ const existing = await this.brain.get('SELECT * FROM knowledge_nodes WHERE brain_id = ? AND id = ?', [this.brain.brainId, id]);
87
87
  const createdAt = existing
88
88
  ? new Date(existing.created_at).toISOString()
89
89
  : now;
@@ -99,7 +99,8 @@ export class SqliteKnowledgeGraph {
99
99
  ? this.brain.features.blobCodec.encode(entity.embedding)
100
100
  : null;
101
101
  const { dialect } = this.brain.features;
102
- await this.brain.run(dialect.insertOrReplace('knowledge_nodes', ['id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?'], 'id'), [
102
+ await this.brain.run(dialect.insertOrReplace('knowledge_nodes', ['brain_id', 'id', 'type', 'label', 'properties', 'embedding', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?', '?'], 'brain_id, id'), [
103
+ this.brain.brainId,
103
104
  id,
104
105
  entity.type,
105
106
  entity.label,
@@ -125,7 +126,7 @@ export class SqliteKnowledgeGraph {
125
126
  * Returns `undefined` if the entity does not exist.
126
127
  */
127
128
  async getEntity(id) {
128
- const row = await this.brain.get('SELECT * FROM knowledge_nodes WHERE id = ?', [id]);
129
+ const row = await this.brain.get('SELECT * FROM knowledge_nodes WHERE brain_id = ? AND id = ?', [this.brain.brainId, id]);
129
130
  if (!row)
130
131
  return undefined;
131
132
  return this._rowToEntity(row);
@@ -137,8 +138,8 @@ export class SqliteKnowledgeGraph {
137
138
  * full-text search, pagination (limit/offset), and time ranges.
138
139
  */
139
140
  async queryEntities(options) {
140
- const clauses = [];
141
- const params = [];
141
+ const clauses = ['brain_id = ?'];
142
+ const params = [this.brain.brainId];
142
143
  // Filter: entity types (only non-memory types for queryEntities).
143
144
  if (options?.entityTypes && options.entityTypes.length > 0) {
144
145
  const placeholders = options.entityTypes.map(() => '?').join(', ');
@@ -159,7 +160,8 @@ export class SqliteKnowledgeGraph {
159
160
  clauses.push('created_at <= ?');
160
161
  params.push(new Date(options.timeRange.to).getTime());
161
162
  }
162
- const whereClause = clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : '';
163
+ // brain_id always present in clauses so WHERE is unconditional.
164
+ const whereClause = `WHERE ${clauses.join(' AND ')}`;
163
165
  const limit = options?.limit ?? 100;
164
166
  const offset = options?.offset ?? 0;
165
167
  const sql = `SELECT * FROM knowledge_nodes ${whereClause} ORDER BY created_at DESC LIMIT ? OFFSET ?`;
@@ -187,11 +189,12 @@ export class SqliteKnowledgeGraph {
187
189
  * Returns `true` if the entity existed and was deleted.
188
190
  */
189
191
  async deleteEntity(id) {
192
+ const brainId = this.brain.brainId;
190
193
  return await this.brain.transaction(async (trx) => {
191
194
  // Delete all edges touching this entity.
192
- await trx.run('DELETE FROM knowledge_edges WHERE source_id = ? OR target_id = ?', [id, id]);
195
+ await trx.run('DELETE FROM knowledge_edges WHERE brain_id = ? AND (source_id = ? OR target_id = ?)', [brainId, id, id]);
193
196
  // Delete the node itself.
194
- const result = await trx.run('DELETE FROM knowledge_nodes WHERE id = ?', [id]);
197
+ const result = await trx.run('DELETE FROM knowledge_nodes WHERE brain_id = ? AND id = ?', [brainId, id]);
195
198
  return result.changes > 0;
196
199
  });
197
200
  }
@@ -208,7 +211,7 @@ export class SqliteKnowledgeGraph {
208
211
  const now = new Date().toISOString();
209
212
  const id = relation.id ?? uuid();
210
213
  // Preserve createdAt if edge already exists.
211
- const existing = await this.brain.get('SELECT * FROM knowledge_edges WHERE id = ?', [id]);
214
+ const existing = await this.brain.get('SELECT * FROM knowledge_edges WHERE brain_id = ? AND id = ?', [this.brain.brainId, id]);
212
215
  const createdAt = existing
213
216
  ? new Date(existing.created_at).toISOString()
214
217
  : now;
@@ -222,7 +225,8 @@ export class SqliteKnowledgeGraph {
222
225
  _validTo: relation.validTo,
223
226
  };
224
227
  const { dialect } = this.brain.features;
225
- await this.brain.run(dialect.insertOrReplace('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?'], 'id'), [
228
+ await this.brain.run(dialect.insertOrReplace('knowledge_edges', ['brain_id', 'id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?', '?'], 'brain_id, id'), [
229
+ this.brain.brainId,
226
230
  id,
227
231
  relation.sourceId,
228
232
  relation.targetId,
@@ -251,8 +255,8 @@ export class SqliteKnowledgeGraph {
251
255
  */
252
256
  async getRelations(entityId, options) {
253
257
  const direction = options?.direction ?? 'both';
254
- const clauses = [];
255
- const params = [];
258
+ const clauses = ['brain_id = ?'];
259
+ const params = [this.brain.brainId];
256
260
  if (direction === 'outgoing') {
257
261
  clauses.push('(source_id = ?)');
258
262
  params.push(entityId);
@@ -279,7 +283,7 @@ export class SqliteKnowledgeGraph {
279
283
  * Returns `true` if the relation existed and was deleted.
280
284
  */
281
285
  async deleteRelation(id) {
282
- const result = await this.brain.run('DELETE FROM knowledge_edges WHERE id = ?', [id]);
286
+ const result = await this.brain.run('DELETE FROM knowledge_edges WHERE brain_id = ? AND id = ?', [this.brain.brainId, id]);
283
287
  return result.changes > 0;
284
288
  }
285
289
  // =========================================================================
@@ -320,8 +324,9 @@ export class SqliteKnowledgeGraph {
320
324
  timestamp: now,
321
325
  };
322
326
  await this.brain.run(`INSERT INTO knowledge_nodes
323
- (id, type, label, properties, embedding, confidence, source, created_at)
324
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
327
+ (brain_id, id, type, label, properties, embedding, confidence, source, created_at)
328
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
329
+ this.brain.brainId,
325
330
  id,
326
331
  'memory',
327
332
  memory.summary.slice(0, 200),
@@ -358,7 +363,7 @@ export class SqliteKnowledgeGraph {
358
363
  * then unpacks the memory-specific fields from the `properties` JSON.
359
364
  */
360
365
  async getMemory(id) {
361
- const row = await this.brain.get(`SELECT * FROM knowledge_nodes WHERE id = ? AND type = 'memory'`, [id]);
366
+ const row = await this.brain.get(`SELECT * FROM knowledge_nodes WHERE brain_id = ? AND id = ? AND type = 'memory'`, [this.brain.brainId, id]);
362
367
  if (!row)
363
368
  return undefined;
364
369
  return this._rowToMemory(row);
@@ -370,8 +375,8 @@ export class SqliteKnowledgeGraph {
370
375
  * time range, and result limit.
371
376
  */
372
377
  async queryMemories(options) {
373
- const clauses = ["type = 'memory'"];
374
- const params = [];
378
+ const clauses = ['brain_id = ?', "type = 'memory'"];
379
+ const params = [this.brain.brainId];
375
380
  // Filter by minimum importance (stored as confidence).
376
381
  if (options?.minImportance !== undefined) {
377
382
  clauses.push('confidence >= ?');
@@ -415,19 +420,19 @@ export class SqliteKnowledgeGraph {
415
420
  const limit = topK ?? 10;
416
421
  const searchTerm = `%${query}%`;
417
422
  const rows = await this.brain.all(`SELECT * FROM knowledge_nodes
418
- WHERE type = 'memory' AND (label LIKE ? OR properties LIKE ?)
423
+ WHERE brain_id = ? AND type = 'memory' AND (label LIKE ? OR properties LIKE ?)
419
424
  ORDER BY created_at DESC
420
- LIMIT ?`, [searchTerm, searchTerm, limit]);
425
+ LIMIT ?`, [this.brain.brainId, searchTerm, searchTerm, limit]);
421
426
  const memories = rows.map((r) => this._rowToMemory(r));
422
427
  // Update access count and last accessed for each recalled memory.
423
428
  const now = new Date().toISOString();
424
429
  for (const mem of memories) {
425
- const row = await this.brain.get('SELECT * FROM knowledge_nodes WHERE id = ?', [mem.id]);
430
+ const row = await this.brain.get('SELECT * FROM knowledge_nodes WHERE brain_id = ? AND id = ?', [this.brain.brainId, mem.id]);
426
431
  if (row) {
427
432
  const fields = JSON.parse(row.properties);
428
433
  fields._accessCount = (fields._accessCount ?? 0) + 1;
429
434
  fields._lastAccessedAt = now;
430
- await this.brain.run('UPDATE knowledge_nodes SET properties = ? WHERE id = ?', [JSON.stringify(fields), mem.id]);
435
+ await this.brain.run('UPDATE knowledge_nodes SET properties = ? WHERE brain_id = ? AND id = ?', [JSON.stringify(fields), this.brain.brainId, mem.id]);
431
436
  mem.accessCount = fields._accessCount;
432
437
  mem.lastAccessedAt = now;
433
438
  }
@@ -456,15 +461,16 @@ export class SqliteKnowledgeGraph {
456
461
  const minWeight = options?.minWeight ?? 0;
457
462
  const maxNodes = options?.maxNodes ?? 1000;
458
463
  // Build the edge direction clause for the recursive step.
464
+ // brain_id is filtered in the WHERE clause below; the join itself stays direction-only.
459
465
  let edgeJoin;
460
466
  if (direction === 'outgoing') {
461
- edgeJoin = 'knowledge_edges e ON e.source_id = t.entity_id';
467
+ edgeJoin = 'knowledge_edges e ON e.source_id = t.entity_id AND e.brain_id = t.brain_id';
462
468
  }
463
469
  else if (direction === 'incoming') {
464
- edgeJoin = 'knowledge_edges e ON e.target_id = t.entity_id';
470
+ edgeJoin = 'knowledge_edges e ON e.target_id = t.entity_id AND e.brain_id = t.brain_id';
465
471
  }
466
472
  else {
467
- edgeJoin = 'knowledge_edges e ON (e.source_id = t.entity_id OR e.target_id = t.entity_id)';
473
+ edgeJoin = 'knowledge_edges e ON e.brain_id = t.brain_id AND (e.source_id = t.entity_id OR e.target_id = t.entity_id)';
468
474
  }
469
475
  // Build optional relation type filter.
470
476
  let typeFilter = '';
@@ -488,11 +494,13 @@ export class SqliteKnowledgeGraph {
488
494
  const sql = `
489
495
  WITH RECURSIVE traverse AS (
490
496
  SELECT
497
+ CAST(? AS TEXT) AS brain_id,
491
498
  ? AS entity_id,
492
499
  0 AS depth,
493
500
  CAST(? AS TEXT) AS edge_id
494
501
  UNION ALL
495
502
  SELECT
503
+ t.brain_id,
496
504
  ${nextEntityExpr},
497
505
  t.depth + 1,
498
506
  e.id
@@ -508,6 +516,7 @@ export class SqliteKnowledgeGraph {
508
516
  LIMIT ?
509
517
  `;
510
518
  const params = [
519
+ this.brain.brainId,
511
520
  startEntityId,
512
521
  '', // placeholder edge_id for root
513
522
  maxDepth,
@@ -545,7 +554,7 @@ export class SqliteKnowledgeGraph {
545
554
  }
546
555
  const relations = [];
547
556
  for (const rid of data.edgeIds) {
548
- const row = await this.brain.get('SELECT * FROM knowledge_edges WHERE id = ?', [rid]);
557
+ const row = await this.brain.get('SELECT * FROM knowledge_edges WHERE brain_id = ? AND id = ?', [this.brain.brainId, rid]);
549
558
  if (row)
550
559
  relations.push(this._rowToRelation(row));
551
560
  }
@@ -574,12 +583,14 @@ export class SqliteKnowledgeGraph {
574
583
  const sql = `
575
584
  WITH RECURSIVE path_search AS (
576
585
  SELECT
586
+ CAST(? AS TEXT) AS brain_id,
577
587
  ? AS current_id,
578
588
  CAST(? AS TEXT) AS path_entities,
579
589
  CAST('' AS TEXT) AS path_edges,
580
590
  0 AS depth
581
591
  UNION ALL
582
592
  SELECT
593
+ p.brain_id,
583
594
  CASE
584
595
  WHEN e.source_id = p.current_id THEN e.target_id
585
596
  ELSE e.source_id
@@ -589,7 +600,9 @@ export class SqliteKnowledgeGraph {
589
600
  CASE WHEN p.path_edges = '' THEN e.id ELSE p.path_edges || ',' || e.id END,
590
601
  p.depth + 1
591
602
  FROM path_search p
592
- JOIN knowledge_edges e ON (e.source_id = p.current_id OR e.target_id = p.current_id)
603
+ JOIN knowledge_edges e
604
+ ON e.brain_id = p.brain_id
605
+ AND (e.source_id = p.current_id OR e.target_id = p.current_id)
593
606
  WHERE p.depth < ?
594
607
  AND p.path_entities NOT LIKE '%' ||
595
608
  CASE WHEN e.source_id = p.current_id THEN e.target_id ELSE e.source_id END || '%'
@@ -600,7 +613,7 @@ export class SqliteKnowledgeGraph {
600
613
  ORDER BY depth ASC
601
614
  LIMIT 1
602
615
  `;
603
- const row = await this.brain.get(sql, [sourceId, sourceId, depth, targetId]);
616
+ const row = await this.brain.get(sql, [this.brain.brainId, sourceId, sourceId, depth, targetId]);
604
617
  if (!row)
605
618
  return null;
606
619
  const entityIds = row.path_entities.split(',').filter(Boolean);
@@ -612,7 +625,7 @@ export class SqliteKnowledgeGraph {
612
625
  return null;
613
626
  let relation;
614
627
  if (i > 0 && edgeIds[i - 1]) {
615
- const edgeRow = await this.brain.get('SELECT * FROM knowledge_edges WHERE id = ?', [edgeIds[i - 1]]);
628
+ const edgeRow = await this.brain.get('SELECT * FROM knowledge_edges WHERE brain_id = ? AND id = ?', [this.brain.brainId, edgeIds[i - 1]]);
616
629
  if (edgeRow)
617
630
  relation = this._rowToRelation(edgeRow);
618
631
  }
@@ -631,21 +644,24 @@ export class SqliteKnowledgeGraph {
631
644
  const maxDepth = depth ?? 1;
632
645
  const sql = `
633
646
  WITH RECURSIVE neighborhood AS (
634
- SELECT ? AS entity_id, 0 AS depth
647
+ SELECT CAST(? AS TEXT) AS brain_id, ? AS entity_id, 0 AS depth
635
648
  UNION ALL
636
649
  SELECT
650
+ n.brain_id,
637
651
  CASE
638
652
  WHEN e.source_id = n.entity_id THEN e.target_id
639
653
  ELSE e.source_id
640
654
  END,
641
655
  n.depth + 1
642
656
  FROM neighborhood n
643
- JOIN knowledge_edges e ON (e.source_id = n.entity_id OR e.target_id = n.entity_id)
657
+ JOIN knowledge_edges e
658
+ ON e.brain_id = n.brain_id
659
+ AND (e.source_id = n.entity_id OR e.target_id = n.entity_id)
644
660
  WHERE n.depth < ?
645
661
  )
646
662
  SELECT DISTINCT entity_id FROM neighborhood
647
663
  `;
648
- const rows = await this.brain.all(sql, [entityId, maxDepth]);
664
+ const rows = await this.brain.all(sql, [this.brain.brainId, entityId, maxDepth]);
649
665
  const entityIds = new Set(rows.map((r) => r.entity_id));
650
666
  const entities = [];
651
667
  for (const eid of entityIds) {
@@ -654,7 +670,7 @@ export class SqliteKnowledgeGraph {
654
670
  entities.push(entity);
655
671
  }
656
672
  // Collect all edges where both endpoints are in the neighbourhood.
657
- const allEdges = await this.brain.all('SELECT * FROM knowledge_edges');
673
+ const allEdges = await this.brain.all('SELECT * FROM knowledge_edges WHERE brain_id = ?', [this.brain.brainId]);
658
674
  const relations = allEdges
659
675
  .filter((e) => entityIds.has(e.source_id) && entityIds.has(e.target_id))
660
676
  .map((r) => this._rowToRelation(r));
@@ -679,7 +695,7 @@ export class SqliteKnowledgeGraph {
679
695
  const topK = options.topK ?? 10;
680
696
  const minSimilarity = options.minSimilarity ?? 0;
681
697
  // Build WHERE clause based on scope.
682
- const clauses = ['embedding IS NOT NULL'];
698
+ const clauses = ['brain_id = ?', 'embedding IS NOT NULL'];
683
699
  if (scope === 'entities') {
684
700
  clauses.push("type != 'memory'");
685
701
  }
@@ -691,7 +707,7 @@ export class SqliteKnowledgeGraph {
691
707
  clauses.push(`type IN (${placeholders})`);
692
708
  }
693
709
  const sql = `SELECT * FROM knowledge_nodes WHERE ${clauses.join(' AND ')}`;
694
- const params = [];
710
+ const params = [this.brain.brainId];
695
711
  if (options.entityTypes && options.entityTypes.length > 0) {
696
712
  params.push(...options.entityTypes);
697
713
  }
@@ -739,9 +755,9 @@ export class SqliteKnowledgeGraph {
739
755
  // Also search nodes WITHOUT embeddings by keyword when no embedding vectors
740
756
  // are available (pure keyword fallback).
741
757
  if (results.length === 0) {
742
- const allNodesSql = `SELECT * FROM knowledge_nodes WHERE ${scope === 'entities' ? "type != 'memory'" :
758
+ const allNodesSql = `SELECT * FROM knowledge_nodes WHERE brain_id = ? AND ${scope === 'entities' ? "type != 'memory'" :
743
759
  scope === 'memories' ? "type = 'memory'" : '1=1'}`;
744
- const allRows = await this.brain.all(allNodesSql);
760
+ const allRows = await this.brain.all(allNodesSql, [this.brain.brainId]);
745
761
  for (const row of allRows) {
746
762
  const label = row.label.toLowerCase();
747
763
  const propsStr = row.properties.toLowerCase();
@@ -803,17 +819,18 @@ export class SqliteKnowledgeGraph {
803
819
  throw new Error(`Primary entity not found: ${primaryId}`);
804
820
  }
805
821
  const othersIds = entityIds.filter((id) => id !== primaryId);
822
+ const brainId = this.brain.brainId;
806
823
  await this.brain.transaction(async (trx) => {
807
824
  for (const otherId of othersIds) {
808
825
  // Re-link outgoing edges: source_id = otherId -> primaryId.
809
- await trx.run('UPDATE knowledge_edges SET source_id = ? WHERE source_id = ?', [primaryId, otherId]);
826
+ await trx.run('UPDATE knowledge_edges SET source_id = ? WHERE brain_id = ? AND source_id = ?', [primaryId, brainId, otherId]);
810
827
  // Re-link incoming edges: target_id = otherId -> primaryId.
811
- await trx.run('UPDATE knowledge_edges SET target_id = ? WHERE target_id = ?', [primaryId, otherId]);
828
+ await trx.run('UPDATE knowledge_edges SET target_id = ? WHERE brain_id = ? AND target_id = ?', [primaryId, brainId, otherId]);
812
829
  // Delete the non-primary entity node.
813
- await trx.run('DELETE FROM knowledge_nodes WHERE id = ?', [otherId]);
830
+ await trx.run('DELETE FROM knowledge_nodes WHERE brain_id = ? AND id = ?', [brainId, otherId]);
814
831
  }
815
832
  // Remove any self-referential edges that may have resulted from the merge.
816
- await trx.run('DELETE FROM knowledge_edges WHERE source_id = target_id');
833
+ await trx.run('DELETE FROM knowledge_edges WHERE brain_id = ? AND source_id = target_id', [brainId]);
817
834
  });
818
835
  // Return the surviving primary entity (re-fetch to reflect current state).
819
836
  return (await this.getEntity(primaryId));
@@ -831,7 +848,7 @@ export class SqliteKnowledgeGraph {
831
848
  const factor = decayFactor ?? 0.95;
832
849
  const result = await this.brain.run(`UPDATE knowledge_nodes
833
850
  SET confidence = confidence * ?
834
- WHERE type = 'memory'`, [factor]);
851
+ WHERE brain_id = ? AND type = 'memory'`, [factor, this.brain.brainId]);
835
852
  return result.changes;
836
853
  }
837
854
  /**
@@ -841,33 +858,34 @@ export class SqliteKnowledgeGraph {
841
858
  * average confidence, and oldest/newest entry timestamps.
842
859
  */
843
860
  async getStats() {
861
+ const brainId = this.brain.brainId;
844
862
  // Total non-memory entities.
845
- const entityCountRow = await this.brain.get("SELECT COUNT(*) AS cnt FROM knowledge_nodes WHERE type != 'memory'");
863
+ const entityCountRow = await this.brain.get("SELECT COUNT(*) AS cnt FROM knowledge_nodes WHERE brain_id = ? AND type != 'memory'", [brainId]);
846
864
  const entityCount = entityCountRow?.cnt ?? 0;
847
865
  // Total relations.
848
- const relationCountRow = await this.brain.get('SELECT COUNT(*) AS cnt FROM knowledge_edges');
866
+ const relationCountRow = await this.brain.get('SELECT COUNT(*) AS cnt FROM knowledge_edges WHERE brain_id = ?', [brainId]);
849
867
  const relationCount = relationCountRow?.cnt ?? 0;
850
868
  // Total memories.
851
- const memoryCountRow = await this.brain.get("SELECT COUNT(*) AS cnt FROM knowledge_nodes WHERE type = 'memory'");
869
+ const memoryCountRow = await this.brain.get("SELECT COUNT(*) AS cnt FROM knowledge_nodes WHERE brain_id = ? AND type = 'memory'", [brainId]);
852
870
  const memoryCount = memoryCountRow?.cnt ?? 0;
853
871
  // Entity types breakdown (exclude memories).
854
- const entityTypeRows = await this.brain.all("SELECT type, COUNT(*) AS cnt FROM knowledge_nodes WHERE type != 'memory' GROUP BY type");
872
+ const entityTypeRows = await this.brain.all("SELECT type, COUNT(*) AS cnt FROM knowledge_nodes WHERE brain_id = ? AND type != 'memory' GROUP BY type", [brainId]);
855
873
  const entitiesByType = {};
856
874
  for (const row of entityTypeRows) {
857
875
  entitiesByType[row.type] = row.cnt;
858
876
  }
859
877
  // Relation types breakdown.
860
- const relTypeRows = await this.brain.all('SELECT type, COUNT(*) AS cnt FROM knowledge_edges GROUP BY type');
878
+ const relTypeRows = await this.brain.all('SELECT type, COUNT(*) AS cnt FROM knowledge_edges WHERE brain_id = ? GROUP BY type', [brainId]);
861
879
  const relationsByType = {};
862
880
  for (const row of relTypeRows) {
863
881
  relationsByType[row.type] = row.cnt;
864
882
  }
865
883
  // Average confidence across all nodes.
866
- const avgConfRow = await this.brain.get('SELECT AVG(confidence) AS avg_conf FROM knowledge_nodes');
884
+ const avgConfRow = await this.brain.get('SELECT AVG(confidence) AS avg_conf FROM knowledge_nodes WHERE brain_id = ?', [brainId]);
867
885
  const avgConf = avgConfRow?.avg_conf ?? 0;
868
886
  // Oldest and newest entries.
869
- const oldest = await this.brain.get('SELECT created_at FROM knowledge_nodes ORDER BY created_at ASC LIMIT 1');
870
- const newest = await this.brain.get('SELECT created_at FROM knowledge_nodes ORDER BY created_at DESC LIMIT 1');
887
+ const oldest = await this.brain.get('SELECT created_at FROM knowledge_nodes WHERE brain_id = ? ORDER BY created_at ASC LIMIT 1', [brainId]);
888
+ const newest = await this.brain.get('SELECT created_at FROM knowledge_nodes WHERE brain_id = ? ORDER BY created_at DESC LIMIT 1', [brainId]);
871
889
  return {
872
890
  totalEntities: entityCount,
873
891
  totalRelations: relationCount,
@@ -884,10 +902,11 @@ export class SqliteKnowledgeGraph {
884
902
  * Wipes the knowledge graph completely.
885
903
  */
886
904
  async clear() {
905
+ const brainId = this.brain.brainId;
887
906
  await this.brain.transaction(async (trx) => {
888
907
  // Edges first (FK constraint on source_id / target_id -> knowledge_nodes).
889
- await trx.exec('DELETE FROM knowledge_edges');
890
- await trx.exec('DELETE FROM knowledge_nodes');
908
+ await trx.run('DELETE FROM knowledge_edges WHERE brain_id = ?', [brainId]);
909
+ await trx.run('DELETE FROM knowledge_nodes WHERE brain_id = ?', [brainId]);
891
910
  });
892
911
  }
893
912
  // =========================================================================
@@ -990,4 +1009,4 @@ export class SqliteKnowledgeGraph {
990
1009
  };
991
1010
  }
992
1011
  }
993
- //# sourceMappingURL=SqliteKnowledgeGraph.js.map
1012
+ //# sourceMappingURL=SqlKnowledgeGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlKnowledgeGraph.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqlKnowledgeGraph.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Stores memory graph nodes in the `knowledge_nodes` table (type = 'memory_graph')
5
5
  * and memory association edges in the `knowledge_edges` table — both managed by
6
- * SqliteBrain. All node metadata is serialised into the `properties` JSON column.
6
+ * Brain. All node metadata is serialised into the `properties` JSON column.
7
7
  *
8
8
  * ## Algorithms
9
9
  *
@@ -28,9 +28,9 @@
28
28
  * The `centroidId` is chosen as the member with the highest total edge weight
29
29
  * (i.e. the most central node in the component's subgraph).
30
30
  *
31
- * @module memory/store/SqliteMemoryGraph
31
+ * @module memory/store/SqlMemoryGraph
32
32
  */
33
- import type { SqliteBrain } from './SqliteBrain.js';
33
+ import type { Brain } from './Brain.js';
34
34
  import type { IMemoryGraph, MemoryEdge, MemoryEdgeType, MemoryGraphNodeMeta, SpreadingActivationConfig, ActivatedNode, MemoryCluster } from '../graph/IMemoryGraph.js';
35
35
  /**
36
36
  * SQLite-backed implementation of {@link IMemoryGraph}.
@@ -40,8 +40,8 @@ import type { IMemoryGraph, MemoryEdge, MemoryEdgeType, MemoryGraphNodeMeta, Spr
40
40
  *
41
41
  * **Usage:**
42
42
  * ```ts
43
- * const brain = await SqliteBrain.open('/path/to/brain.sqlite');
44
- * const graph = new SqliteMemoryGraph(brain);
43
+ * const brain = await Brain.openSqlite('/path/to/brain.sqlite');
44
+ * const graph = new SqlMemoryGraph(brain);
45
45
  * await graph.initialize();
46
46
  *
47
47
  * await graph.addNode('mem-1', { type: 'episodic', scope: 'session', scopeId: 's1', strength: 1.0, createdAt: Date.now() });
@@ -50,7 +50,7 @@ import type { IMemoryGraph, MemoryEdge, MemoryEdgeType, MemoryGraphNodeMeta, Spr
50
50
  * const activated = await graph.spreadingActivation(['mem-1']);
51
51
  * ```
52
52
  */
53
- export declare class SqliteMemoryGraph implements IMemoryGraph {
53
+ export declare class SqlMemoryGraph implements IMemoryGraph {
54
54
  private readonly brain;
55
55
  /**
56
56
  * In-memory node index: maps memoryId → MemoryGraphNodeMeta.
@@ -70,11 +70,11 @@ export declare class SqliteMemoryGraph implements IMemoryGraph {
70
70
  */
71
71
  private readonly _edges;
72
72
  /**
73
- * @param brain - The shared SqliteBrain connection for this agent.
73
+ * @param brain - The shared Brain connection for this agent.
74
74
  * The `knowledge_nodes` and `knowledge_edges` tables must already exist
75
- * (SqliteBrain creates them in its constructor).
75
+ * (Brain creates them in its constructor).
76
76
  */
77
- constructor(brain: SqliteBrain);
77
+ constructor(brain: Brain);
78
78
  /**
79
79
  * Hydrate the in-memory node and edge caches from the SQLite database.
80
80
  *
@@ -85,7 +85,7 @@ export declare class SqliteMemoryGraph implements IMemoryGraph {
85
85
  /**
86
86
  * Shut down the memory graph.
87
87
  *
88
- * Currently a no-op because SqliteBrain owns the DB connection lifetime.
88
+ * Currently a no-op because Brain owns the DB connection lifetime.
89
89
  * Provided for interface compliance and forward compatibility.
90
90
  */
91
91
  shutdown(): Promise<void>;
@@ -247,4 +247,4 @@ export declare class SqliteMemoryGraph implements IMemoryGraph {
247
247
  */
248
248
  private _edgeId;
249
249
  }
250
- //# sourceMappingURL=SqliteMemoryGraph.d.ts.map
250
+ //# sourceMappingURL=SqlMemoryGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlMemoryGraph.d.ts","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqlMemoryGraph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAoDlC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAe,YAAW,YAAY;IA6BrC,OAAO,CAAC,QAAQ,CAAC,KAAK;IA5BlC;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IAEjE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAMxD;;;;OAIG;gBAC0B,KAAK,EAAE,KAAK;IAMzC;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CjC;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B;;;;;;;;;OASG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7E;;;;;;;OAOG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQlC;;;;;;;;;OASG;IACG,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE;IAY/D;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE;;;;;;;;;;;;;;;;;;OAkBG;IACG,mBAAmB,CACvB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,CAAC,EAAE,yBAAyB,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC;IAsH3B;;;;;;;;;;;;;;;OAeG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,YAAY,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ChF;;;;;;;;;OASG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE;IAQ5C;;;;;;;;;;;;;;;;OAgBG;IACG,cAAc,CAAC,OAAO,SAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoH3D;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,SAAS,IAAI,MAAM;IAInB;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;;;;;;;;;;OAWG;YACW,OAAO;CAItB"}