@framers/agentos 0.2.12 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ingest-router/executors/EntityExtractor.d.ts +23 -0
- package/dist/ingest-router/executors/EntityExtractor.d.ts.map +1 -0
- package/dist/ingest-router/executors/EntityExtractor.js +69 -0
- package/dist/ingest-router/executors/EntityExtractor.js.map +1 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts +46 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.d.ts.map +1 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js +45 -0
- package/dist/ingest-router/executors/EntityLinkingIngestExecutor.js.map +1 -0
- package/dist/ingest-router/executors/entity-types.d.ts +55 -0
- package/dist/ingest-router/executors/entity-types.d.ts.map +1 -0
- package/dist/ingest-router/executors/entity-types.js +17 -0
- package/dist/ingest-router/executors/entity-types.js.map +1 -0
- package/dist/ingest-router/executors/index.d.ts +7 -0
- package/dist/ingest-router/executors/index.d.ts.map +1 -1
- package/dist/ingest-router/executors/index.js +6 -0
- package/dist/ingest-router/executors/index.js.map +1 -1
- package/dist/ingest-router/index.d.ts +2 -2
- package/dist/ingest-router/index.d.ts.map +1 -1
- package/dist/ingest-router/index.js +1 -1
- package/dist/ingest-router/index.js.map +1 -1
- package/dist/memory/AgentMemory.js +1 -1
- package/dist/memory/AgentMemory.js.map +1 -1
- package/dist/memory/CognitiveMemoryManager.js +4 -4
- package/dist/memory/CognitiveMemoryManager.js.map +1 -1
- package/dist/memory/archive/IMemoryArchive.d.ts +2 -2
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts +17 -13
- package/dist/memory/archive/SqlStorageMemoryArchive.d.ts.map +1 -1
- package/dist/memory/archive/SqlStorageMemoryArchive.js +36 -28
- package/dist/memory/archive/SqlStorageMemoryArchive.js.map +1 -1
- package/dist/memory/core/config.d.ts +4 -4
- package/dist/memory/core/config.d.ts.map +1 -1
- package/dist/memory/index.d.ts +3 -3
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -3
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/io/ChatGptImporter.d.ts +5 -5
- package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
- package/dist/memory/io/ChatGptImporter.js +9 -7
- package/dist/memory/io/ChatGptImporter.js.map +1 -1
- package/dist/memory/io/CsvImporter.d.ts +4 -4
- package/dist/memory/io/CsvImporter.d.ts.map +1 -1
- package/dist/memory/io/CsvImporter.js +11 -8
- package/dist/memory/io/CsvImporter.js.map +1 -1
- package/dist/memory/io/JsonExporter.d.ts +5 -5
- package/dist/memory/io/JsonExporter.d.ts.map +1 -1
- package/dist/memory/io/JsonExporter.js +13 -12
- package/dist/memory/io/JsonExporter.js.map +1 -1
- package/dist/memory/io/JsonImporter.d.ts +5 -5
- package/dist/memory/io/JsonImporter.d.ts.map +1 -1
- package/dist/memory/io/JsonImporter.js +50 -34
- package/dist/memory/io/JsonImporter.js.map +1 -1
- package/dist/memory/io/MarkdownExporter.d.ts +4 -4
- package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownExporter.js +1 -1
- package/dist/memory/io/MarkdownExporter.js.map +1 -1
- package/dist/memory/io/MarkdownImporter.d.ts +6 -6
- package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
- package/dist/memory/io/MarkdownImporter.js +8 -7
- package/dist/memory/io/MarkdownImporter.js.map +1 -1
- package/dist/memory/io/ObsidianImporter.d.ts +4 -4
- package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
- package/dist/memory/io/ObsidianImporter.js +15 -10
- package/dist/memory/io/ObsidianImporter.js.map +1 -1
- package/dist/memory/io/SqliteExporter.d.ts +5 -5
- package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteExporter.js +3 -3
- package/dist/memory/io/SqliteExporter.js.map +1 -1
- package/dist/memory/io/SqliteImporter.d.ts +4 -4
- package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
- package/dist/memory/io/SqliteImporter.js +23 -16
- package/dist/memory/io/SqliteImporter.js.map +1 -1
- package/dist/memory/io/facade/Memory.d.ts +58 -10
- package/dist/memory/io/facade/Memory.d.ts.map +1 -1
- package/dist/memory/io/facade/Memory.js +124 -50
- package/dist/memory/io/facade/Memory.js.map +1 -1
- package/dist/memory/io/facade/types.d.ts +1 -1
- package/dist/memory/io/index.d.ts +2 -2
- package/dist/memory/io/index.js +2 -2
- package/dist/memory/io/tools/MemoryAddTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryAddTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryAddTool.js +2 -2
- package/dist/memory/io/tools/MemoryAddTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryDeleteTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.js +1 -1
- package/dist/memory/io/tools/MemoryDeleteTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryMergeTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryMergeTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryMergeTool.js +4 -3
- package/dist/memory/io/tools/MemoryMergeTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryReflectTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryReflectTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryReflectTool.js.map +1 -1
- package/dist/memory/io/tools/MemorySearchTool.d.ts +2 -2
- package/dist/memory/io/tools/MemorySearchTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemorySearchTool.js.map +1 -1
- package/dist/memory/io/tools/MemoryUpdateTool.d.ts +2 -2
- package/dist/memory/io/tools/MemoryUpdateTool.d.ts.map +1 -1
- package/dist/memory/io/tools/MemoryUpdateTool.js +5 -4
- package/dist/memory/io/tools/MemoryUpdateTool.js.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts +3 -3
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.d.ts.map +1 -1
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.js +22 -17
- package/dist/memory/pipeline/consolidation/ConsolidationLoop.js.map +1 -1
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts +3 -3
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js +15 -12
- package/dist/memory/retrieval/feedback/RetrievalFeedbackSignal.js.map +1 -1
- package/dist/memory/retrieval/graph/index.d.ts +0 -1
- package/dist/memory/retrieval/graph/index.d.ts.map +1 -1
- package/dist/memory/retrieval/graph/index.js +4 -1
- package/dist/memory/retrieval/graph/index.js.map +1 -1
- package/dist/memory/retrieval/store/{SqliteBrain.d.ts → Brain.d.ts} +106 -23
- package/dist/memory/retrieval/store/Brain.d.ts.map +1 -0
- package/dist/memory/retrieval/store/Brain.js +898 -0
- package/dist/memory/retrieval/store/Brain.js.map +1 -0
- package/dist/memory/retrieval/store/HnswSidecar.d.ts +1 -1
- package/dist/memory/retrieval/store/HnswSidecar.js +1 -1
- package/dist/memory/retrieval/store/MemoryStore.d.ts +6 -6
- package/dist/memory/retrieval/store/MemoryStore.d.ts.map +1 -1
- package/dist/memory/retrieval/store/MemoryStore.js +10 -9
- package/dist/memory/retrieval/store/MemoryStore.js.map +1 -1
- package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.d.ts → SqlKnowledgeGraph.d.ts} +12 -12
- package/dist/memory/retrieval/store/SqlKnowledgeGraph.d.ts.map +1 -0
- package/dist/memory/retrieval/store/{SqliteKnowledgeGraph.js → SqlKnowledgeGraph.js} +83 -64
- package/dist/memory/retrieval/store/SqlKnowledgeGraph.js.map +1 -0
- package/dist/memory/retrieval/store/{SqliteMemoryGraph.d.ts → SqlMemoryGraph.d.ts} +11 -11
- package/dist/memory/retrieval/store/SqlMemoryGraph.d.ts.map +1 -0
- package/dist/memory/retrieval/store/{SqliteMemoryGraph.js → SqlMemoryGraph.js} +26 -24
- package/dist/memory/retrieval/store/SqlMemoryGraph.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts +50 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js +100 -0
- package/dist/memory/retrieval/store/migrations/MigrationRunner.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/index.d.ts +20 -0
- package/dist/memory/retrieval/store/migrations/index.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/index.js +19 -0
- package/dist/memory/retrieval/store/migrations/index.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/types.d.ts +28 -0
- package/dist/memory/retrieval/store/migrations/types.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/types.js +7 -0
- package/dist/memory/retrieval/store/migrations/types.js.map +1 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts +40 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js +491 -0
- package/dist/memory/retrieval/store/migrations/v1-to-v2.js.map +1 -0
- package/dist/memory/retrieval/store/portable-tables.d.ts +27 -0
- package/dist/memory/retrieval/store/portable-tables.d.ts.map +1 -0
- package/dist/memory/retrieval/store/portable-tables.js +56 -0
- package/dist/memory/retrieval/store/portable-tables.js.map +1 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.d.ts +54 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.d.ts.map +1 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.js +39 -0
- package/dist/memory-router/backends/EntityRetrievalRanker.js.map +1 -0
- package/dist/memory-router/backends/index.d.ts +16 -0
- package/dist/memory-router/backends/index.d.ts.map +1 -0
- package/dist/memory-router/backends/index.js +16 -0
- package/dist/memory-router/backends/index.js.map +1 -0
- package/dist/memory-router/index.d.ts +2 -0
- package/dist/memory-router/index.d.ts.map +1 -1
- package/dist/memory-router/index.js +4 -0
- package/dist/memory-router/index.js.map +1 -1
- package/dist/rag/utils/vectorMath.d.ts +1 -1
- package/dist/rag/utils/vectorMath.js +1 -1
- package/dist/rag/vector-search/HnswIndexSidecar.d.ts +1 -1
- package/dist/rag/vector-search/HnswIndexSidecar.js +1 -1
- package/package.json +2 -2
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts +0 -10
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js +0 -10
- package/dist/memory/retrieval/graph/knowledge/SqliteKnowledgeGraph.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteBrain.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteBrain.js +0 -553
- package/dist/memory/retrieval/store/SqliteBrain.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteKnowledgeGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteKnowledgeGraph.js.map +0 -1
- package/dist/memory/retrieval/store/SqliteMemoryGraph.d.ts.map +0 -1
- package/dist/memory/retrieval/store/SqliteMemoryGraph.js.map +0 -1
|
@@ -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
|
-
*
|
|
6
|
+
* Brain. All node metadata is serialised into the `properties` JSON column.
|
|
7
7
|
*
|
|
8
8
|
* ## Algorithms
|
|
9
9
|
*
|
|
@@ -28,7 +28,7 @@
|
|
|
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/
|
|
31
|
+
* @module memory/store/SqlMemoryGraph
|
|
32
32
|
*/
|
|
33
33
|
import { sha256 } from '../../core/util/crossPlatformCrypto.js';
|
|
34
34
|
// ---------------------------------------------------------------------------
|
|
@@ -53,7 +53,7 @@ const SA_DEFAULTS = {
|
|
|
53
53
|
/** Node type discriminator stored in knowledge_nodes.type. */
|
|
54
54
|
const NODE_TYPE = 'memory_graph';
|
|
55
55
|
// ---------------------------------------------------------------------------
|
|
56
|
-
//
|
|
56
|
+
// SqlMemoryGraph
|
|
57
57
|
// ---------------------------------------------------------------------------
|
|
58
58
|
/**
|
|
59
59
|
* SQLite-backed implementation of {@link IMemoryGraph}.
|
|
@@ -63,8 +63,8 @@ const NODE_TYPE = 'memory_graph';
|
|
|
63
63
|
*
|
|
64
64
|
* **Usage:**
|
|
65
65
|
* ```ts
|
|
66
|
-
* const brain = await
|
|
67
|
-
* const graph = new
|
|
66
|
+
* const brain = await Brain.openSqlite('/path/to/brain.sqlite');
|
|
67
|
+
* const graph = new SqlMemoryGraph(brain);
|
|
68
68
|
* await graph.initialize();
|
|
69
69
|
*
|
|
70
70
|
* await graph.addNode('mem-1', { type: 'episodic', scope: 'session', scopeId: 's1', strength: 1.0, createdAt: Date.now() });
|
|
@@ -73,14 +73,14 @@ const NODE_TYPE = 'memory_graph';
|
|
|
73
73
|
* const activated = await graph.spreadingActivation(['mem-1']);
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
export class
|
|
76
|
+
export class SqlMemoryGraph {
|
|
77
77
|
// ---------------------------------------------------------------------------
|
|
78
78
|
// Constructor
|
|
79
79
|
// ---------------------------------------------------------------------------
|
|
80
80
|
/**
|
|
81
|
-
* @param brain - The shared
|
|
81
|
+
* @param brain - The shared Brain connection for this agent.
|
|
82
82
|
* The `knowledge_nodes` and `knowledge_edges` tables must already exist
|
|
83
|
-
* (
|
|
83
|
+
* (Brain creates them in its constructor).
|
|
84
84
|
*/
|
|
85
85
|
constructor(brain) {
|
|
86
86
|
this.brain = brain;
|
|
@@ -115,7 +115,7 @@ export class SqliteMemoryGraph {
|
|
|
115
115
|
this._nodes.clear();
|
|
116
116
|
this._edges.clear();
|
|
117
117
|
// Load all memory graph nodes.
|
|
118
|
-
const nodeRows = await this.brain.all(`SELECT id, properties FROM knowledge_nodes WHERE type = ?`, [NODE_TYPE]);
|
|
118
|
+
const nodeRows = await this.brain.all(`SELECT id, properties FROM knowledge_nodes WHERE brain_id = ? AND type = ?`, [this.brain.brainId, NODE_TYPE]);
|
|
119
119
|
for (const row of nodeRows) {
|
|
120
120
|
try {
|
|
121
121
|
const meta = JSON.parse(row.properties);
|
|
@@ -132,10 +132,10 @@ export class SqliteMemoryGraph {
|
|
|
132
132
|
// we can filter by the set of known types.
|
|
133
133
|
const edgeRows = await this.brain.all(`SELECT id, source_id, target_id, type, weight, created_at
|
|
134
134
|
FROM knowledge_edges
|
|
135
|
-
WHERE type IN (
|
|
135
|
+
WHERE brain_id = ? AND type IN (
|
|
136
136
|
'SHARED_ENTITY','TEMPORAL_SEQUENCE','SAME_TOPIC',
|
|
137
137
|
'CONTRADICTS','SUPERSEDES','CAUSED_BY','CO_ACTIVATED','SCHEMA_INSTANCE'
|
|
138
|
-
)
|
|
138
|
+
)`, [this.brain.brainId]);
|
|
139
139
|
for (const row of edgeRows) {
|
|
140
140
|
const key = `${row.source_id}:${row.target_id}`;
|
|
141
141
|
this._edges.set(key, {
|
|
@@ -150,11 +150,11 @@ export class SqliteMemoryGraph {
|
|
|
150
150
|
/**
|
|
151
151
|
* Shut down the memory graph.
|
|
152
152
|
*
|
|
153
|
-
* Currently a no-op because
|
|
153
|
+
* Currently a no-op because Brain owns the DB connection lifetime.
|
|
154
154
|
* Provided for interface compliance and forward compatibility.
|
|
155
155
|
*/
|
|
156
156
|
async shutdown() {
|
|
157
|
-
// No-op:
|
|
157
|
+
// No-op: Brain owns the connection; callers must call brain.close().
|
|
158
158
|
}
|
|
159
159
|
// ---------------------------------------------------------------------------
|
|
160
160
|
// Node operations
|
|
@@ -172,7 +172,8 @@ export class SqliteMemoryGraph {
|
|
|
172
172
|
async addNode(memoryId, metadata) {
|
|
173
173
|
const now = Date.now();
|
|
174
174
|
const { dialect } = this.brain.features;
|
|
175
|
-
await this.brain.run(dialect.insertOrReplace('knowledge_nodes', ['id', 'type', 'label', 'properties', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?'], 'id'), [
|
|
175
|
+
await this.brain.run(dialect.insertOrReplace('knowledge_nodes', ['brain_id', 'id', 'type', 'label', 'properties', 'confidence', 'source', 'created_at'], ['?', '?', '?', '?', '?', '?', '?', '?'], 'brain_id, id'), [
|
|
176
|
+
this.brain.brainId,
|
|
176
177
|
memoryId,
|
|
177
178
|
NODE_TYPE,
|
|
178
179
|
memoryId,
|
|
@@ -201,13 +202,13 @@ export class SqliteMemoryGraph {
|
|
|
201
202
|
}
|
|
202
203
|
}
|
|
203
204
|
if (toDelete.length > 0) {
|
|
204
|
-
await this.brain.run(`DELETE FROM knowledge_edges WHERE source_id = ? OR target_id =
|
|
205
|
+
await this.brain.run(`DELETE FROM knowledge_edges WHERE brain_id = ? AND (source_id = ? OR target_id = ?)`, [this.brain.brainId, memoryId, memoryId]);
|
|
205
206
|
for (const key of toDelete) {
|
|
206
207
|
this._edges.delete(key);
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
210
|
// Now delete the node itself.
|
|
210
|
-
await this.brain.run(`DELETE FROM knowledge_nodes WHERE id = ? AND type = ?`, [memoryId, NODE_TYPE]);
|
|
211
|
+
await this.brain.run(`DELETE FROM knowledge_nodes WHERE brain_id = ? AND id = ? AND type = ?`, [this.brain.brainId, memoryId, NODE_TYPE]);
|
|
211
212
|
this._nodes.delete(memoryId);
|
|
212
213
|
}
|
|
213
214
|
/**
|
|
@@ -238,7 +239,7 @@ export class SqliteMemoryGraph {
|
|
|
238
239
|
const edgeId = await this._edgeId(edge.sourceId, edge.targetId);
|
|
239
240
|
const key = `${edge.sourceId}:${edge.targetId}`;
|
|
240
241
|
const { dialect } = this.brain.features;
|
|
241
|
-
await this.brain.run(dialect.insertOrReplace('knowledge_edges', ['id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '0', "'{}'", '?'], 'id'), [edgeId, edge.sourceId, edge.targetId, edge.type, edge.weight, edge.createdAt]);
|
|
242
|
+
await this.brain.run(dialect.insertOrReplace('knowledge_edges', ['brain_id', 'id', 'source_id', 'target_id', 'type', 'weight', 'bidirectional', 'metadata', 'created_at'], ['?', '?', '?', '?', '?', '?', '0', "'{}'", '?'], 'brain_id, id'), [this.brain.brainId, edgeId, edge.sourceId, edge.targetId, edge.type, edge.weight, edge.createdAt]);
|
|
242
243
|
this._edges.set(key, { ...edge });
|
|
243
244
|
}
|
|
244
245
|
/**
|
|
@@ -273,7 +274,7 @@ export class SqliteMemoryGraph {
|
|
|
273
274
|
*/
|
|
274
275
|
async removeEdge(sourceId, targetId) {
|
|
275
276
|
const edgeId = await this._edgeId(sourceId, targetId);
|
|
276
|
-
await this.brain.run(`DELETE FROM knowledge_edges WHERE id = ?`, [edgeId]);
|
|
277
|
+
await this.brain.run(`DELETE FROM knowledge_edges WHERE brain_id = ? AND id = ?`, [this.brain.brainId, edgeId]);
|
|
277
278
|
this._edges.delete(`${sourceId}:${targetId}`);
|
|
278
279
|
}
|
|
279
280
|
// ---------------------------------------------------------------------------
|
|
@@ -427,7 +428,7 @@ export class SqliteMemoryGraph {
|
|
|
427
428
|
existing.weight = newWeight;
|
|
428
429
|
// Update SQLite row weight in-place.
|
|
429
430
|
const edgeId = await this._edgeId(sourceId, targetId);
|
|
430
|
-
await this.brain.run(`UPDATE knowledge_edges SET weight = ? WHERE id = ?`, [newWeight, edgeId]);
|
|
431
|
+
await this.brain.run(`UPDATE knowledge_edges SET weight = ? WHERE brain_id = ? AND id = ?`, [newWeight, this.brain.brainId, edgeId]);
|
|
431
432
|
}
|
|
432
433
|
else {
|
|
433
434
|
// Create a new CO_ACTIVATED edge.
|
|
@@ -602,14 +603,15 @@ export class SqliteMemoryGraph {
|
|
|
602
603
|
* administrative resets only.
|
|
603
604
|
*/
|
|
604
605
|
async clear() {
|
|
606
|
+
const brainId = this.brain.brainId;
|
|
605
607
|
// Delete all knowledge_edges whose type is a MemoryEdgeType value.
|
|
606
|
-
await this.brain.
|
|
607
|
-
WHERE type IN (
|
|
608
|
+
await this.brain.run(`DELETE FROM knowledge_edges
|
|
609
|
+
WHERE brain_id = ? AND type IN (
|
|
608
610
|
'SHARED_ENTITY','TEMPORAL_SEQUENCE','SAME_TOPIC',
|
|
609
611
|
'CONTRADICTS','SUPERSEDES','CAUSED_BY','CO_ACTIVATED','SCHEMA_INSTANCE'
|
|
610
|
-
)
|
|
612
|
+
)`, [brainId]);
|
|
611
613
|
// Delete all memory_graph nodes.
|
|
612
|
-
await this.brain.run(`DELETE FROM knowledge_nodes WHERE type = ?`, [NODE_TYPE]);
|
|
614
|
+
await this.brain.run(`DELETE FROM knowledge_nodes WHERE brain_id = ? AND type = ?`, [brainId, NODE_TYPE]);
|
|
613
615
|
this._nodes.clear();
|
|
614
616
|
this._edges.clear();
|
|
615
617
|
}
|
|
@@ -633,4 +635,4 @@ export class SqliteMemoryGraph {
|
|
|
633
635
|
return hash.slice(0, 32);
|
|
634
636
|
}
|
|
635
637
|
}
|
|
636
|
-
//# sourceMappingURL=
|
|
638
|
+
//# sourceMappingURL=SqlMemoryGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlMemoryGraph.js","sourceRoot":"","sources":["../../../../src/memory/retrieval/store/SqlMemoryGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MigrationRunner: centralized owner of "how schema migrations
|
|
3
|
+
* run safely." Each registered Migration object knows only its target version
|
|
4
|
+
* and schema-diff logic; the runner handles transaction wrapping, advisory
|
|
5
|
+
* locking (per-brain), and atomic schema_version bumps.
|
|
6
|
+
*
|
|
7
|
+
* Two distinct dialect paths because connection-pooling and transaction
|
|
8
|
+
* semantics differ enough that a unified path obscures correctness:
|
|
9
|
+
*
|
|
10
|
+
* - Postgres: uses `adapter.transaction()` to keep all queries on one pooled
|
|
11
|
+
* connection. Acquires a transaction-scoped advisory lock with
|
|
12
|
+
* `pg_advisory_xact_lock`, which auto-releases on COMMIT/ROLLBACK.
|
|
13
|
+
* - SQLite: uses explicit `BEGIN IMMEDIATE` via `adapter.exec`. Single
|
|
14
|
+
* connection per file, so the connection-pool concern doesn't apply.
|
|
15
|
+
* IMMEDIATE acquires the reserved write lock immediately, eliminating the
|
|
16
|
+
* race window in default DEFERRED mode.
|
|
17
|
+
*
|
|
18
|
+
* @module memory/retrieval/store/migrations/MigrationRunner
|
|
19
|
+
*/
|
|
20
|
+
import type { StorageAdapter, StorageFeatures } from '@framers/sql-storage-adapter';
|
|
21
|
+
import type { Migration } from './types.js';
|
|
22
|
+
export declare class MigrationRunner {
|
|
23
|
+
/**
|
|
24
|
+
* Run all pending migrations against the adapter, scoped by brainId.
|
|
25
|
+
*
|
|
26
|
+
* @returns The list of migration versions that were applied.
|
|
27
|
+
*/
|
|
28
|
+
static runPending(adapter: StorageAdapter, features: StorageFeatures, brainId: string, migrations: Migration[]): Promise<{
|
|
29
|
+
applied: number[];
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Inner migration loop, called once the lock + transaction are established.
|
|
33
|
+
* Reads the current schema_version, filters pending migrations, applies each
|
|
34
|
+
* one, and bumps schema_version inside the same transaction.
|
|
35
|
+
*/
|
|
36
|
+
private static _runMigrations;
|
|
37
|
+
/**
|
|
38
|
+
* Read the current schema_version from brain_meta. Returns null when
|
|
39
|
+
* brain_meta does not exist (fresh database).
|
|
40
|
+
*/
|
|
41
|
+
private static _readSchemaVersion;
|
|
42
|
+
/**
|
|
43
|
+
* Upsert schema_version in brain_meta inside the current transaction.
|
|
44
|
+
* Uses dialect-aware INSERT OR REPLACE.
|
|
45
|
+
*/
|
|
46
|
+
private static _writeSchemaVersion;
|
|
47
|
+
private static _sqliteTableExists;
|
|
48
|
+
private static _postgresTableExists;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=MigrationRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/MigrationRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,eAAe;IAC1B;;;;OAIG;WACU,UAAU,CACrB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAyBjC;;;;OAIG;mBACkB,cAAc;IAwBnC;;;OAGG;mBACkB,kBAAkB;IAiBvC;;;OAGG;mBACkB,mBAAmB;mBAiBnB,kBAAkB;mBAWlB,oBAAoB;CAa1C"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MigrationRunner: centralized owner of "how schema migrations
|
|
3
|
+
* run safely." Each registered Migration object knows only its target version
|
|
4
|
+
* and schema-diff logic; the runner handles transaction wrapping, advisory
|
|
5
|
+
* locking (per-brain), and atomic schema_version bumps.
|
|
6
|
+
*
|
|
7
|
+
* Two distinct dialect paths because connection-pooling and transaction
|
|
8
|
+
* semantics differ enough that a unified path obscures correctness:
|
|
9
|
+
*
|
|
10
|
+
* - Postgres: uses `adapter.transaction()` to keep all queries on one pooled
|
|
11
|
+
* connection. Acquires a transaction-scoped advisory lock with
|
|
12
|
+
* `pg_advisory_xact_lock`, which auto-releases on COMMIT/ROLLBACK.
|
|
13
|
+
* - SQLite: uses explicit `BEGIN IMMEDIATE` via `adapter.exec`. Single
|
|
14
|
+
* connection per file, so the connection-pool concern doesn't apply.
|
|
15
|
+
* IMMEDIATE acquires the reserved write lock immediately, eliminating the
|
|
16
|
+
* race window in default DEFERRED mode.
|
|
17
|
+
*
|
|
18
|
+
* @module memory/retrieval/store/migrations/MigrationRunner
|
|
19
|
+
*/
|
|
20
|
+
export class MigrationRunner {
|
|
21
|
+
/**
|
|
22
|
+
* Run all pending migrations against the adapter, scoped by brainId.
|
|
23
|
+
*
|
|
24
|
+
* @returns The list of migration versions that were applied.
|
|
25
|
+
*/
|
|
26
|
+
static async runPending(adapter, features, brainId, migrations) {
|
|
27
|
+
const isPostgres = adapter.kind.includes('postgres');
|
|
28
|
+
if (isPostgres) {
|
|
29
|
+
return adapter.transaction(async (trx) => {
|
|
30
|
+
await trx.run(`SELECT pg_advisory_xact_lock(hashtext($1))`, [`agentos_brain:${brainId}`]);
|
|
31
|
+
return MigrationRunner._runMigrations(trx, features, brainId, migrations);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
// SQLite path: explicit BEGIN IMMEDIATE for single-connection serialization.
|
|
35
|
+
await adapter.exec('BEGIN IMMEDIATE');
|
|
36
|
+
try {
|
|
37
|
+
const result = await MigrationRunner._runMigrations(adapter, features, brainId, migrations);
|
|
38
|
+
await adapter.exec('COMMIT');
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
await adapter.exec('ROLLBACK');
|
|
43
|
+
throw err;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Inner migration loop, called once the lock + transaction are established.
|
|
48
|
+
* Reads the current schema_version, filters pending migrations, applies each
|
|
49
|
+
* one, and bumps schema_version inside the same transaction.
|
|
50
|
+
*/
|
|
51
|
+
static async _runMigrations(adapter, features, brainId, migrations) {
|
|
52
|
+
const current = await MigrationRunner._readSchemaVersion(adapter, brainId);
|
|
53
|
+
// Fresh database: brain_meta does not exist yet. Skip migrations entirely;
|
|
54
|
+
// the upcoming _initSchema call creates the latest schema directly.
|
|
55
|
+
if (current === null)
|
|
56
|
+
return { applied: [] };
|
|
57
|
+
const sorted = [...migrations].sort((a, b) => a.version - b.version);
|
|
58
|
+
const pending = sorted.filter((m) => m.version > current);
|
|
59
|
+
const applied = [];
|
|
60
|
+
for (const migration of pending) {
|
|
61
|
+
await migration.up(adapter, features, brainId);
|
|
62
|
+
await MigrationRunner._writeSchemaVersion(adapter, features, brainId, migration.version);
|
|
63
|
+
applied.push(migration.version);
|
|
64
|
+
}
|
|
65
|
+
return { applied };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Read the current schema_version from brain_meta. Returns null when
|
|
69
|
+
* brain_meta does not exist (fresh database).
|
|
70
|
+
*/
|
|
71
|
+
static async _readSchemaVersion(adapter, brainId) {
|
|
72
|
+
const isPostgres = adapter.kind.includes('postgres');
|
|
73
|
+
const brainMetaExists = isPostgres
|
|
74
|
+
? await MigrationRunner._postgresTableExists(adapter, 'brain_meta')
|
|
75
|
+
: await MigrationRunner._sqliteTableExists(adapter, 'brain_meta');
|
|
76
|
+
if (!brainMetaExists)
|
|
77
|
+
return null;
|
|
78
|
+
const row = await adapter.get(`SELECT value FROM brain_meta WHERE brain_id = ? AND key = ?`, [brainId, 'schema_version']);
|
|
79
|
+
return row ? parseInt(row.value, 10) : null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Upsert schema_version in brain_meta inside the current transaction.
|
|
83
|
+
* Uses dialect-aware INSERT OR REPLACE.
|
|
84
|
+
*/
|
|
85
|
+
static async _writeSchemaVersion(adapter, features, brainId, version) {
|
|
86
|
+
await adapter.run(features.dialect.insertOrReplace('brain_meta', ['brain_id', 'key', 'value'], ['?', '?', '?'], 'brain_id, key'), [brainId, 'schema_version', String(version)]);
|
|
87
|
+
}
|
|
88
|
+
static async _sqliteTableExists(adapter, table) {
|
|
89
|
+
const row = await adapter.get(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`, [table]);
|
|
90
|
+
return Boolean(row);
|
|
91
|
+
}
|
|
92
|
+
static async _postgresTableExists(adapter, table) {
|
|
93
|
+
const row = await adapter.get(`SELECT EXISTS (
|
|
94
|
+
SELECT 1 FROM information_schema.tables
|
|
95
|
+
WHERE table_schema = current_schema() AND table_name = $1
|
|
96
|
+
) AS exists`, [table]);
|
|
97
|
+
return row?.exists ?? false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=MigrationRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/MigrationRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Registry of all schema migrations in version order.
|
|
3
|
+
*
|
|
4
|
+
* Adding a new schema version: implement `v2-to-v3.ts` exporting a
|
|
5
|
+
* `Migration` object, then append it to the `MIGRATIONS` array here.
|
|
6
|
+
* Both `Brain._initialize` (for `runPending`) and `Brain._seedMeta` (for
|
|
7
|
+
* the schema_version seed value) pick up the change automatically.
|
|
8
|
+
*
|
|
9
|
+
* @module memory/retrieval/store/migrations
|
|
10
|
+
*/
|
|
11
|
+
import type { Migration } from './types.js';
|
|
12
|
+
export type { Migration } from './types.js';
|
|
13
|
+
export { MigrationRunner } from './MigrationRunner.js';
|
|
14
|
+
export declare const MIGRATIONS: Migration[];
|
|
15
|
+
/**
|
|
16
|
+
* The highest schema version among registered migrations. Used by
|
|
17
|
+
* `Brain._seedMeta` to seed `schema_version` on fresh databases.
|
|
18
|
+
*/
|
|
19
|
+
export declare const LATEST_SCHEMA_VERSION: number;
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,SAAS,EAAa,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAA6C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Registry of all schema migrations in version order.
|
|
3
|
+
*
|
|
4
|
+
* Adding a new schema version: implement `v2-to-v3.ts` exporting a
|
|
5
|
+
* `Migration` object, then append it to the `MIGRATIONS` array here.
|
|
6
|
+
* Both `Brain._initialize` (for `runPending`) and `Brain._seedMeta` (for
|
|
7
|
+
* the schema_version seed value) pick up the change automatically.
|
|
8
|
+
*
|
|
9
|
+
* @module memory/retrieval/store/migrations
|
|
10
|
+
*/
|
|
11
|
+
import { v1ToV2 } from './v1-to-v2.js';
|
|
12
|
+
export { MigrationRunner } from './MigrationRunner.js';
|
|
13
|
+
export const MIGRATIONS = [v1ToV2];
|
|
14
|
+
/**
|
|
15
|
+
* The highest schema version among registered migrations. Used by
|
|
16
|
+
* `Brain._seedMeta` to seed `schema_version` on fresh databases.
|
|
17
|
+
*/
|
|
18
|
+
export const LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1].version;
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAgB,CAAC,MAAM,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Migration interface and shared types for MigrationRunner.
|
|
3
|
+
*
|
|
4
|
+
* @module memory/retrieval/store/migrations/types
|
|
5
|
+
*/
|
|
6
|
+
import type { StorageAdapter, StorageFeatures } from '@framers/sql-storage-adapter';
|
|
7
|
+
/**
|
|
8
|
+
* A single schema migration. The runner handles transaction wrapping, advisory
|
|
9
|
+
* locking, and the schema_version bump. The migration's `up` function only
|
|
10
|
+
* needs to apply the schema diff (DDL + data backfill) for its target version.
|
|
11
|
+
*
|
|
12
|
+
* Migrations MUST NOT manage their own transactions. The adapter passed into
|
|
13
|
+
* `up` is the runner's transactional adapter; calling BEGIN/COMMIT inside `up`
|
|
14
|
+
* breaks the runner's transaction model on both Postgres and SQLite.
|
|
15
|
+
*/
|
|
16
|
+
export interface Migration {
|
|
17
|
+
/** Target schema version this migration upgrades the database to. */
|
|
18
|
+
version: number;
|
|
19
|
+
/**
|
|
20
|
+
* Apply the schema diff for this migration's target version.
|
|
21
|
+
*
|
|
22
|
+
* @param adapter - Transactional storage adapter (do NOT BEGIN/COMMIT inside).
|
|
23
|
+
* @param features - Platform-aware feature bundle.
|
|
24
|
+
* @param brainId - The brain identifier to scope writes to.
|
|
25
|
+
*/
|
|
26
|
+
up(adapter: StorageAdapter, features: StorageFeatures, brainId: string): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file v1-to-v2.ts
|
|
3
|
+
* @description Schema migration v1 -> v2: add `brain_id TEXT NOT NULL` column
|
|
4
|
+
* to all 14 brain-owned tables and recreate composite primary keys / indexes.
|
|
5
|
+
*
|
|
6
|
+
* SQLite does not support `ALTER TABLE ADD PRIMARY KEY`, so the migration uses
|
|
7
|
+
* the standard recreate-table dance: rename old to `<name>_v1`, create new
|
|
8
|
+
* with target schema, copy rows with the brain_id default, drop the old.
|
|
9
|
+
*
|
|
10
|
+
* Postgres uses simple ALTER statements (ADD COLUMN with default, DROP CONSTRAINT,
|
|
11
|
+
* ADD PRIMARY KEY) since it supports those operations natively.
|
|
12
|
+
*
|
|
13
|
+
* Idempotent: detects v2 schema and returns early without touching data.
|
|
14
|
+
*
|
|
15
|
+
* @module memory/retrieval/store/migrations/v1-to-v2
|
|
16
|
+
*/
|
|
17
|
+
import type { StorageAdapter, StorageFeatures } from '@framers/sql-storage-adapter';
|
|
18
|
+
import type { Migration } from './types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Run the v1 -> v2 migration on the given storage adapter.
|
|
21
|
+
*
|
|
22
|
+
* Idempotent: returns immediately when schema is already v2.
|
|
23
|
+
*
|
|
24
|
+
* @param adapter - The storage adapter to migrate.
|
|
25
|
+
* @param features - Platform-aware feature bundle (used for dialect-specific paths).
|
|
26
|
+
* @param brainId - The brain identifier to assign to all existing rows.
|
|
27
|
+
* @returns `{ migrated: true }` if migration ran, `{ migrated: false }` if no-op.
|
|
28
|
+
*/
|
|
29
|
+
export declare function migrateV1ToV2(adapter: StorageAdapter, features: StorageFeatures, brainId: string): Promise<{
|
|
30
|
+
migrated: boolean;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* The v1 -> v2 schema migration as a Migration object for MigrationRunner.
|
|
34
|
+
*
|
|
35
|
+
* The runner handles transaction wrapping, advisory locking, and the
|
|
36
|
+
* schema_version bump. This Migration's `up` function only runs the schema
|
|
37
|
+
* diff (the 14-table walk).
|
|
38
|
+
*/
|
|
39
|
+
export declare const v1ToV2: Migration;
|
|
40
|
+
//# sourceMappingURL=v1-to-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v1-to-v2.d.ts","sourceRoot":"","sources":["../../../../../src/memory/retrieval/store/migrations/v1-to-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgU5C;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAqChC;AA+JD;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,EAAE,SA+BpB,CAAC"}
|