@mce-bt/microagents-memory 0.6.0 → 0.8.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.
- package/dist/knowledge-graph.d.ts +13 -1
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +86 -35
- package/dist/knowledge-graph.js.map +1 -1
- package/dist/ltm.d.ts +10 -1
- package/dist/ltm.d.ts.map +1 -1
- package/dist/ltm.js +31 -8
- package/dist/ltm.js.map +1 -1
- package/dist/manager.d.ts +40 -0
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +77 -3
- package/dist/manager.js.map +1 -1
- package/dist/memory-tools.js +38 -13
- package/dist/memory-tools.js.map +1 -1
- package/dist/mtm.d.ts +8 -1
- package/dist/mtm.d.ts.map +1 -1
- package/dist/mtm.js +19 -6
- package/dist/mtm.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,13 @@ export interface KGConfig {
|
|
|
2
2
|
connectionString: string;
|
|
3
3
|
/** Embedding dimensions (default: 1536) */
|
|
4
4
|
embeddingDimensions?: number;
|
|
5
|
+
/**
|
|
6
|
+
* Isolation boundary for every row this instance reads or writes. Hosts that
|
|
7
|
+
* run agents for more than one owner MUST set it (Colmena passes the tenant
|
|
8
|
+
* id): the tables are shared, so without it separation rests on `agentId`
|
|
9
|
+
* strings never colliding, which is a convention rather than a constraint.
|
|
10
|
+
*/
|
|
11
|
+
namespace?: string;
|
|
5
12
|
}
|
|
6
13
|
export interface Entity {
|
|
7
14
|
id: string;
|
|
@@ -52,7 +59,10 @@ export declare class KnowledgeGraph {
|
|
|
52
59
|
private config;
|
|
53
60
|
private agentId;
|
|
54
61
|
private embeddingDimensions;
|
|
62
|
+
private namespace;
|
|
55
63
|
constructor(config: KGConfig);
|
|
64
|
+
/** The dimension this instance's vector column was created with. */
|
|
65
|
+
get dimensions(): number;
|
|
56
66
|
start(agentId: string): Promise<void>;
|
|
57
67
|
stop(): Promise<void>;
|
|
58
68
|
private ensureSchema;
|
|
@@ -72,7 +82,9 @@ export declare class KnowledgeGraph {
|
|
|
72
82
|
*/
|
|
73
83
|
getEntityByName(name: string): Promise<Entity | null>;
|
|
74
84
|
/**
|
|
75
|
-
* Get an entity by ID.
|
|
85
|
+
* Get an entity by ID, within this instance's scope. An id from another
|
|
86
|
+
* namespace or agent reads as "not found" rather than as data — ids are not
|
|
87
|
+
* capability tokens.
|
|
76
88
|
*/
|
|
77
89
|
getEntityById(id: string): Promise<Entity | null>;
|
|
78
90
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/knowledge-graph.js
CHANGED
|
@@ -15,9 +15,15 @@ export class KnowledgeGraph {
|
|
|
15
15
|
config;
|
|
16
16
|
agentId = '';
|
|
17
17
|
embeddingDimensions;
|
|
18
|
+
namespace;
|
|
18
19
|
constructor(config) {
|
|
19
20
|
this.config = config;
|
|
20
21
|
this.embeddingDimensions = config.embeddingDimensions ?? 1536;
|
|
22
|
+
this.namespace = config.namespace ?? 'default';
|
|
23
|
+
}
|
|
24
|
+
/** The dimension this instance's vector column was created with. */
|
|
25
|
+
get dimensions() {
|
|
26
|
+
return this.embeddingDimensions;
|
|
21
27
|
}
|
|
22
28
|
async start(agentId) {
|
|
23
29
|
this.agentId = agentId;
|
|
@@ -39,6 +45,7 @@ export class KnowledgeGraph {
|
|
|
39
45
|
CREATE TABLE IF NOT EXISTS kg_entities (
|
|
40
46
|
id TEXT PRIMARY KEY,
|
|
41
47
|
agent_id TEXT NOT NULL,
|
|
48
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
42
49
|
name TEXT NOT NULL,
|
|
43
50
|
entity_type TEXT NOT NULL DEFAULT 'general',
|
|
44
51
|
observations TEXT[] DEFAULT '{}',
|
|
@@ -48,10 +55,19 @@ export class KnowledgeGraph {
|
|
|
48
55
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
49
56
|
);
|
|
50
57
|
|
|
51
|
-
|
|
52
|
-
|
|
58
|
+
-- Pre-namespace deployments: add the column before any index references
|
|
59
|
+
-- it. Existing rows collapse into 'default', which is exactly what they
|
|
60
|
+
-- were — one undifferentiated pool.
|
|
61
|
+
ALTER TABLE kg_entities
|
|
62
|
+
ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT 'default';
|
|
63
|
+
|
|
64
|
+
-- Uniqueness is per namespace: two owners may both know an entity
|
|
65
|
+
-- called "user" without colliding.
|
|
66
|
+
DROP INDEX IF EXISTS idx_kg_entity_name_agent;
|
|
67
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_kg_entity_ns_agent_name
|
|
68
|
+
ON kg_entities(namespace, agent_id, name);
|
|
53
69
|
CREATE INDEX IF NOT EXISTS idx_kg_entity_type
|
|
54
|
-
ON kg_entities(agent_id, entity_type);
|
|
70
|
+
ON kg_entities(namespace, agent_id, entity_type);
|
|
55
71
|
CREATE INDEX IF NOT EXISTS idx_kg_entity_observations
|
|
56
72
|
ON kg_entities USING GIN(observations);
|
|
57
73
|
`);
|
|
@@ -59,6 +75,7 @@ export class KnowledgeGraph {
|
|
|
59
75
|
CREATE TABLE IF NOT EXISTS kg_relations (
|
|
60
76
|
id TEXT PRIMARY KEY,
|
|
61
77
|
agent_id TEXT NOT NULL,
|
|
78
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
62
79
|
from_entity TEXT NOT NULL,
|
|
63
80
|
to_entity TEXT NOT NULL,
|
|
64
81
|
relation_type TEXT NOT NULL,
|
|
@@ -73,8 +90,12 @@ export class KnowledgeGraph {
|
|
|
73
90
|
REFERENCES kg_entities(id) ON DELETE CASCADE
|
|
74
91
|
);
|
|
75
92
|
|
|
93
|
+
ALTER TABLE kg_relations
|
|
94
|
+
ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT 'default';
|
|
95
|
+
|
|
76
96
|
CREATE INDEX IF NOT EXISTS idx_kg_rel_from ON kg_relations(from_entity);
|
|
77
97
|
CREATE INDEX IF NOT EXISTS idx_kg_rel_to ON kg_relations(to_entity);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_kg_rel_scope ON kg_relations(namespace, agent_id);
|
|
78
99
|
CREATE INDEX IF NOT EXISTS idx_kg_rel_type ON kg_relations(relation_type);
|
|
79
100
|
CREATE INDEX IF NOT EXISTS idx_kg_rel_valid
|
|
80
101
|
ON kg_relations(valid_from, valid_until);
|
|
@@ -112,12 +133,27 @@ export class KnowledgeGraph {
|
|
|
112
133
|
await this.pool.query(`UPDATE kg_entities
|
|
113
134
|
SET observations = $1, metadata = $2, entity_type = $3,
|
|
114
135
|
embedding = $4::vector, updated_at = NOW()
|
|
115
|
-
WHERE id = $5
|
|
136
|
+
WHERE id = $5 AND namespace = $6 AND agent_id = $7`, [
|
|
137
|
+
mergedObs,
|
|
138
|
+
JSON.stringify(mergedMeta),
|
|
139
|
+
input.entityType,
|
|
140
|
+
embeddingStr,
|
|
141
|
+
existing.id,
|
|
142
|
+
this.namespace,
|
|
143
|
+
this.agentId,
|
|
144
|
+
]);
|
|
116
145
|
}
|
|
117
146
|
else {
|
|
118
147
|
await this.pool.query(`UPDATE kg_entities
|
|
119
148
|
SET observations = $1, metadata = $2, entity_type = $3, updated_at = NOW()
|
|
120
|
-
WHERE id = $4
|
|
149
|
+
WHERE id = $4 AND namespace = $5 AND agent_id = $6`, [
|
|
150
|
+
mergedObs,
|
|
151
|
+
JSON.stringify(mergedMeta),
|
|
152
|
+
input.entityType,
|
|
153
|
+
existing.id,
|
|
154
|
+
this.namespace,
|
|
155
|
+
this.agentId,
|
|
156
|
+
]);
|
|
121
157
|
}
|
|
122
158
|
return {
|
|
123
159
|
...existing,
|
|
@@ -132,10 +168,11 @@ export class KnowledgeGraph {
|
|
|
132
168
|
const embeddingStr = input.embedding
|
|
133
169
|
? `[${input.embedding.join(',')}]`
|
|
134
170
|
: null;
|
|
135
|
-
await this.pool.query(`INSERT INTO kg_entities (id, agent_id, name, entity_type, observations, embedding, metadata)
|
|
136
|
-
VALUES ($1, $2, $3, $4, $5, $6::vector, $
|
|
171
|
+
await this.pool.query(`INSERT INTO kg_entities (id, agent_id, namespace, name, entity_type, observations, embedding, metadata)
|
|
172
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7::vector, $8)`, [
|
|
137
173
|
id,
|
|
138
174
|
this.agentId,
|
|
175
|
+
this.namespace,
|
|
139
176
|
input.name,
|
|
140
177
|
input.entityType,
|
|
141
178
|
input.observations ?? [],
|
|
@@ -159,18 +196,20 @@ export class KnowledgeGraph {
|
|
|
159
196
|
async getEntityByName(name) {
|
|
160
197
|
if (!this.pool)
|
|
161
198
|
throw new Error('KnowledgeGraph not started');
|
|
162
|
-
const result = await this.pool.query('SELECT * FROM kg_entities WHERE
|
|
199
|
+
const result = await this.pool.query('SELECT * FROM kg_entities WHERE namespace = $1 AND agent_id = $2 AND name = $3', [this.namespace, this.agentId, name]);
|
|
163
200
|
if (result.rows.length === 0)
|
|
164
201
|
return null;
|
|
165
202
|
return this.rowToEntity(result.rows[0]);
|
|
166
203
|
}
|
|
167
204
|
/**
|
|
168
|
-
* Get an entity by ID.
|
|
205
|
+
* Get an entity by ID, within this instance's scope. An id from another
|
|
206
|
+
* namespace or agent reads as "not found" rather than as data — ids are not
|
|
207
|
+
* capability tokens.
|
|
169
208
|
*/
|
|
170
209
|
async getEntityById(id) {
|
|
171
210
|
if (!this.pool)
|
|
172
211
|
throw new Error('KnowledgeGraph not started');
|
|
173
|
-
const result = await this.pool.query('SELECT * FROM kg_entities WHERE id = $1', [id]);
|
|
212
|
+
const result = await this.pool.query('SELECT * FROM kg_entities WHERE id = $1 AND namespace = $2 AND agent_id = $3', [id, this.namespace, this.agentId]);
|
|
174
213
|
if (result.rows.length === 0)
|
|
175
214
|
return null;
|
|
176
215
|
return this.rowToEntity(result.rows[0]);
|
|
@@ -188,7 +227,8 @@ export class KnowledgeGraph {
|
|
|
188
227
|
if (newObs.length === 0)
|
|
189
228
|
return [];
|
|
190
229
|
const merged = [...entity.observations, ...newObs];
|
|
191
|
-
await this.pool.query(
|
|
230
|
+
await this.pool.query(`UPDATE kg_entities SET observations = $1, updated_at = NOW()
|
|
231
|
+
WHERE id = $2 AND namespace = $3 AND agent_id = $4`, [merged, entity.id, this.namespace, this.agentId]);
|
|
192
232
|
return newObs;
|
|
193
233
|
}
|
|
194
234
|
/**
|
|
@@ -201,7 +241,8 @@ export class KnowledgeGraph {
|
|
|
201
241
|
if (!entity)
|
|
202
242
|
return;
|
|
203
243
|
const filtered = entity.observations.filter((o) => !observations.includes(o));
|
|
204
|
-
await this.pool.query(
|
|
244
|
+
await this.pool.query(`UPDATE kg_entities SET observations = $1, updated_at = NOW()
|
|
245
|
+
WHERE id = $2 AND namespace = $3 AND agent_id = $4`, [filtered, entity.id, this.namespace, this.agentId]);
|
|
205
246
|
}
|
|
206
247
|
/**
|
|
207
248
|
* Delete an entity and all its relations (cascading).
|
|
@@ -209,7 +250,7 @@ export class KnowledgeGraph {
|
|
|
209
250
|
async deleteEntity(name) {
|
|
210
251
|
if (!this.pool)
|
|
211
252
|
throw new Error('KnowledgeGraph not started');
|
|
212
|
-
await this.pool.query('DELETE FROM kg_entities WHERE
|
|
253
|
+
await this.pool.query('DELETE FROM kg_entities WHERE namespace = $1 AND agent_id = $2 AND name = $3', [this.namespace, this.agentId, name]);
|
|
213
254
|
}
|
|
214
255
|
// ─── Relation CRUD ───
|
|
215
256
|
/**
|
|
@@ -229,17 +270,19 @@ export class KnowledgeGraph {
|
|
|
229
270
|
// Check for existing active relation of same type
|
|
230
271
|
const existing = await this.pool.query(`SELECT id FROM kg_relations
|
|
231
272
|
WHERE from_entity = $1 AND to_entity = $2
|
|
232
|
-
AND relation_type = $3 AND valid_until IS NULL
|
|
273
|
+
AND relation_type = $3 AND valid_until IS NULL
|
|
274
|
+
AND namespace = $4 AND agent_id = $5`, [fromEntity.id, toEntity.id, input.relationType, this.namespace, this.agentId]);
|
|
233
275
|
if (existing.rows.length > 0) {
|
|
234
276
|
// Identical active relation exists — skip
|
|
235
277
|
return null;
|
|
236
278
|
}
|
|
237
279
|
const id = `rel-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
238
280
|
const validFrom = input.validFrom ?? new Date();
|
|
239
|
-
await this.pool.query(`INSERT INTO kg_relations (id, agent_id, from_entity, to_entity, relation_type, weight, valid_from, metadata)
|
|
240
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`, [
|
|
281
|
+
await this.pool.query(`INSERT INTO kg_relations (id, agent_id, namespace, from_entity, to_entity, relation_type, weight, valid_from, metadata)
|
|
282
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`, [
|
|
241
283
|
id,
|
|
242
284
|
this.agentId,
|
|
285
|
+
this.namespace,
|
|
243
286
|
fromEntity.id,
|
|
244
287
|
toEntity.id,
|
|
245
288
|
input.relationType,
|
|
@@ -267,7 +310,8 @@ export class KnowledgeGraph {
|
|
|
267
310
|
async invalidateRelation(id) {
|
|
268
311
|
if (!this.pool)
|
|
269
312
|
throw new Error('KnowledgeGraph not started');
|
|
270
|
-
await this.pool.query(
|
|
313
|
+
await this.pool.query(`UPDATE kg_relations SET valid_until = NOW()
|
|
314
|
+
WHERE id = $1 AND namespace = $2 AND agent_id = $3`, [id, this.namespace, this.agentId]);
|
|
271
315
|
}
|
|
272
316
|
/**
|
|
273
317
|
* Delete a relation permanently (use invalidate for temporal preservation).
|
|
@@ -280,7 +324,8 @@ export class KnowledgeGraph {
|
|
|
280
324
|
if (!fromEntity || !toEntity)
|
|
281
325
|
return;
|
|
282
326
|
await this.pool.query(`DELETE FROM kg_relations
|
|
283
|
-
WHERE from_entity = $1 AND to_entity = $2 AND relation_type = $3
|
|
327
|
+
WHERE from_entity = $1 AND to_entity = $2 AND relation_type = $3
|
|
328
|
+
AND namespace = $4 AND agent_id = $5`, [fromEntity.id, toEntity.id, input.relationType, this.namespace, this.agentId]);
|
|
284
329
|
}
|
|
285
330
|
/**
|
|
286
331
|
* Get all active relations for an entity (as source or target).
|
|
@@ -302,8 +347,9 @@ export class KnowledgeGraph {
|
|
|
302
347
|
JOIN kg_entities fe ON r.from_entity = fe.id
|
|
303
348
|
JOIN kg_entities te ON r.to_entity = te.id
|
|
304
349
|
WHERE (r.from_entity = $1 OR r.to_entity = $1)
|
|
350
|
+
AND r.namespace = $2 AND r.agent_id = $3
|
|
305
351
|
${validClause}
|
|
306
|
-
ORDER BY r.valid_from DESC`, [entity.id]);
|
|
352
|
+
ORDER BY r.valid_from DESC`, [entity.id, this.namespace, this.agentId]);
|
|
307
353
|
return result.rows.map((row) => ({
|
|
308
354
|
...this.rowToRelation(row),
|
|
309
355
|
fromName: row.from_name,
|
|
@@ -317,9 +363,9 @@ export class KnowledgeGraph {
|
|
|
317
363
|
async searchEntities(options = {}) {
|
|
318
364
|
if (!this.pool)
|
|
319
365
|
throw new Error('KnowledgeGraph not started');
|
|
320
|
-
const conditions = ['
|
|
321
|
-
const params = [this.agentId];
|
|
322
|
-
let idx =
|
|
366
|
+
const conditions = ['namespace = $1', 'agent_id = $2'];
|
|
367
|
+
const params = [this.namespace, this.agentId];
|
|
368
|
+
let idx = 3;
|
|
323
369
|
if (options.entityType) {
|
|
324
370
|
conditions.push(`entity_type = $${idx}`);
|
|
325
371
|
params.push(options.entityType);
|
|
@@ -344,9 +390,9 @@ export class KnowledgeGraph {
|
|
|
344
390
|
async searchEntitiesByEmbedding(queryEmbedding, options = {}) {
|
|
345
391
|
if (!this.pool)
|
|
346
392
|
throw new Error('KnowledgeGraph not started');
|
|
347
|
-
const conditions = ['
|
|
348
|
-
const params = [this.agentId];
|
|
349
|
-
let idx =
|
|
393
|
+
const conditions = ['namespace = $1', 'agent_id = $2', 'embedding IS NOT NULL'];
|
|
394
|
+
const params = [this.namespace, this.agentId];
|
|
395
|
+
let idx = 3;
|
|
350
396
|
if (options.entityType) {
|
|
351
397
|
conditions.push(`entity_type = $${idx}`);
|
|
352
398
|
params.push(options.entityType);
|
|
@@ -378,7 +424,7 @@ export class KnowledgeGraph {
|
|
|
378
424
|
return { entities: [], relations: [] };
|
|
379
425
|
// Get entities
|
|
380
426
|
const entityResult = await this.pool.query(`SELECT * FROM kg_entities
|
|
381
|
-
WHERE
|
|
427
|
+
WHERE namespace = $1 AND agent_id = $2 AND name = ANY($3)`, [this.namespace, this.agentId, names]);
|
|
382
428
|
const entities = entityResult.rows.map(this.rowToEntity);
|
|
383
429
|
const entityIds = entities.map((e) => e.id);
|
|
384
430
|
if (entityIds.length === 0)
|
|
@@ -387,7 +433,8 @@ export class KnowledgeGraph {
|
|
|
387
433
|
const relResult = await this.pool.query(`SELECT * FROM kg_relations
|
|
388
434
|
WHERE (from_entity = ANY($1) OR to_entity = ANY($1))
|
|
389
435
|
AND valid_until IS NULL
|
|
390
|
-
|
|
436
|
+
AND namespace = $2 AND agent_id = $3
|
|
437
|
+
ORDER BY valid_from DESC`, [entityIds, this.namespace, this.agentId]);
|
|
391
438
|
const relations = relResult.rows.map(this.rowToRelation);
|
|
392
439
|
return { entities, relations };
|
|
393
440
|
}
|
|
@@ -397,11 +444,12 @@ export class KnowledgeGraph {
|
|
|
397
444
|
async readGraph(options = {}) {
|
|
398
445
|
if (!this.pool)
|
|
399
446
|
throw new Error('KnowledgeGraph not started');
|
|
400
|
-
const entityResult = await this.pool.query('SELECT * FROM kg_entities WHERE
|
|
447
|
+
const entityResult = await this.pool.query('SELECT * FROM kg_entities WHERE namespace = $1 AND agent_id = $2 ORDER BY name', [this.namespace, this.agentId]);
|
|
401
448
|
const validClause = options.includeExpired
|
|
402
449
|
? ''
|
|
403
450
|
: 'AND valid_until IS NULL';
|
|
404
|
-
const relResult = await this.pool.query(`SELECT * FROM kg_relations WHERE
|
|
451
|
+
const relResult = await this.pool.query(`SELECT * FROM kg_relations WHERE namespace = $1 AND agent_id = $2 ${validClause}
|
|
452
|
+
ORDER BY valid_from DESC`, [this.namespace, this.agentId]);
|
|
405
453
|
return {
|
|
406
454
|
entities: entityResult.rows.map(this.rowToEntity),
|
|
407
455
|
relations: relResult.rows.map(this.rowToRelation),
|
|
@@ -418,9 +466,10 @@ export class KnowledgeGraph {
|
|
|
418
466
|
'agent_id = $1',
|
|
419
467
|
'valid_from <= $2',
|
|
420
468
|
'(valid_until IS NULL OR valid_until > $2)',
|
|
469
|
+
'namespace = $3',
|
|
421
470
|
];
|
|
422
|
-
const params = [this.agentId, date];
|
|
423
|
-
const idx =
|
|
471
|
+
const params = [this.agentId, date, this.namespace];
|
|
472
|
+
const idx = 4;
|
|
424
473
|
if (options.entityName) {
|
|
425
474
|
const entity = await this.getEntityByName(options.entityName);
|
|
426
475
|
if (!entity)
|
|
@@ -443,7 +492,8 @@ export class KnowledgeGraph {
|
|
|
443
492
|
return [];
|
|
444
493
|
const result = await this.pool.query(`SELECT * FROM kg_relations
|
|
445
494
|
WHERE from_entity = $1 AND to_entity = $2 AND relation_type = $3
|
|
446
|
-
|
|
495
|
+
AND namespace = $4 AND agent_id = $5
|
|
496
|
+
ORDER BY valid_from DESC`, [fromEntity.id, toEntity.id, relationType, this.namespace, this.agentId]);
|
|
447
497
|
return result.rows.map(this.rowToRelation);
|
|
448
498
|
}
|
|
449
499
|
// ─── Contradiction Detection ───
|
|
@@ -461,7 +511,8 @@ export class KnowledgeGraph {
|
|
|
461
511
|
// Invalidate existing active relation
|
|
462
512
|
await this.pool.query(`UPDATE kg_relations SET valid_until = NOW()
|
|
463
513
|
WHERE from_entity = $1 AND to_entity = $2
|
|
464
|
-
AND relation_type = $3 AND valid_until IS NULL
|
|
514
|
+
AND relation_type = $3 AND valid_until IS NULL
|
|
515
|
+
AND namespace = $4 AND agent_id = $5`, [fromEntity.id, toEntity.id, input.relationType, this.namespace, this.agentId]);
|
|
465
516
|
// Create the new one
|
|
466
517
|
return this.createRelation(input);
|
|
467
518
|
}
|
|
@@ -473,8 +524,8 @@ export class KnowledgeGraph {
|
|
|
473
524
|
if (!this.pool)
|
|
474
525
|
throw new Error('KnowledgeGraph not started');
|
|
475
526
|
const result = await this.pool.query(`SELECT entity_type, COUNT(*)::int as count
|
|
476
|
-
FROM kg_entities WHERE agent_id = $
|
|
477
|
-
GROUP BY entity_type ORDER BY count DESC`, [this.agentId]);
|
|
527
|
+
FROM kg_entities WHERE namespace = $1 AND agent_id = $2
|
|
528
|
+
GROUP BY entity_type ORDER BY count DESC`, [this.namespace, this.agentId]);
|
|
478
529
|
const counts = {};
|
|
479
530
|
for (const row of result.rows) {
|
|
480
531
|
counts[row.entity_type] = row.count;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/ltm.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ export interface LTMConfig {
|
|
|
2
2
|
connectionString: string;
|
|
3
3
|
/** Embedding dimensions (default: 1536 for OpenAI text-embedding-3-small) */
|
|
4
4
|
embeddingDimensions?: number;
|
|
5
|
+
/**
|
|
6
|
+
* Isolation boundary for every row this instance reads or writes. Hosts
|
|
7
|
+
* serving more than one owner MUST set it — the table is shared.
|
|
8
|
+
*/
|
|
9
|
+
namespace?: string;
|
|
5
10
|
}
|
|
6
11
|
export interface KnowledgeFact {
|
|
7
12
|
id: string;
|
|
@@ -25,7 +30,10 @@ export declare class LongTermMemory {
|
|
|
25
30
|
private config;
|
|
26
31
|
private agentId;
|
|
27
32
|
private embeddingDimensions;
|
|
33
|
+
private namespace;
|
|
28
34
|
constructor(config: LTMConfig);
|
|
35
|
+
/** The dimension this instance's vector column was created with. */
|
|
36
|
+
get dimensions(): number;
|
|
29
37
|
start(agentId: string): Promise<void>;
|
|
30
38
|
stop(): Promise<void>;
|
|
31
39
|
private ensureSchema;
|
|
@@ -60,7 +68,8 @@ export declare class LongTermMemory {
|
|
|
60
68
|
limit?: number;
|
|
61
69
|
}): Promise<KnowledgeFact[]>;
|
|
62
70
|
/**
|
|
63
|
-
* Get a fact by ID.
|
|
71
|
+
* Get a fact by ID, within this instance's scope. An id belonging to another
|
|
72
|
+
* namespace or agent reads as "not found" — ids are not capability tokens.
|
|
64
73
|
*/
|
|
65
74
|
getById(id: string): Promise<KnowledgeFact | null>;
|
|
66
75
|
/**
|
package/dist/ltm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltm.d.ts","sourceRoot":"","sources":["../src/ltm.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ltm.d.ts","sourceRoot":"","sources":["../src/ltm.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,SAAS;IAM7B,oEAAoE;IACpE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,YAAY;IA2C1B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BnB;;OAEG;IACG,MAAM,CACV,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,CAAC,aAAa,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAmDtD;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GACL,OAAO,CAAC,aAAa,EAAE,CAAC;IA0C3B;;;OAGG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYxD;;OAEG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,OAAO,CAAC,SAAS;CAYlB"}
|
package/dist/ltm.js
CHANGED
|
@@ -11,9 +11,15 @@ export class LongTermMemory {
|
|
|
11
11
|
config;
|
|
12
12
|
agentId = '';
|
|
13
13
|
embeddingDimensions;
|
|
14
|
+
namespace;
|
|
14
15
|
constructor(config) {
|
|
15
16
|
this.config = config;
|
|
16
17
|
this.embeddingDimensions = config.embeddingDimensions ?? 1536;
|
|
18
|
+
this.namespace = config.namespace ?? 'default';
|
|
19
|
+
}
|
|
20
|
+
/** The dimension this instance's vector column was created with. */
|
|
21
|
+
get dimensions() {
|
|
22
|
+
return this.embeddingDimensions;
|
|
17
23
|
}
|
|
18
24
|
async start(agentId) {
|
|
19
25
|
this.agentId = agentId;
|
|
@@ -35,6 +41,7 @@ export class LongTermMemory {
|
|
|
35
41
|
CREATE TABLE IF NOT EXISTS ltm_knowledge (
|
|
36
42
|
id TEXT PRIMARY KEY,
|
|
37
43
|
agent_id TEXT NOT NULL,
|
|
44
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
38
45
|
content TEXT NOT NULL,
|
|
39
46
|
category TEXT NOT NULL DEFAULT 'general',
|
|
40
47
|
tags TEXT[] DEFAULT '{}',
|
|
@@ -44,7 +51,12 @@ export class LongTermMemory {
|
|
|
44
51
|
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
45
52
|
);
|
|
46
53
|
|
|
47
|
-
|
|
54
|
+
-- Pre-namespace deployments: existing rows collapse into 'default',
|
|
55
|
+
-- which is what they already were — one undifferentiated pool.
|
|
56
|
+
ALTER TABLE ltm_knowledge
|
|
57
|
+
ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT 'default';
|
|
58
|
+
|
|
59
|
+
CREATE INDEX IF NOT EXISTS idx_ltm_agent_id ON ltm_knowledge(namespace, agent_id);
|
|
48
60
|
CREATE INDEX IF NOT EXISTS idx_ltm_category ON ltm_knowledge(category);
|
|
49
61
|
CREATE INDEX IF NOT EXISTS idx_ltm_tags ON ltm_knowledge USING GIN(tags);
|
|
50
62
|
`);
|
|
@@ -71,10 +83,11 @@ export class LongTermMemory {
|
|
|
71
83
|
const embeddingStr = fact.embedding
|
|
72
84
|
? `[${fact.embedding.join(',')}]`
|
|
73
85
|
: null;
|
|
74
|
-
await this.pool.query(`INSERT INTO ltm_knowledge (id, agent_id, content, category, tags, embedding, metadata)
|
|
75
|
-
VALUES ($1, $2, $3, $4, $5, $6::vector, $
|
|
86
|
+
await this.pool.query(`INSERT INTO ltm_knowledge (id, agent_id, namespace, content, category, tags, embedding, metadata)
|
|
87
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7::vector, $8)`, [
|
|
76
88
|
id,
|
|
77
89
|
this.agentId,
|
|
90
|
+
this.namespace,
|
|
78
91
|
fact.content,
|
|
79
92
|
fact.category ?? 'general',
|
|
80
93
|
fact.tags ?? [],
|
|
@@ -92,6 +105,11 @@ export class LongTermMemory {
|
|
|
92
105
|
const conditions = ['embedding IS NOT NULL'];
|
|
93
106
|
const params = [];
|
|
94
107
|
let idx = 1;
|
|
108
|
+
// The namespace is never caller-overridable: `options.agentId` may reach
|
|
109
|
+
// across agents, but only ever within this instance's own boundary.
|
|
110
|
+
conditions.push(`namespace = $${idx}`);
|
|
111
|
+
params.push(this.namespace);
|
|
112
|
+
idx++;
|
|
95
113
|
conditions.push(`agent_id = $${idx}`);
|
|
96
114
|
params.push(options.agentId ?? this.agentId);
|
|
97
115
|
idx++;
|
|
@@ -130,6 +148,9 @@ export class LongTermMemory {
|
|
|
130
148
|
const conditions = [];
|
|
131
149
|
const params = [];
|
|
132
150
|
let idx = 1;
|
|
151
|
+
conditions.push(`namespace = $${idx}`);
|
|
152
|
+
params.push(this.namespace);
|
|
153
|
+
idx++;
|
|
133
154
|
conditions.push(`agent_id = $${idx}`);
|
|
134
155
|
params.push(this.agentId);
|
|
135
156
|
idx++;
|
|
@@ -152,12 +173,13 @@ export class LongTermMemory {
|
|
|
152
173
|
return result.rows.map(this.rowToFact);
|
|
153
174
|
}
|
|
154
175
|
/**
|
|
155
|
-
* Get a fact by ID.
|
|
176
|
+
* Get a fact by ID, within this instance's scope. An id belonging to another
|
|
177
|
+
* namespace or agent reads as "not found" — ids are not capability tokens.
|
|
156
178
|
*/
|
|
157
179
|
async getById(id) {
|
|
158
180
|
if (!this.pool)
|
|
159
181
|
throw new Error('LTM not started');
|
|
160
|
-
const result = await this.pool.query('SELECT * FROM ltm_knowledge WHERE id = $1', [id]);
|
|
182
|
+
const result = await this.pool.query('SELECT * FROM ltm_knowledge WHERE id = $1 AND namespace = $2 AND agent_id = $3', [id, this.namespace, this.agentId]);
|
|
161
183
|
if (result.rows.length === 0)
|
|
162
184
|
return null;
|
|
163
185
|
return this.rowToFact(result.rows[0]);
|
|
@@ -196,8 +218,9 @@ export class LongTermMemory {
|
|
|
196
218
|
params.push(JSON.stringify(updates.metadata));
|
|
197
219
|
idx++;
|
|
198
220
|
}
|
|
199
|
-
params.push(id);
|
|
200
|
-
await this.pool.query(`UPDATE ltm_knowledge SET ${sets.join(', ')}
|
|
221
|
+
params.push(id, this.namespace, this.agentId);
|
|
222
|
+
await this.pool.query(`UPDATE ltm_knowledge SET ${sets.join(', ')}
|
|
223
|
+
WHERE id = $${idx} AND namespace = $${idx + 1} AND agent_id = $${idx + 2}`, params);
|
|
201
224
|
}
|
|
202
225
|
/**
|
|
203
226
|
* Delete a fact.
|
|
@@ -205,7 +228,7 @@ export class LongTermMemory {
|
|
|
205
228
|
async forget(id) {
|
|
206
229
|
if (!this.pool)
|
|
207
230
|
throw new Error('LTM not started');
|
|
208
|
-
await this.pool.query('DELETE FROM ltm_knowledge WHERE id = $1', [id]);
|
|
231
|
+
await this.pool.query('DELETE FROM ltm_knowledge WHERE id = $1 AND namespace = $2 AND agent_id = $3', [id, this.namespace, this.agentId]);
|
|
209
232
|
}
|
|
210
233
|
rowToFact(row) {
|
|
211
234
|
return {
|
package/dist/ltm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltm.js","sourceRoot":"","sources":["../src/ltm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ltm.js","sourceRoot":"","sources":["../src/ltm.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -9,6 +9,28 @@ export interface MemoryManagerConfig {
|
|
|
9
9
|
ltm: LTMConfig;
|
|
10
10
|
/** Optional knowledge graph config. When provided, enables KG features. */
|
|
11
11
|
kg?: KGConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Isolation boundary applied to the Postgres-backed tiers. Set it once here
|
|
14
|
+
* rather than on each store; a per-store `namespace` still wins if given.
|
|
15
|
+
*/
|
|
16
|
+
namespace?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Turns a piece of text into a vector. Supplying it is what makes semantic
|
|
19
|
+
* storage and recall real — without it facts are still stored and still
|
|
20
|
+
* searchable, just by substring rather than by meaning.
|
|
21
|
+
*/
|
|
22
|
+
embed?: (text: string) => Promise<number[]>;
|
|
23
|
+
/** Reports why semantic memory was disabled, for host logs and status UI. */
|
|
24
|
+
onSemanticUnavailable?: (reason: string) => void;
|
|
25
|
+
}
|
|
26
|
+
/** What the boot probe concluded about semantic memory. */
|
|
27
|
+
export interface SemanticStatus {
|
|
28
|
+
/** True only if an embedder is configured AND the probe agreed with the column. */
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
/** Vector width the embedder actually returned, once probed. */
|
|
31
|
+
dimensions: number | null;
|
|
32
|
+
/** Why it is off, when it is off. */
|
|
33
|
+
reason: string | null;
|
|
12
34
|
}
|
|
13
35
|
export interface ContextBlock {
|
|
14
36
|
source: 'system' | 'stm' | 'mtm' | 'ltm' | 'kg';
|
|
@@ -28,8 +50,26 @@ export declare class MemoryManager {
|
|
|
28
50
|
readonly ltm: LongTermMemory;
|
|
29
51
|
readonly kg: KnowledgeGraph | null;
|
|
30
52
|
private agentId;
|
|
53
|
+
private readonly embedFn?;
|
|
54
|
+
private readonly onSemanticUnavailable?;
|
|
55
|
+
private semantic;
|
|
31
56
|
constructor(config: MemoryManagerConfig);
|
|
57
|
+
/** What the boot probe concluded. Hosts surface this so a silent downgrade is visible. */
|
|
58
|
+
get semanticStatus(): SemanticStatus;
|
|
32
59
|
start(agentId: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Ask the embedder for one vector and check its width against the column the
|
|
62
|
+
* tables were created with. Done once at boot rather than lazily, because the
|
|
63
|
+
* alternative is discovering a misconfiguration as a failed INSERT halfway
|
|
64
|
+
* through a conversation. A failure here downgrades to substring search; it
|
|
65
|
+
* never prevents the agent from starting.
|
|
66
|
+
*/
|
|
67
|
+
private probeEmbedder;
|
|
68
|
+
/**
|
|
69
|
+
* Embed text for storage or recall, or null when semantic memory is off.
|
|
70
|
+
* Callers treat null as "carry on without a vector" — never as an error.
|
|
71
|
+
*/
|
|
72
|
+
embed(text: string): Promise<number[] | null>;
|
|
33
73
|
stop(): Promise<void>;
|
|
34
74
|
/**
|
|
35
75
|
* Log an entry to the session's short-term memory.
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAuB,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAsB,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,SAAS,CAAC;IACf,GAAG,EAAE,SAAS,CAAC;IACf,2EAA2E;IAC3E,EAAE,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.js
CHANGED
|
@@ -15,11 +15,28 @@ export class MemoryManager {
|
|
|
15
15
|
ltm;
|
|
16
16
|
kg;
|
|
17
17
|
agentId = '';
|
|
18
|
+
embedFn;
|
|
19
|
+
onSemanticUnavailable;
|
|
20
|
+
semantic;
|
|
18
21
|
constructor(config) {
|
|
22
|
+
const ns = config.namespace;
|
|
19
23
|
this.stm = new ShortTermMemory(config.stm);
|
|
20
|
-
this.mtm = new MidTermMemory(config.mtm);
|
|
21
|
-
this.ltm = new LongTermMemory(config.ltm);
|
|
22
|
-
this.kg = config.kg
|
|
24
|
+
this.mtm = new MidTermMemory({ ...config.mtm, namespace: config.mtm.namespace ?? ns });
|
|
25
|
+
this.ltm = new LongTermMemory({ ...config.ltm, namespace: config.ltm.namespace ?? ns });
|
|
26
|
+
this.kg = config.kg
|
|
27
|
+
? new KnowledgeGraph({ ...config.kg, namespace: config.kg.namespace ?? ns })
|
|
28
|
+
: null;
|
|
29
|
+
this.embedFn = config.embed;
|
|
30
|
+
this.onSemanticUnavailable = config.onSemanticUnavailable;
|
|
31
|
+
this.semantic = {
|
|
32
|
+
enabled: false,
|
|
33
|
+
dimensions: null,
|
|
34
|
+
reason: config.embed ? 'not probed yet' : 'no embedder configured',
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** What the boot probe concluded. Hosts surface this so a silent downgrade is visible. */
|
|
38
|
+
get semanticStatus() {
|
|
39
|
+
return { ...this.semantic };
|
|
23
40
|
}
|
|
24
41
|
async start(agentId) {
|
|
25
42
|
this.agentId = agentId;
|
|
@@ -31,6 +48,63 @@ export class MemoryManager {
|
|
|
31
48
|
if (this.kg)
|
|
32
49
|
inits.push(this.kg.start(agentId));
|
|
33
50
|
await Promise.all(inits);
|
|
51
|
+
await this.probeEmbedder();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Ask the embedder for one vector and check its width against the column the
|
|
55
|
+
* tables were created with. Done once at boot rather than lazily, because the
|
|
56
|
+
* alternative is discovering a misconfiguration as a failed INSERT halfway
|
|
57
|
+
* through a conversation. A failure here downgrades to substring search; it
|
|
58
|
+
* never prevents the agent from starting.
|
|
59
|
+
*/
|
|
60
|
+
async probeEmbedder() {
|
|
61
|
+
if (!this.embedFn)
|
|
62
|
+
return;
|
|
63
|
+
const expected = this.ltm.dimensions;
|
|
64
|
+
// Both vector columns are written with the same embedder, so a split
|
|
65
|
+
// between them can only ever produce failed inserts on one of the two.
|
|
66
|
+
if (this.kg && this.kg.dimensions !== expected) {
|
|
67
|
+
const reason = `memory tiers disagree on vector width (ltm ${expected}, kg ${this.kg.dimensions})`;
|
|
68
|
+
this.semantic = { enabled: false, dimensions: null, reason };
|
|
69
|
+
this.onSemanticUnavailable?.(reason);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
let reason;
|
|
73
|
+
try {
|
|
74
|
+
const vector = await this.embedFn('probe');
|
|
75
|
+
if (!Array.isArray(vector) || vector.length === 0) {
|
|
76
|
+
reason = 'embedder returned no vector';
|
|
77
|
+
}
|
|
78
|
+
else if (vector.length !== expected) {
|
|
79
|
+
reason =
|
|
80
|
+
`embedder returns ${vector.length}-dim vectors but the column is ${expected}-dim — ` +
|
|
81
|
+
'point it at a matching model, or recreate the memory tables at the new width';
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.semantic = { enabled: true, dimensions: vector.length, reason: null };
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
reason = `embedder unavailable: ${err instanceof Error ? err.message : String(err)}`;
|
|
90
|
+
}
|
|
91
|
+
this.semantic = { enabled: false, dimensions: null, reason };
|
|
92
|
+
this.onSemanticUnavailable?.(reason);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Embed text for storage or recall, or null when semantic memory is off.
|
|
96
|
+
* Callers treat null as "carry on without a vector" — never as an error.
|
|
97
|
+
*/
|
|
98
|
+
async embed(text) {
|
|
99
|
+
if (!this.semantic.enabled || !this.embedFn)
|
|
100
|
+
return null;
|
|
101
|
+
try {
|
|
102
|
+
return await this.embedFn(text);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// A transient provider failure degrades this one call, not the agent.
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
34
108
|
}
|
|
35
109
|
async stop() {
|
|
36
110
|
const stops = [
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAuC,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAsC,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/memory-tools.js
CHANGED
|
@@ -10,8 +10,8 @@ export function createMemoryTools(manager) {
|
|
|
10
10
|
if (!kg)
|
|
11
11
|
return [];
|
|
12
12
|
return [
|
|
13
|
-
searchKnowledgeTool(kg),
|
|
14
|
-
storFactTool(kg),
|
|
13
|
+
searchKnowledgeTool(kg, manager),
|
|
14
|
+
storFactTool(kg, manager),
|
|
15
15
|
recallEntityTool(kg),
|
|
16
16
|
relateEntitiesTool(kg),
|
|
17
17
|
listEntitiesTool(kg),
|
|
@@ -19,25 +19,37 @@ export function createMemoryTools(manager) {
|
|
|
19
19
|
];
|
|
20
20
|
}
|
|
21
21
|
// ─── Tool Definitions ───
|
|
22
|
-
function searchKnowledgeTool(kg) {
|
|
22
|
+
function searchKnowledgeTool(kg, manager) {
|
|
23
23
|
return {
|
|
24
24
|
name: 'search_knowledge',
|
|
25
|
-
description: 'Search
|
|
26
|
-
'Use this
|
|
27
|
-
'or
|
|
25
|
+
description: 'Search stored knowledge for entities, facts, and relationships. ' +
|
|
26
|
+
'Use this whenever answering might depend on something learned earlier — ' +
|
|
27
|
+
'a preference, a decision, a detail about a person or project — rather than ' +
|
|
28
|
+
'assuming you were never told. Matches by meaning, so phrase the query as ' +
|
|
29
|
+
'the question you are trying to answer.',
|
|
28
30
|
parameters: z.object({
|
|
29
|
-
query: z.string().describe('
|
|
31
|
+
query: z.string().describe('What you are trying to recall, phrased naturally'),
|
|
30
32
|
entityType: z.string().optional().describe('Filter by entity type (e.g., "person", "tool", "concept")'),
|
|
31
33
|
limit: z.number().optional().describe('Max results to return (default: 10)'),
|
|
32
34
|
}),
|
|
33
35
|
visibility: 'internal',
|
|
34
36
|
handler: async (params) => {
|
|
35
37
|
const { query, entityType, limit } = params;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
// Semantic first, so "what does he like to drink" can reach a fact
|
|
39
|
+
// stored as "prefers espresso". Substring search cannot span that gap,
|
|
40
|
+
// but it is a real fallback rather than an error when there is no
|
|
41
|
+
// embedder — and also when the query simply matches nothing by meaning.
|
|
42
|
+
const queryVector = await manager.embed(query);
|
|
43
|
+
let entities = queryVector
|
|
44
|
+
? await kg.searchEntitiesByEmbedding(queryVector, { entityType, limit: limit ?? 10 })
|
|
45
|
+
: [];
|
|
46
|
+
if (entities.length === 0) {
|
|
47
|
+
entities = await kg.searchEntities({
|
|
48
|
+
query,
|
|
49
|
+
entityType,
|
|
50
|
+
limit: limit ?? 10,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
41
53
|
if (entities.length === 0) {
|
|
42
54
|
return { found: false, message: 'No matching knowledge found.' };
|
|
43
55
|
}
|
|
@@ -59,7 +71,7 @@ function searchKnowledgeTool(kg) {
|
|
|
59
71
|
},
|
|
60
72
|
};
|
|
61
73
|
}
|
|
62
|
-
function storFactTool(kg) {
|
|
74
|
+
function storFactTool(kg, manager) {
|
|
63
75
|
return {
|
|
64
76
|
name: 'store_fact',
|
|
65
77
|
description: 'Store a new fact or observation about an entity in long-term memory. ' +
|
|
@@ -73,10 +85,23 @@ function storFactTool(kg) {
|
|
|
73
85
|
visibility: 'internal',
|
|
74
86
|
handler: async (params) => {
|
|
75
87
|
const { entityName, entityType, observations } = params;
|
|
88
|
+
// Embed the entity together with its observations: recall works on what
|
|
89
|
+
// a fact *says*, and a bare name like "user" carries almost no signal.
|
|
90
|
+
// upsertEntity MERGES into any existing entity, so the vector has to
|
|
91
|
+
// describe the merged result — embedding only the incoming observations
|
|
92
|
+
// would make an updated entity findable by its newest fact alone.
|
|
93
|
+
// A null vector (no embedder, or a transient failure) still stores the
|
|
94
|
+
// fact; it just stays reachable by substring only.
|
|
95
|
+
const existing = await kg.getEntityByName(entityName);
|
|
96
|
+
const merged = existing
|
|
97
|
+
? [...existing.observations, ...observations.filter((o) => !existing.observations.includes(o))]
|
|
98
|
+
: observations;
|
|
99
|
+
const embedding = await manager.embed([entityName, entityType, ...merged].join(' — '));
|
|
76
100
|
const entity = await kg.upsertEntity({
|
|
77
101
|
name: entityName,
|
|
78
102
|
entityType,
|
|
79
103
|
observations,
|
|
104
|
+
...(embedding ? { embedding } : {}),
|
|
80
105
|
});
|
|
81
106
|
return {
|
|
82
107
|
stored: true,
|
package/dist/memory-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAsB;IAEtB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAEnB,OAAO;QACL,mBAAmB,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/mtm.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export interface MTMConfig {
|
|
2
2
|
connectionString: string;
|
|
3
|
+
/**
|
|
4
|
+
* Isolation boundary for every row this instance reads or writes. Hosts
|
|
5
|
+
* serving more than one owner MUST set it — the table is shared.
|
|
6
|
+
*/
|
|
7
|
+
namespace?: string;
|
|
3
8
|
}
|
|
4
9
|
export interface EpisodicMemory {
|
|
5
10
|
id: string;
|
|
@@ -24,6 +29,7 @@ export declare class MidTermMemory {
|
|
|
24
29
|
private pool;
|
|
25
30
|
private config;
|
|
26
31
|
private agentId;
|
|
32
|
+
private namespace;
|
|
27
33
|
constructor(config: MTMConfig);
|
|
28
34
|
start(agentId: string): Promise<void>;
|
|
29
35
|
stop(): Promise<void>;
|
|
@@ -43,7 +49,8 @@ export declare class MidTermMemory {
|
|
|
43
49
|
sinceDate?: Date;
|
|
44
50
|
}): Promise<EpisodicMemory[]>;
|
|
45
51
|
/**
|
|
46
|
-
* Get a specific episode by ID.
|
|
52
|
+
* Get a specific episode by ID, within this instance's scope. An id from
|
|
53
|
+
* another namespace or agent reads as "not found".
|
|
47
54
|
*/
|
|
48
55
|
getById(id: string): Promise<EpisodicMemory | null>;
|
|
49
56
|
/**
|
package/dist/mtm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtm.d.ts","sourceRoot":"","sources":["../src/mtm.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mtm.d.ts","sourceRoot":"","sources":["../src/mtm.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,SAAS;IAKvB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAOb,YAAY;IA4B1B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBtF;;OAEG;IACG,SAAS,CAAC,OAAO,GAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,IAAI,CAAC;KACb,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA+ClC;;;OAGG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAYzD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvC,OAAO,CAAC,YAAY;CAcrB"}
|
package/dist/mtm.js
CHANGED
|
@@ -11,8 +11,10 @@ export class MidTermMemory {
|
|
|
11
11
|
pool = null;
|
|
12
12
|
config;
|
|
13
13
|
agentId = '';
|
|
14
|
+
namespace;
|
|
14
15
|
constructor(config) {
|
|
15
16
|
this.config = config;
|
|
17
|
+
this.namespace = config.namespace ?? 'default';
|
|
16
18
|
}
|
|
17
19
|
async start(agentId) {
|
|
18
20
|
this.agentId = agentId;
|
|
@@ -32,6 +34,7 @@ export class MidTermMemory {
|
|
|
32
34
|
CREATE TABLE IF NOT EXISTS mtm_episodes (
|
|
33
35
|
id TEXT PRIMARY KEY,
|
|
34
36
|
agent_id TEXT NOT NULL,
|
|
37
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
35
38
|
session_id TEXT NOT NULL,
|
|
36
39
|
summary TEXT NOT NULL,
|
|
37
40
|
tags TEXT[] DEFAULT '{}',
|
|
@@ -42,7 +45,10 @@ export class MidTermMemory {
|
|
|
42
45
|
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
43
46
|
);
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
ALTER TABLE mtm_episodes
|
|
49
|
+
ADD COLUMN IF NOT EXISTS namespace TEXT NOT NULL DEFAULT 'default';
|
|
50
|
+
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_mtm_agent_id ON mtm_episodes(namespace, agent_id);
|
|
46
52
|
CREATE INDEX IF NOT EXISTS idx_mtm_domain ON mtm_episodes(domain);
|
|
47
53
|
CREATE INDEX IF NOT EXISTS idx_mtm_tags ON mtm_episodes USING GIN(tags);
|
|
48
54
|
CREATE INDEX IF NOT EXISTS idx_mtm_started_at ON mtm_episodes(started_at DESC);
|
|
@@ -55,10 +61,11 @@ export class MidTermMemory {
|
|
|
55
61
|
if (!this.pool)
|
|
56
62
|
throw new Error('MTM not started');
|
|
57
63
|
const id = `ep-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
58
|
-
await this.pool.query(`INSERT INTO mtm_episodes (id, agent_id, session_id, summary, tags, domain, started_at, ended_at, metadata)
|
|
59
|
-
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`, [
|
|
64
|
+
await this.pool.query(`INSERT INTO mtm_episodes (id, agent_id, namespace, session_id, summary, tags, domain, started_at, ended_at, metadata)
|
|
65
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)`, [
|
|
60
66
|
id,
|
|
61
67
|
episode.agentId,
|
|
68
|
+
this.namespace,
|
|
62
69
|
episode.sessionId,
|
|
63
70
|
episode.summary,
|
|
64
71
|
episode.tags,
|
|
@@ -78,6 +85,11 @@ export class MidTermMemory {
|
|
|
78
85
|
const conditions = [];
|
|
79
86
|
const params = [];
|
|
80
87
|
let idx = 1;
|
|
88
|
+
// The namespace is never caller-overridable: `options.agentId` may reach
|
|
89
|
+
// across agents, but only ever within this instance's own boundary.
|
|
90
|
+
conditions.push(`namespace = $${idx}`);
|
|
91
|
+
params.push(this.namespace);
|
|
92
|
+
idx++;
|
|
81
93
|
// Default to current agent
|
|
82
94
|
conditions.push(`agent_id = $${idx}`);
|
|
83
95
|
params.push(options.agentId ?? this.agentId);
|
|
@@ -103,12 +115,13 @@ export class MidTermMemory {
|
|
|
103
115
|
return result.rows.map(this.rowToEpisode);
|
|
104
116
|
}
|
|
105
117
|
/**
|
|
106
|
-
* Get a specific episode by ID.
|
|
118
|
+
* Get a specific episode by ID, within this instance's scope. An id from
|
|
119
|
+
* another namespace or agent reads as "not found".
|
|
107
120
|
*/
|
|
108
121
|
async getById(id) {
|
|
109
122
|
if (!this.pool)
|
|
110
123
|
throw new Error('MTM not started');
|
|
111
|
-
const result = await this.pool.query('SELECT * FROM mtm_episodes WHERE id = $1', [id]);
|
|
124
|
+
const result = await this.pool.query('SELECT * FROM mtm_episodes WHERE id = $1 AND namespace = $2 AND agent_id = $3', [id, this.namespace, this.agentId]);
|
|
112
125
|
if (result.rows.length === 0)
|
|
113
126
|
return null;
|
|
114
127
|
return this.rowToEpisode(result.rows[0]);
|
|
@@ -119,7 +132,7 @@ export class MidTermMemory {
|
|
|
119
132
|
async delete(id) {
|
|
120
133
|
if (!this.pool)
|
|
121
134
|
throw new Error('MTM not started');
|
|
122
|
-
await this.pool.query('DELETE FROM mtm_episodes WHERE id = $1', [id]);
|
|
135
|
+
await this.pool.query('DELETE FROM mtm_episodes WHERE id = $1 AND namespace = $2 AND agent_id = $3', [id, this.namespace, this.agentId]);
|
|
123
136
|
}
|
|
124
137
|
rowToEpisode(row) {
|
|
125
138
|
return {
|
package/dist/mtm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtm.js","sourceRoot":"","sources":["../src/mtm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mtm.js","sourceRoot":"","sources":["../src/mtm.ts"],"names":[],"mappings":"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"}
|