@mce-bt/microagents-memory 0.12.0 → 0.13.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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/knowledge-graph.d.ts +102 -1
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +373 -28
- package/dist/knowledge-graph.js.map +1 -1
- package/dist/memory-tools.d.ts +11 -0
- package/dist/memory-tools.d.ts.map +1 -1
- package/dist/memory-tools.js +224 -9
- package/dist/memory-tools.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export { MidTermMemory, type MTMConfig, type EpisodicMemory } from './mtm.js';
|
|
|
3
3
|
export { LongTermMemory, type LTMConfig, type KnowledgeFact } from './ltm.js';
|
|
4
4
|
export { MemoryManager, type MemoryManagerConfig, type ContextBlock, type SemanticStatus, } from './manager.js';
|
|
5
5
|
export { DEFAULT_SIMILARITY_THRESHOLD, IVFFLAT_MIN_ROWS, ensureVectorIndex, listsForRowCount, } from './vector-index.js';
|
|
6
|
-
export { KnowledgeGraph, type KGConfig, type Entity, type Relation, type SearchEntitiesOptions, type GraphSnapshot, } from './knowledge-graph.js';
|
|
6
|
+
export { KnowledgeGraph, type KGConfig, type Entity, type Relation, type SearchEntitiesOptions, type GraphSnapshot, type ObservationOrigin, type ObservationProvenance, type ObservationRow, type ReviseObservationInput, type ReviseResult, type SimilarObservation, } from './knowledge-graph.js';
|
|
7
7
|
export { MemoryExtractor, createExtractionAdapter, type ExtractionLLMAdapter, type ExtractionResult, type ExtractionStats, type ExtractedEntity, type ExtractedRelation, } from './memory-extractor.js';
|
|
8
|
-
export { createMemoryTools } from './memory-tools.js';
|
|
8
|
+
export { createMemoryTools, DUPLICATE_NOOP_THRESHOLD, DUPLICATE_HINT_THRESHOLD, TARGET_RESOLVE_THRESHOLD, } from './memory-tools.js';
|
|
9
9
|
export { SummarizationPipeline, type SummarizationPipelineConfig, type PipelineResult, } from './summarization-pipeline.js';
|
|
10
10
|
export { RedisSessionStore, RedisChannelSessionStore, RedisSchedulerStateStore, IoredisLockClient, createRedisStateStores, type RedisStateConfig, type RedisStateStores, } from './redis-state.js';
|
|
11
11
|
export { PostgresJobStore, type PostgresJobStoreConfig } from './job-store-postgres.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC1B,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { MemoryManager, } from './manager.js';
|
|
|
5
5
|
export { DEFAULT_SIMILARITY_THRESHOLD, IVFFLAT_MIN_ROWS, ensureVectorIndex, listsForRowCount, } from './vector-index.js';
|
|
6
6
|
export { KnowledgeGraph, } from './knowledge-graph.js';
|
|
7
7
|
export { MemoryExtractor, createExtractionAdapter, } from './memory-extractor.js';
|
|
8
|
-
export { createMemoryTools } from './memory-tools.js';
|
|
8
|
+
export { createMemoryTools, DUPLICATE_NOOP_THRESHOLD, DUPLICATE_HINT_THRESHOLD, TARGET_RESOLVE_THRESHOLD, } from './memory-tools.js';
|
|
9
9
|
export { SummarizationPipeline, } from './summarization-pipeline.js';
|
|
10
10
|
export { RedisSessionStore, RedisChannelSessionStore, RedisSchedulerStateStore, IoredisLockClient, createRedisStateStores, } from './redis-state.js';
|
|
11
11
|
export { PostgresJobStore } from './job-store-postgres.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,EACL,aAAa,GAId,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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,EACL,aAAa,GAId,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,GAYf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,uBAAuB,GAMxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,GAGtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAA+B,MAAM,yBAAyB,CAAC"}
|
|
@@ -17,6 +17,8 @@ export interface Entity {
|
|
|
17
17
|
entityType: string;
|
|
18
18
|
observations: string[];
|
|
19
19
|
embedding?: number[];
|
|
20
|
+
/** The stored vector no longer describes the observations (embed failed on a write). */
|
|
21
|
+
embeddingStale?: boolean;
|
|
20
22
|
metadata: Record<string, unknown>;
|
|
21
23
|
createdAt: Date;
|
|
22
24
|
updatedAt: Date;
|
|
@@ -40,6 +42,59 @@ export interface SearchEntitiesOptions {
|
|
|
40
42
|
embedding?: number[];
|
|
41
43
|
threshold?: number;
|
|
42
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Where an observation came from. 'user' marks facts the user stated
|
|
47
|
+
* themselves — the protected class a nightly reflection may not silently
|
|
48
|
+
* revise. 'legacy' marks rows backfilled from the pre-history projection.
|
|
49
|
+
*/
|
|
50
|
+
export type ObservationOrigin = 'user' | 'content' | 'reflection' | 'legacy';
|
|
51
|
+
export interface ObservationProvenance {
|
|
52
|
+
origin?: ObservationOrigin;
|
|
53
|
+
sourceSessionId?: string | null;
|
|
54
|
+
evidenceSessionIds?: string[];
|
|
55
|
+
}
|
|
56
|
+
/** One observation's full temporal record (kg_observations row). */
|
|
57
|
+
export interface ObservationRow {
|
|
58
|
+
id: string;
|
|
59
|
+
entityId: string;
|
|
60
|
+
content: string;
|
|
61
|
+
validFrom: Date;
|
|
62
|
+
validUntil: Date | null;
|
|
63
|
+
supersededBy: string | null;
|
|
64
|
+
reason: string | null;
|
|
65
|
+
origin: ObservationOrigin;
|
|
66
|
+
sourceSessionId: string | null;
|
|
67
|
+
evidenceSessionIds: string[];
|
|
68
|
+
createdAt: Date;
|
|
69
|
+
}
|
|
70
|
+
export interface ReviseObservationInput {
|
|
71
|
+
entityName: string;
|
|
72
|
+
action: 'add' | 'update' | 'invalidate';
|
|
73
|
+
/** New observation text (add / update). */
|
|
74
|
+
content?: string;
|
|
75
|
+
/** Target: an observation id or the exact active content (update / invalidate). */
|
|
76
|
+
target?: string;
|
|
77
|
+
reason?: string;
|
|
78
|
+
provenance?: ObservationProvenance;
|
|
79
|
+
/** Vector for the new observation row (semantic dup detection later). */
|
|
80
|
+
contentEmbedding?: number[];
|
|
81
|
+
/** Fresh vector for the entity's merged projection; absent on a change → embedding_stale. */
|
|
82
|
+
entityEmbedding?: number[];
|
|
83
|
+
}
|
|
84
|
+
/** NOOPs are returned, never thrown — a revision that changes nothing is data. */
|
|
85
|
+
export interface ReviseResult {
|
|
86
|
+
outcome: 'added' | 'updated' | 'invalidated' | 'noop';
|
|
87
|
+
noopReason?: 'duplicate' | 'target_not_found' | 'unchanged' | 'entity_not_found';
|
|
88
|
+
observationId?: string;
|
|
89
|
+
supersededId?: string;
|
|
90
|
+
activeObservations: string[];
|
|
91
|
+
}
|
|
92
|
+
export interface SimilarObservation {
|
|
93
|
+
entityName: string;
|
|
94
|
+
observationId: string;
|
|
95
|
+
content: string;
|
|
96
|
+
similarity: number;
|
|
97
|
+
}
|
|
43
98
|
export interface GraphSnapshot {
|
|
44
99
|
entities: Entity[];
|
|
45
100
|
relations: Relation[];
|
|
@@ -76,6 +131,14 @@ export declare class KnowledgeGraph {
|
|
|
76
131
|
observations?: string[];
|
|
77
132
|
embedding?: number[];
|
|
78
133
|
metadata?: Record<string, unknown>;
|
|
134
|
+
/** Provenance for the observation history rows this write creates. */
|
|
135
|
+
provenance?: ObservationProvenance;
|
|
136
|
+
/**
|
|
137
|
+
* Per-observation vectors, aligned with `observations`. Without them the
|
|
138
|
+
* history rows carry no embedding and the write-time dup check cannot see
|
|
139
|
+
* these facts — exactly the silent-miss this parameter exists to prevent.
|
|
140
|
+
*/
|
|
141
|
+
observationEmbeddings?: Array<number[] | null>;
|
|
79
142
|
}): Promise<Entity>;
|
|
80
143
|
/**
|
|
81
144
|
* Get an entity by name (scoped to this agent).
|
|
@@ -89,12 +152,49 @@ export declare class KnowledgeGraph {
|
|
|
89
152
|
getEntityById(id: string): Promise<Entity | null>;
|
|
90
153
|
/**
|
|
91
154
|
* Add observations to an existing entity. Deduplicates automatically.
|
|
155
|
+
* Routes through the observation history — signature unchanged.
|
|
92
156
|
*/
|
|
93
157
|
addObservations(entityName: string, observations: string[]): Promise<string[]>;
|
|
94
158
|
/**
|
|
95
|
-
* Remove specific observations from an entity.
|
|
159
|
+
* Remove specific observations from an entity. History is preserved: each
|
|
160
|
+
* removal is an INVALIDATE, never a delete — signature unchanged.
|
|
96
161
|
*/
|
|
97
162
|
removeObservations(entityName: string, observations: string[]): Promise<void>;
|
|
163
|
+
private static obsId;
|
|
164
|
+
/** Equality for "the same fact written twice": case- and whitespace-blind. */
|
|
165
|
+
private static sameContent;
|
|
166
|
+
/**
|
|
167
|
+
* The one write-path for observation state. Runs in a transaction holding
|
|
168
|
+
* `FOR UPDATE` on the entity row (also closing the projection's historical
|
|
169
|
+
* lost-update race), lazily backfills `origin='legacy'` history rows the
|
|
170
|
+
* first time a pre-history entity is touched, applies the revision to
|
|
171
|
+
* kg_observations, and rewrites `kg_entities.observations` as the active-set
|
|
172
|
+
* projection of the same instant.
|
|
173
|
+
*
|
|
174
|
+
* NOOPs are returned, never thrown — the caller (often a model) needs the
|
|
175
|
+
* outcome as data, and "nothing changed" is a legitimate one.
|
|
176
|
+
*/
|
|
177
|
+
reviseObservation(input: ReviseObservationInput): Promise<ReviseResult>;
|
|
178
|
+
/**
|
|
179
|
+
* Full temporal record for one entity: what was believed when, what
|
|
180
|
+
* replaced what, and why. Newest first.
|
|
181
|
+
*/
|
|
182
|
+
getObservationHistory(entityName: string): Promise<ObservationRow[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Active observations similar to a vector, across the whole scope — the
|
|
185
|
+
* write-time dup check. ILIKE fallback when no vector is available, so the
|
|
186
|
+
* check degrades rather than disappears without an embedder.
|
|
187
|
+
*/
|
|
188
|
+
findSimilarObservations(query: {
|
|
189
|
+
embedding?: number[];
|
|
190
|
+
text?: string;
|
|
191
|
+
}, options?: {
|
|
192
|
+
entityName?: string;
|
|
193
|
+
threshold?: number;
|
|
194
|
+
limit?: number;
|
|
195
|
+
}): Promise<SimilarObservation[]>;
|
|
196
|
+
/** Entities whose vector no longer matches their facts — repair by re-store. */
|
|
197
|
+
listStaleEmbeddingEntities(limit?: number): Promise<Entity[]>;
|
|
98
198
|
/**
|
|
99
199
|
* Delete an entity and all its relations (cascading).
|
|
100
200
|
*/
|
|
@@ -186,6 +286,7 @@ export declare class KnowledgeGraph {
|
|
|
186
286
|
*/
|
|
187
287
|
getEntityTypeCounts(): Promise<Record<string, number>>;
|
|
188
288
|
private rowToEntity;
|
|
289
|
+
private rowToObservation;
|
|
189
290
|
private rowToRelation;
|
|
190
291
|
}
|
|
191
292
|
//# sourceMappingURL=knowledge-graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,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,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,QAAQ;IAM5B,oEAAoE;IACpE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YASb,YAAY;
|
|
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
|
@@ -71,6 +71,38 @@ export class KnowledgeGraph {
|
|
|
71
71
|
ON kg_entities(namespace, agent_id, entity_type);
|
|
72
72
|
CREATE INDEX IF NOT EXISTS idx_kg_entity_observations
|
|
73
73
|
ON kg_entities USING GIN(observations);
|
|
74
|
+
|
|
75
|
+
-- A write that changed the observations but could not refresh the
|
|
76
|
+
-- entity vector leaves the old vector describing a subset of the facts.
|
|
77
|
+
-- Tracked instead of silent: any later successful embed clears it.
|
|
78
|
+
ALTER TABLE kg_entities
|
|
79
|
+
ADD COLUMN IF NOT EXISTS embedding_stale BOOLEAN NOT NULL DEFAULT FALSE;
|
|
80
|
+
`);
|
|
81
|
+
// Observation history (mirrors kg_relations' temporal model): the array
|
|
82
|
+
// in kg_entities.observations is only the ACTIVE-SET projection; this
|
|
83
|
+
// table is the record of what was believed when, and why it changed.
|
|
84
|
+
await this.pool.query(`
|
|
85
|
+
CREATE TABLE IF NOT EXISTS kg_observations (
|
|
86
|
+
id TEXT PRIMARY KEY,
|
|
87
|
+
entity_id TEXT NOT NULL REFERENCES kg_entities(id) ON DELETE CASCADE,
|
|
88
|
+
agent_id TEXT NOT NULL,
|
|
89
|
+
namespace TEXT NOT NULL DEFAULT 'default',
|
|
90
|
+
content TEXT NOT NULL,
|
|
91
|
+
valid_from TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
92
|
+
valid_until TIMESTAMPTZ,
|
|
93
|
+
superseded_by TEXT REFERENCES kg_observations(id),
|
|
94
|
+
reason TEXT,
|
|
95
|
+
origin TEXT NOT NULL DEFAULT 'legacy',
|
|
96
|
+
source_session_id TEXT,
|
|
97
|
+
evidence_session_ids TEXT[] DEFAULT '{}',
|
|
98
|
+
embedding vector(${this.embeddingDimensions}),
|
|
99
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_kg_obs_active
|
|
103
|
+
ON kg_observations(entity_id) WHERE valid_until IS NULL;
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_kg_obs_scope
|
|
105
|
+
ON kg_observations(namespace, agent_id);
|
|
74
106
|
`);
|
|
75
107
|
await this.pool.query(`
|
|
76
108
|
CREATE TABLE IF NOT EXISTS kg_relations (
|
|
@@ -102,6 +134,7 @@ export class KnowledgeGraph {
|
|
|
102
134
|
ON kg_relations(valid_from, valid_until);
|
|
103
135
|
`);
|
|
104
136
|
await ensureVectorIndex(this.pool, 'kg_entities', 'idx_kg_entity_embedding');
|
|
137
|
+
await ensureVectorIndex(this.pool, 'kg_observations', 'idx_kg_obs_embedding');
|
|
105
138
|
}
|
|
106
139
|
// ─── Entity CRUD ───
|
|
107
140
|
/**
|
|
@@ -113,19 +146,29 @@ export class KnowledgeGraph {
|
|
|
113
146
|
throw new Error('KnowledgeGraph not started');
|
|
114
147
|
const existing = await this.getEntityByName(input.name);
|
|
115
148
|
if (existing) {
|
|
116
|
-
//
|
|
117
|
-
|
|
118
|
-
|
|
149
|
+
// Each genuinely new observation goes through the one write-path, so
|
|
150
|
+
// history is never bypassed. The projection/stale bookkeeping happens
|
|
151
|
+
// there; embedding and metadata land in the final update below.
|
|
152
|
+
let observations = existing.observations;
|
|
153
|
+
for (const [i, content] of (input.observations ?? []).entries()) {
|
|
154
|
+
const contentEmbedding = input.observationEmbeddings?.[i] ?? undefined;
|
|
155
|
+
const result = await this.reviseObservation({
|
|
156
|
+
entityName: input.name,
|
|
157
|
+
action: 'add',
|
|
158
|
+
content,
|
|
159
|
+
provenance: input.provenance,
|
|
160
|
+
...(contentEmbedding ? { contentEmbedding } : {}),
|
|
161
|
+
});
|
|
162
|
+
if (result.outcome === 'added')
|
|
163
|
+
observations = result.activeObservations;
|
|
164
|
+
}
|
|
119
165
|
const mergedMeta = { ...existing.metadata, ...(input.metadata ?? {}) };
|
|
120
|
-
const embeddingStr = input.embedding
|
|
121
|
-
? `[${input.embedding.join(',')}]`
|
|
122
|
-
: null;
|
|
166
|
+
const embeddingStr = input.embedding ? `[${input.embedding.join(',')}]` : null;
|
|
123
167
|
if (embeddingStr) {
|
|
124
168
|
await this.pool.query(`UPDATE kg_entities
|
|
125
|
-
SET
|
|
126
|
-
embedding = $
|
|
127
|
-
WHERE id = $
|
|
128
|
-
mergedObs,
|
|
169
|
+
SET metadata = $1, entity_type = $2,
|
|
170
|
+
embedding = $3::vector, embedding_stale = FALSE, updated_at = NOW()
|
|
171
|
+
WHERE id = $4 AND namespace = $5 AND agent_id = $6`, [
|
|
129
172
|
JSON.stringify(mergedMeta),
|
|
130
173
|
input.entityType,
|
|
131
174
|
embeddingStr,
|
|
@@ -136,9 +179,8 @@ export class KnowledgeGraph {
|
|
|
136
179
|
}
|
|
137
180
|
else {
|
|
138
181
|
await this.pool.query(`UPDATE kg_entities
|
|
139
|
-
SET
|
|
140
|
-
WHERE id = $
|
|
141
|
-
mergedObs,
|
|
182
|
+
SET metadata = $1, entity_type = $2, updated_at = NOW()
|
|
183
|
+
WHERE id = $3 AND namespace = $4 AND agent_id = $5`, [
|
|
142
184
|
JSON.stringify(mergedMeta),
|
|
143
185
|
input.entityType,
|
|
144
186
|
existing.id,
|
|
@@ -148,7 +190,7 @@ export class KnowledgeGraph {
|
|
|
148
190
|
}
|
|
149
191
|
return {
|
|
150
192
|
...existing,
|
|
151
|
-
observations
|
|
193
|
+
observations,
|
|
152
194
|
metadata: mergedMeta,
|
|
153
195
|
entityType: input.entityType,
|
|
154
196
|
updatedAt: new Date(),
|
|
@@ -170,6 +212,28 @@ export class KnowledgeGraph {
|
|
|
170
212
|
embeddingStr,
|
|
171
213
|
JSON.stringify(input.metadata ?? {}),
|
|
172
214
|
]);
|
|
215
|
+
// Seed history alongside the projection — a brand-new entity's facts get
|
|
216
|
+
// real provenance rather than waiting for a lazy legacy backfill.
|
|
217
|
+
const origin = input.provenance?.origin ?? 'content';
|
|
218
|
+
for (const [i, content] of (input.observations ?? []).entries()) {
|
|
219
|
+
const contentVec = input.observationEmbeddings?.[i]
|
|
220
|
+
? `[${input.observationEmbeddings[i].join(',')}]`
|
|
221
|
+
: null;
|
|
222
|
+
await this.pool.query(`INSERT INTO kg_observations
|
|
223
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
224
|
+
source_session_id, evidence_session_ids, embedding)
|
|
225
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::vector)`, [
|
|
226
|
+
KnowledgeGraph.obsId(),
|
|
227
|
+
id,
|
|
228
|
+
this.agentId,
|
|
229
|
+
this.namespace,
|
|
230
|
+
content,
|
|
231
|
+
origin,
|
|
232
|
+
input.provenance?.sourceSessionId ?? null,
|
|
233
|
+
input.provenance?.evidenceSessionIds ?? [],
|
|
234
|
+
contentVec,
|
|
235
|
+
]);
|
|
236
|
+
}
|
|
173
237
|
return {
|
|
174
238
|
id,
|
|
175
239
|
agentId: this.agentId,
|
|
@@ -207,33 +271,298 @@ export class KnowledgeGraph {
|
|
|
207
271
|
}
|
|
208
272
|
/**
|
|
209
273
|
* Add observations to an existing entity. Deduplicates automatically.
|
|
274
|
+
* Routes through the observation history — signature unchanged.
|
|
210
275
|
*/
|
|
211
276
|
async addObservations(entityName, observations) {
|
|
212
277
|
if (!this.pool)
|
|
213
278
|
throw new Error('KnowledgeGraph not started');
|
|
214
|
-
const
|
|
215
|
-
if (!
|
|
279
|
+
const exists = await this.getEntityByName(entityName);
|
|
280
|
+
if (!exists)
|
|
216
281
|
throw new Error(`Entity "${entityName}" not found`);
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return
|
|
282
|
+
const added = [];
|
|
283
|
+
for (const content of observations) {
|
|
284
|
+
const result = await this.reviseObservation({ entityName, action: 'add', content });
|
|
285
|
+
if (result.outcome === 'added')
|
|
286
|
+
added.push(content);
|
|
287
|
+
}
|
|
288
|
+
return added;
|
|
224
289
|
}
|
|
225
290
|
/**
|
|
226
|
-
* Remove specific observations from an entity.
|
|
291
|
+
* Remove specific observations from an entity. History is preserved: each
|
|
292
|
+
* removal is an INVALIDATE, never a delete — signature unchanged.
|
|
227
293
|
*/
|
|
228
294
|
async removeObservations(entityName, observations) {
|
|
295
|
+
if (!this.pool)
|
|
296
|
+
throw new Error('KnowledgeGraph not started');
|
|
297
|
+
for (const content of observations) {
|
|
298
|
+
await this.reviseObservation({
|
|
299
|
+
entityName,
|
|
300
|
+
action: 'invalidate',
|
|
301
|
+
target: content,
|
|
302
|
+
reason: 'removed',
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// ─── Observation history (temporal, mirrors kg_relations) ───
|
|
307
|
+
static obsId() {
|
|
308
|
+
return `obs-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
309
|
+
}
|
|
310
|
+
/** Equality for "the same fact written twice": case- and whitespace-blind. */
|
|
311
|
+
static sameContent(a, b) {
|
|
312
|
+
const key = (s) => s.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
313
|
+
return key(a) === key(b);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* The one write-path for observation state. Runs in a transaction holding
|
|
317
|
+
* `FOR UPDATE` on the entity row (also closing the projection's historical
|
|
318
|
+
* lost-update race), lazily backfills `origin='legacy'` history rows the
|
|
319
|
+
* first time a pre-history entity is touched, applies the revision to
|
|
320
|
+
* kg_observations, and rewrites `kg_entities.observations` as the active-set
|
|
321
|
+
* projection of the same instant.
|
|
322
|
+
*
|
|
323
|
+
* NOOPs are returned, never thrown — the caller (often a model) needs the
|
|
324
|
+
* outcome as data, and "nothing changed" is a legitimate one.
|
|
325
|
+
*/
|
|
326
|
+
async reviseObservation(input) {
|
|
327
|
+
if (!this.pool)
|
|
328
|
+
throw new Error('KnowledgeGraph not started');
|
|
329
|
+
const client = await this.pool.connect();
|
|
330
|
+
try {
|
|
331
|
+
await client.query('BEGIN');
|
|
332
|
+
const entityRes = await client.query(`SELECT * FROM kg_entities
|
|
333
|
+
WHERE namespace = $1 AND agent_id = $2 AND name = $3
|
|
334
|
+
FOR UPDATE`, [this.namespace, this.agentId, input.entityName]);
|
|
335
|
+
if (entityRes.rows.length === 0) {
|
|
336
|
+
await client.query('ROLLBACK');
|
|
337
|
+
return { outcome: 'noop', noopReason: 'entity_not_found', activeObservations: [] };
|
|
338
|
+
}
|
|
339
|
+
const entity = this.rowToEntity(entityRes.rows[0]);
|
|
340
|
+
const hadEmbedding = entityRes.rows[0].embedding != null;
|
|
341
|
+
// Lazy backfill: entities written before this table existed get their
|
|
342
|
+
// projection seeded as history exactly once, on first revision.
|
|
343
|
+
const countRes = await client.query('SELECT COUNT(*)::int AS n FROM kg_observations WHERE entity_id = $1', [entity.id]);
|
|
344
|
+
if (countRes.rows[0].n === 0 && entity.observations.length > 0) {
|
|
345
|
+
for (const content of entity.observations) {
|
|
346
|
+
await client.query(`INSERT INTO kg_observations
|
|
347
|
+
(id, entity_id, agent_id, namespace, content, valid_from, origin)
|
|
348
|
+
VALUES ($1, $2, $3, $4, $5, $6, 'legacy')`, [KnowledgeGraph.obsId(), entity.id, this.agentId, this.namespace, content, entity.createdAt]);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
const activeRes = await client.query(`SELECT * FROM kg_observations
|
|
352
|
+
WHERE entity_id = $1 AND valid_until IS NULL
|
|
353
|
+
ORDER BY valid_from, created_at`, [entity.id]);
|
|
354
|
+
const active = activeRes.rows.map(this.rowToObservation);
|
|
355
|
+
const provenance = input.provenance ?? {};
|
|
356
|
+
const origin = provenance.origin ?? 'content';
|
|
357
|
+
const contentVec = input.contentEmbedding ? `[${input.contentEmbedding.join(',')}]` : null;
|
|
358
|
+
let result;
|
|
359
|
+
if (input.action === 'add') {
|
|
360
|
+
const content = (input.content ?? '').trim();
|
|
361
|
+
const dup = active.find((o) => KnowledgeGraph.sameContent(o.content, content));
|
|
362
|
+
if (!content || dup) {
|
|
363
|
+
await client.query('ROLLBACK');
|
|
364
|
+
return {
|
|
365
|
+
outcome: 'noop',
|
|
366
|
+
noopReason: 'duplicate',
|
|
367
|
+
observationId: dup?.id,
|
|
368
|
+
activeObservations: active.map((o) => o.content),
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
const id = KnowledgeGraph.obsId();
|
|
372
|
+
await client.query(`INSERT INTO kg_observations
|
|
373
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
374
|
+
source_session_id, evidence_session_ids, embedding)
|
|
375
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::vector)`, [
|
|
376
|
+
id,
|
|
377
|
+
entity.id,
|
|
378
|
+
this.agentId,
|
|
379
|
+
this.namespace,
|
|
380
|
+
content,
|
|
381
|
+
origin,
|
|
382
|
+
provenance.sourceSessionId ?? null,
|
|
383
|
+
provenance.evidenceSessionIds ?? [],
|
|
384
|
+
contentVec,
|
|
385
|
+
]);
|
|
386
|
+
result = {
|
|
387
|
+
outcome: 'added',
|
|
388
|
+
observationId: id,
|
|
389
|
+
activeObservations: [...active.map((o) => o.content), content],
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
// update / invalidate need a resolved target: an id or exact content.
|
|
394
|
+
const target = (input.target ?? '').trim();
|
|
395
|
+
const match = active.find((o) => o.id === target) ??
|
|
396
|
+
active.find((o) => KnowledgeGraph.sameContent(o.content, target));
|
|
397
|
+
if (!match) {
|
|
398
|
+
await client.query('ROLLBACK');
|
|
399
|
+
return {
|
|
400
|
+
outcome: 'noop',
|
|
401
|
+
noopReason: 'target_not_found',
|
|
402
|
+
activeObservations: active.map((o) => o.content),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
if (input.action === 'update') {
|
|
406
|
+
const content = (input.content ?? '').trim();
|
|
407
|
+
if (!content || KnowledgeGraph.sameContent(content, match.content)) {
|
|
408
|
+
await client.query('ROLLBACK');
|
|
409
|
+
return {
|
|
410
|
+
outcome: 'noop',
|
|
411
|
+
noopReason: 'unchanged',
|
|
412
|
+
observationId: match.id,
|
|
413
|
+
activeObservations: active.map((o) => o.content),
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
const id = KnowledgeGraph.obsId();
|
|
417
|
+
await client.query(`INSERT INTO kg_observations
|
|
418
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
419
|
+
source_session_id, evidence_session_ids, embedding)
|
|
420
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::vector)`, [
|
|
421
|
+
id,
|
|
422
|
+
entity.id,
|
|
423
|
+
this.agentId,
|
|
424
|
+
this.namespace,
|
|
425
|
+
content,
|
|
426
|
+
origin,
|
|
427
|
+
provenance.sourceSessionId ?? null,
|
|
428
|
+
provenance.evidenceSessionIds ?? [],
|
|
429
|
+
contentVec,
|
|
430
|
+
]);
|
|
431
|
+
await client.query(`UPDATE kg_observations
|
|
432
|
+
SET valid_until = NOW(), superseded_by = $1, reason = $2
|
|
433
|
+
WHERE id = $3`, [id, input.reason ?? null, match.id]);
|
|
434
|
+
result = {
|
|
435
|
+
outcome: 'updated',
|
|
436
|
+
observationId: id,
|
|
437
|
+
supersededId: match.id,
|
|
438
|
+
activeObservations: [
|
|
439
|
+
...active.filter((o) => o.id !== match.id).map((o) => o.content),
|
|
440
|
+
content,
|
|
441
|
+
],
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
await client.query(`UPDATE kg_observations SET valid_until = NOW(), reason = $1 WHERE id = $2`, [input.reason ?? null, match.id]);
|
|
446
|
+
result = {
|
|
447
|
+
outcome: 'invalidated',
|
|
448
|
+
supersededId: match.id,
|
|
449
|
+
activeObservations: active.filter((o) => o.id !== match.id).map((o) => o.content),
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
// Projection rewrite, same transaction: the array column always shows
|
|
454
|
+
// exactly the active set. A changed projection with no fresh entity
|
|
455
|
+
// vector leaves the old vector describing the wrong facts — flagged,
|
|
456
|
+
// not silent; a provided vector clears the flag.
|
|
457
|
+
const entityVec = input.entityEmbedding ? `[${input.entityEmbedding.join(',')}]` : null;
|
|
458
|
+
if (entityVec) {
|
|
459
|
+
await client.query(`UPDATE kg_entities
|
|
460
|
+
SET observations = $1, embedding = $2::vector,
|
|
461
|
+
embedding_stale = FALSE, updated_at = NOW()
|
|
462
|
+
WHERE id = $3`, [result.activeObservations, entityVec, entity.id]);
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
await client.query(`UPDATE kg_entities
|
|
466
|
+
SET observations = $1,
|
|
467
|
+
embedding_stale = (embedding_stale OR $2), updated_at = NOW()
|
|
468
|
+
WHERE id = $3`, [result.activeObservations, hadEmbedding, entity.id]);
|
|
469
|
+
}
|
|
470
|
+
await client.query('COMMIT');
|
|
471
|
+
return result;
|
|
472
|
+
}
|
|
473
|
+
catch (err) {
|
|
474
|
+
await client.query('ROLLBACK').catch(() => { });
|
|
475
|
+
throw err;
|
|
476
|
+
}
|
|
477
|
+
finally {
|
|
478
|
+
client.release();
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Full temporal record for one entity: what was believed when, what
|
|
483
|
+
* replaced what, and why. Newest first.
|
|
484
|
+
*/
|
|
485
|
+
async getObservationHistory(entityName) {
|
|
229
486
|
if (!this.pool)
|
|
230
487
|
throw new Error('KnowledgeGraph not started');
|
|
231
488
|
const entity = await this.getEntityByName(entityName);
|
|
232
489
|
if (!entity)
|
|
233
|
-
return;
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
490
|
+
return [];
|
|
491
|
+
const result = await this.pool.query(`SELECT * FROM kg_observations
|
|
492
|
+
WHERE entity_id = $1
|
|
493
|
+
ORDER BY valid_from DESC, created_at DESC`, [entity.id]);
|
|
494
|
+
return result.rows.map(this.rowToObservation);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Active observations similar to a vector, across the whole scope — the
|
|
498
|
+
* write-time dup check. ILIKE fallback when no vector is available, so the
|
|
499
|
+
* check degrades rather than disappears without an embedder.
|
|
500
|
+
*/
|
|
501
|
+
async findSimilarObservations(query, options = {}) {
|
|
502
|
+
if (!this.pool)
|
|
503
|
+
throw new Error('KnowledgeGraph not started');
|
|
504
|
+
const limit = options.limit ?? 5;
|
|
505
|
+
if (query.embedding) {
|
|
506
|
+
const threshold = options.threshold ?? DEFAULT_SIMILARITY_THRESHOLD;
|
|
507
|
+
const conditions = [
|
|
508
|
+
'o.namespace = $1',
|
|
509
|
+
'o.agent_id = $2',
|
|
510
|
+
'o.valid_until IS NULL',
|
|
511
|
+
'o.embedding IS NOT NULL',
|
|
512
|
+
];
|
|
513
|
+
const params = [this.namespace, this.agentId];
|
|
514
|
+
let idx = 3;
|
|
515
|
+
if (options.entityName) {
|
|
516
|
+
conditions.push(`e.name = $${idx}`);
|
|
517
|
+
params.push(options.entityName);
|
|
518
|
+
idx++;
|
|
519
|
+
}
|
|
520
|
+
const vec = `[${query.embedding.join(',')}]`;
|
|
521
|
+
const result = await this.pool.query(`SELECT o.id, o.content, e.name AS entity_name,
|
|
522
|
+
1 - (o.embedding <=> $${idx}::vector) AS similarity
|
|
523
|
+
FROM kg_observations o
|
|
524
|
+
JOIN kg_entities e ON e.id = o.entity_id
|
|
525
|
+
WHERE ${conditions.join(' AND ')}
|
|
526
|
+
AND 1 - (o.embedding <=> $${idx}::vector) >= $${idx + 1}
|
|
527
|
+
ORDER BY o.embedding <=> $${idx}::vector
|
|
528
|
+
LIMIT $${idx + 2}`, [...params, vec, threshold, limit]);
|
|
529
|
+
return result.rows.map((row) => ({
|
|
530
|
+
entityName: row.entity_name,
|
|
531
|
+
observationId: row.id,
|
|
532
|
+
content: row.content,
|
|
533
|
+
similarity: parseFloat(row.similarity),
|
|
534
|
+
}));
|
|
535
|
+
}
|
|
536
|
+
if (!query.text)
|
|
537
|
+
return [];
|
|
538
|
+
const conditions = ['o.namespace = $1', 'o.agent_id = $2', 'o.valid_until IS NULL'];
|
|
539
|
+
const params = [this.namespace, this.agentId];
|
|
540
|
+
let idx = 3;
|
|
541
|
+
if (options.entityName) {
|
|
542
|
+
conditions.push(`e.name = $${idx}`);
|
|
543
|
+
params.push(options.entityName);
|
|
544
|
+
idx++;
|
|
545
|
+
}
|
|
546
|
+
const result = await this.pool.query(`SELECT o.id, o.content, e.name AS entity_name
|
|
547
|
+
FROM kg_observations o
|
|
548
|
+
JOIN kg_entities e ON e.id = o.entity_id
|
|
549
|
+
WHERE ${conditions.join(' AND ')} AND o.content ILIKE $${idx}
|
|
550
|
+
LIMIT $${idx + 1}`, [...params, `%${query.text}%`, limit]);
|
|
551
|
+
return result.rows.map((row) => ({
|
|
552
|
+
entityName: row.entity_name,
|
|
553
|
+
observationId: row.id,
|
|
554
|
+
content: row.content,
|
|
555
|
+
similarity: 1,
|
|
556
|
+
}));
|
|
557
|
+
}
|
|
558
|
+
/** Entities whose vector no longer matches their facts — repair by re-store. */
|
|
559
|
+
async listStaleEmbeddingEntities(limit = 20) {
|
|
560
|
+
if (!this.pool)
|
|
561
|
+
throw new Error('KnowledgeGraph not started');
|
|
562
|
+
const result = await this.pool.query(`SELECT * FROM kg_entities
|
|
563
|
+
WHERE namespace = $1 AND agent_id = $2 AND embedding_stale
|
|
564
|
+
ORDER BY updated_at DESC LIMIT $3`, [this.namespace, this.agentId, limit]);
|
|
565
|
+
return result.rows.map(this.rowToEntity);
|
|
237
566
|
}
|
|
238
567
|
/**
|
|
239
568
|
* Delete an entity and all its relations (cascading).
|
|
@@ -537,11 +866,27 @@ export class KnowledgeGraph {
|
|
|
537
866
|
name: row.name,
|
|
538
867
|
entityType: row.entity_type,
|
|
539
868
|
observations: (row.observations ?? []),
|
|
869
|
+
embeddingStale: row.embedding_stale ?? false,
|
|
540
870
|
metadata: (row.metadata ?? {}),
|
|
541
871
|
createdAt: new Date(row.created_at),
|
|
542
872
|
updatedAt: new Date(row.updated_at),
|
|
543
873
|
};
|
|
544
874
|
}
|
|
875
|
+
rowToObservation(row) {
|
|
876
|
+
return {
|
|
877
|
+
id: row.id,
|
|
878
|
+
entityId: row.entity_id,
|
|
879
|
+
content: row.content,
|
|
880
|
+
validFrom: new Date(row.valid_from),
|
|
881
|
+
validUntil: row.valid_until ? new Date(row.valid_until) : null,
|
|
882
|
+
supersededBy: row.superseded_by ?? null,
|
|
883
|
+
reason: row.reason ?? null,
|
|
884
|
+
origin: row.origin,
|
|
885
|
+
sourceSessionId: row.source_session_id ?? null,
|
|
886
|
+
evidenceSessionIds: (row.evidence_session_ids ?? []),
|
|
887
|
+
createdAt: new Date(row.created_at),
|
|
888
|
+
};
|
|
889
|
+
}
|
|
545
890
|
rowToRelation(row) {
|
|
546
891
|
return {
|
|
547
892
|
id: row.id,
|
|
@@ -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/memory-tools.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { RegisteredTool } from '@mce-bt/microagents-core';
|
|
2
2
|
import type { MemoryManager } from './manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Similarity tiers for write-time dup detection (statement-vs-statement, so
|
|
5
|
+
* scores run far higher than the asymmetric question-vs-statement recall
|
|
6
|
+
* case): at or above NOOP the incoming text is the same fact reworded — skip
|
|
7
|
+
* it; between HINT and NOOP it is related enough that the caller should see
|
|
8
|
+
* the neighbours and consider revise_fact instead of piling on paraphrases.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DUPLICATE_NOOP_THRESHOLD = 0.9;
|
|
11
|
+
export declare const DUPLICATE_HINT_THRESHOLD = 0.6;
|
|
12
|
+
/** Floor for resolving a revise_fact target by meaning rather than id/text. */
|
|
13
|
+
export declare const TARGET_RESOLVE_THRESHOLD = 0.85;
|
|
3
14
|
/**
|
|
4
15
|
* Create memory tools that agents can use during conversations.
|
|
5
16
|
* Inspired by Letta's approach of giving agents explicit memory control.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,0BAA0B,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAmB7C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,GACrB,cAAc,EAAE,CAalB"}
|
package/dist/memory-tools.js
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Similarity tiers for write-time dup detection (statement-vs-statement, so
|
|
4
|
+
* scores run far higher than the asymmetric question-vs-statement recall
|
|
5
|
+
* case): at or above NOOP the incoming text is the same fact reworded — skip
|
|
6
|
+
* it; between HINT and NOOP it is related enough that the caller should see
|
|
7
|
+
* the neighbours and consider revise_fact instead of piling on paraphrases.
|
|
8
|
+
*/
|
|
9
|
+
export const DUPLICATE_NOOP_THRESHOLD = 0.9;
|
|
10
|
+
export const DUPLICATE_HINT_THRESHOLD = 0.6;
|
|
11
|
+
/** Floor for resolving a revise_fact target by meaning rather than id/text. */
|
|
12
|
+
export const TARGET_RESOLVE_THRESHOLD = 0.85;
|
|
13
|
+
/**
|
|
14
|
+
* Where a write claims to come from, resolved mechanically where possible:
|
|
15
|
+
* reflection heartbeat sessions are host-minted (`heartbeat:reflection:*`),
|
|
16
|
+
* so a reflection run is 'reflection' no matter what the model claims —
|
|
17
|
+
* which is what makes the user-origin protection in revise_fact enforceable.
|
|
18
|
+
*/
|
|
19
|
+
function callerOrigin(ctx, claimed) {
|
|
20
|
+
if (ctx?.sessionId?.startsWith('heartbeat:reflection'))
|
|
21
|
+
return 'reflection';
|
|
22
|
+
return claimed === 'user' ? 'user' : 'content';
|
|
23
|
+
}
|
|
24
|
+
/** Case- and whitespace-blind equality — the same fact written twice. */
|
|
25
|
+
function sameText(a, b) {
|
|
26
|
+
const key = (s) => s.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
27
|
+
return key(a) === key(b);
|
|
28
|
+
}
|
|
2
29
|
/**
|
|
3
30
|
* Create memory tools that agents can use during conversations.
|
|
4
31
|
* Inspired by Letta's approach of giving agents explicit memory control.
|
|
@@ -12,6 +39,7 @@ export function createMemoryTools(manager) {
|
|
|
12
39
|
return [
|
|
13
40
|
searchKnowledgeTool(kg, manager),
|
|
14
41
|
storFactTool(kg, manager),
|
|
42
|
+
reviseFactTool(kg, manager),
|
|
15
43
|
recallEntityTool(kg),
|
|
16
44
|
relateEntitiesTool(kg),
|
|
17
45
|
listEntitiesTool(kg),
|
|
@@ -76,37 +104,201 @@ function storFactTool(kg, manager) {
|
|
|
76
104
|
name: 'store_fact',
|
|
77
105
|
description: 'Store a new fact or observation about an entity in long-term memory. ' +
|
|
78
106
|
'Use this when you learn something important that should be remembered ' +
|
|
79
|
-
'across conversations (e.g., user preferences, project details, key decisions).'
|
|
107
|
+
'across conversations (e.g., user preferences, project details, key decisions). ' +
|
|
108
|
+
'Facts already stored in other words are skipped and reported back — if a fact ' +
|
|
109
|
+
'CHANGED (contradicts what is stored), use revise_fact instead of storing a variant.',
|
|
80
110
|
parameters: z.object({
|
|
81
111
|
entityName: z.string().describe('Name of the entity (e.g., "user", "Project_Alpha", "Redis")'),
|
|
82
112
|
entityType: z.string().describe('Type of entity (e.g., "person", "project", "tool", "concept", "preference")'),
|
|
83
113
|
observations: z.array(z.string()).describe('List of atomic facts to store (one fact per item)'),
|
|
114
|
+
origin: z
|
|
115
|
+
.enum(['user', 'content'])
|
|
116
|
+
.optional()
|
|
117
|
+
.describe('"user" ONLY when the user stated this themselves; otherwise omit'),
|
|
118
|
+
evidenceSessionIds: z
|
|
119
|
+
.array(z.string())
|
|
120
|
+
.optional()
|
|
121
|
+
.describe('Session ids where this was observed (cite when reflecting)'),
|
|
84
122
|
}),
|
|
85
123
|
visibility: 'internal',
|
|
86
|
-
handler: async (params) => {
|
|
87
|
-
const { entityName, entityType, observations } = params;
|
|
124
|
+
handler: async (params, ctx) => {
|
|
125
|
+
const { entityName, entityType, observations, origin, evidenceSessionIds } = params;
|
|
126
|
+
// Write-time dup check, per observation: a near-exact match anywhere in
|
|
127
|
+
// scope means this fact is already known — storing it again would just
|
|
128
|
+
// grow paraphrase piles (the nightly reflection's classic failure).
|
|
129
|
+
const skipped = [];
|
|
130
|
+
const nearDuplicates = [];
|
|
131
|
+
const toStore = [];
|
|
132
|
+
for (const observation of observations) {
|
|
133
|
+
const vector = await manager.embed(observation);
|
|
134
|
+
const similar = vector
|
|
135
|
+
? await kg.findSimilarObservations({ embedding: vector }, { threshold: DUPLICATE_HINT_THRESHOLD, limit: 3 })
|
|
136
|
+
: [];
|
|
137
|
+
const best = similar[0];
|
|
138
|
+
if (best && best.similarity >= DUPLICATE_NOOP_THRESHOLD) {
|
|
139
|
+
skipped.push({
|
|
140
|
+
observation,
|
|
141
|
+
duplicateOf: best.content,
|
|
142
|
+
entity: best.entityName,
|
|
143
|
+
});
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (best) {
|
|
147
|
+
// Related but not identical — store it, but show the neighbourhood.
|
|
148
|
+
nearDuplicates.push({
|
|
149
|
+
observation,
|
|
150
|
+
existing: best.content,
|
|
151
|
+
entity: best.entityName,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
toStore.push({ content: observation, embedding: vector });
|
|
155
|
+
}
|
|
156
|
+
if (toStore.length === 0) {
|
|
157
|
+
return {
|
|
158
|
+
stored: false,
|
|
159
|
+
entity: entityName,
|
|
160
|
+
skippedDuplicates: skipped,
|
|
161
|
+
message: 'Every fact is already stored (in other words). If something CHANGED, call revise_fact.',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
88
164
|
// Embed the entity together with its observations: recall works on what
|
|
89
165
|
// a fact *says*, and a bare name like "user" carries almost no signal.
|
|
90
166
|
// upsertEntity MERGES into any existing entity, so the vector has to
|
|
91
167
|
// describe the merged result — embedding only the incoming observations
|
|
92
168
|
// would make an updated entity findable by its newest fact alone.
|
|
93
169
|
// A null vector (no embedder, or a transient failure) still stores the
|
|
94
|
-
// fact
|
|
170
|
+
// fact — the entity is then flagged embedding_stale rather than left
|
|
171
|
+
// silently described by an outdated vector.
|
|
95
172
|
const existing = await kg.getEntityByName(entityName);
|
|
173
|
+
const contents = toStore.map((o) => o.content);
|
|
96
174
|
const merged = existing
|
|
97
|
-
? [...existing.observations, ...
|
|
98
|
-
:
|
|
175
|
+
? [...existing.observations, ...contents.filter((o) => !existing.observations.includes(o))]
|
|
176
|
+
: contents;
|
|
99
177
|
const embedding = await manager.embed([entityName, entityType, ...merged].join(' — '));
|
|
100
178
|
const entity = await kg.upsertEntity({
|
|
101
179
|
name: entityName,
|
|
102
180
|
entityType,
|
|
103
|
-
observations,
|
|
181
|
+
observations: contents,
|
|
182
|
+
// The dup-check vectors ride along so the NEXT write can see these
|
|
183
|
+
// facts — without them the check silently matches nothing.
|
|
184
|
+
observationEmbeddings: toStore.map((o) => o.embedding),
|
|
104
185
|
...(embedding ? { embedding } : {}),
|
|
186
|
+
provenance: {
|
|
187
|
+
origin: callerOrigin(ctx, origin),
|
|
188
|
+
sourceSessionId: ctx?.sessionId ?? null,
|
|
189
|
+
...(evidenceSessionIds ? { evidenceSessionIds } : {}),
|
|
190
|
+
},
|
|
105
191
|
});
|
|
106
192
|
return {
|
|
107
193
|
stored: true,
|
|
108
194
|
entity: entity.name,
|
|
109
195
|
totalObservations: entity.observations.length,
|
|
196
|
+
...(skipped.length > 0 ? { skippedDuplicates: skipped } : {}),
|
|
197
|
+
...(nearDuplicates.length > 0
|
|
198
|
+
? {
|
|
199
|
+
nearDuplicates,
|
|
200
|
+
hint: 'Similar facts already exist. If the new fact REPLACES one of them, call revise_fact so history stays coherent.',
|
|
201
|
+
}
|
|
202
|
+
: {}),
|
|
203
|
+
};
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function reviseFactTool(kg, manager) {
|
|
208
|
+
return {
|
|
209
|
+
name: 'revise_fact',
|
|
210
|
+
description: 'Correct or retire a stored fact when reality changed or it was wrong. ' +
|
|
211
|
+
'"update" replaces it with new text; "invalidate" retires it with no replacement. ' +
|
|
212
|
+
'The old fact is kept as history (what was believed and when), never deleted. ' +
|
|
213
|
+
'Target the existing fact by quoting it (or its id from recall_entity).',
|
|
214
|
+
parameters: z.object({
|
|
215
|
+
entityName: z.string().describe('Entity the fact belongs to'),
|
|
216
|
+
action: z.enum(['update', 'invalidate']),
|
|
217
|
+
target: z.string().describe('The stored fact to revise — its text (or observation id)'),
|
|
218
|
+
replacement: z.string().optional().describe('The corrected fact (required for update)'),
|
|
219
|
+
reason: z.string().describe('Why this changed — shown in the history'),
|
|
220
|
+
evidenceSessionIds: z
|
|
221
|
+
.array(z.string())
|
|
222
|
+
.optional()
|
|
223
|
+
.describe('Session ids showing the change (required when reflecting on user-stated facts)'),
|
|
224
|
+
}),
|
|
225
|
+
visibility: 'internal',
|
|
226
|
+
handler: async (params, ctx) => {
|
|
227
|
+
const { entityName, action, target, replacement, reason, evidenceSessionIds } = params;
|
|
228
|
+
if (action === 'update' && !replacement?.trim()) {
|
|
229
|
+
return { revised: false, message: 'update needs a replacement — the corrected fact text.' };
|
|
230
|
+
}
|
|
231
|
+
const history = await kg.getObservationHistory(entityName);
|
|
232
|
+
if (history.length === 0) {
|
|
233
|
+
const entity = await kg.getEntityByName(entityName);
|
|
234
|
+
if (!entity)
|
|
235
|
+
return { revised: false, message: `No entity named "${entityName}".` };
|
|
236
|
+
}
|
|
237
|
+
const active = history.filter((o) => o.validUntil === null);
|
|
238
|
+
// Resolve the target: id → exact text → meaning. Ambiguity returns the
|
|
239
|
+
// candidates instead of guessing — a wrong revision is worse than none.
|
|
240
|
+
let resolved = active.find((o) => o.id === target) ??
|
|
241
|
+
active.find((o) => sameText(o.content, target));
|
|
242
|
+
if (!resolved && active.length > 0) {
|
|
243
|
+
const vector = await manager.embed(target);
|
|
244
|
+
if (vector) {
|
|
245
|
+
const similar = await kg.findSimilarObservations({ embedding: vector }, { entityName, threshold: TARGET_RESOLVE_THRESHOLD, limit: 1 });
|
|
246
|
+
if (similar[0]) {
|
|
247
|
+
resolved = active.find((o) => o.id === similar[0].observationId);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
if (!resolved) {
|
|
252
|
+
return {
|
|
253
|
+
revised: false,
|
|
254
|
+
message: 'No stored fact matches that target closely enough. Quote one of these exactly:',
|
|
255
|
+
candidates: active.slice(0, 10).map((o) => ({ id: o.id, content: o.content })),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
const targetRow = resolved;
|
|
259
|
+
// A nightly reflection may not silently kill what the user stated
|
|
260
|
+
// themselves — it must cite the sessions that show the change. The
|
|
261
|
+
// origin is mechanical (host-minted session ids), so this cannot be
|
|
262
|
+
// prompted away.
|
|
263
|
+
if (targetRow.origin === 'user' &&
|
|
264
|
+
callerOrigin(ctx) === 'reflection' &&
|
|
265
|
+
(evidenceSessionIds?.length ?? 0) === 0) {
|
|
266
|
+
return {
|
|
267
|
+
revised: false,
|
|
268
|
+
message: 'That fact was stated by the user. Revising it from reflection requires evidenceSessionIds citing where the change was observed — or leave it for the user to correct.',
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
const contentEmbedding = action === 'update' ? await manager.embed(replacement.trim()) : null;
|
|
272
|
+
// The entity vector must describe the post-revision active set.
|
|
273
|
+
const nextActive = [
|
|
274
|
+
...active.filter((o) => o.id !== targetRow.id).map((o) => o.content),
|
|
275
|
+
...(action === 'update' ? [replacement.trim()] : []),
|
|
276
|
+
];
|
|
277
|
+
const entity = await kg.getEntityByName(entityName);
|
|
278
|
+
const entityEmbedding = await manager.embed([entityName, entity?.entityType ?? '', ...nextActive].join(' — '));
|
|
279
|
+
const result = await kg.reviseObservation({
|
|
280
|
+
entityName,
|
|
281
|
+
action,
|
|
282
|
+
target: targetRow.id,
|
|
283
|
+
...(action === 'update' ? { content: replacement.trim() } : {}),
|
|
284
|
+
reason,
|
|
285
|
+
provenance: {
|
|
286
|
+
origin: callerOrigin(ctx),
|
|
287
|
+
sourceSessionId: ctx?.sessionId ?? null,
|
|
288
|
+
...(evidenceSessionIds ? { evidenceSessionIds } : {}),
|
|
289
|
+
},
|
|
290
|
+
...(contentEmbedding ? { contentEmbedding } : {}),
|
|
291
|
+
...(entityEmbedding ? { entityEmbedding } : {}),
|
|
292
|
+
});
|
|
293
|
+
if (result.outcome === 'noop') {
|
|
294
|
+
return { revised: false, outcome: result.outcome, reason: result.noopReason };
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
revised: true,
|
|
298
|
+
outcome: result.outcome,
|
|
299
|
+
was: targetRow.content,
|
|
300
|
+
...(action === 'update' ? { now: replacement.trim() } : {}),
|
|
301
|
+
activeObservations: result.activeObservations,
|
|
110
302
|
};
|
|
111
303
|
},
|
|
112
304
|
};
|
|
@@ -119,7 +311,10 @@ function recallEntityTool(kg) {
|
|
|
119
311
|
'about a person, project, tool, or concept.',
|
|
120
312
|
parameters: z.object({
|
|
121
313
|
name: z.string().describe('Exact name of the entity to recall'),
|
|
122
|
-
includeHistory: z
|
|
314
|
+
includeHistory: z
|
|
315
|
+
.boolean()
|
|
316
|
+
.optional()
|
|
317
|
+
.describe('Include superseded/invalidated facts and expired relations (default: false)'),
|
|
123
318
|
}),
|
|
124
319
|
visibility: 'internal',
|
|
125
320
|
handler: async (params) => {
|
|
@@ -131,6 +326,19 @@ function recallEntityTool(kg) {
|
|
|
131
326
|
const relations = await kg.getEntityRelations(name, {
|
|
132
327
|
includeExpired: includeHistory ?? false,
|
|
133
328
|
});
|
|
329
|
+
// What was believed before and why it changed — capped so a
|
|
330
|
+
// heavily-revised entity cannot flood the prompt.
|
|
331
|
+
const history = includeHistory
|
|
332
|
+
? (await kg.getObservationHistory(name)).slice(0, 20).map((o) => ({
|
|
333
|
+
id: o.id,
|
|
334
|
+
content: o.content,
|
|
335
|
+
active: o.validUntil === null,
|
|
336
|
+
origin: o.origin,
|
|
337
|
+
reason: o.reason,
|
|
338
|
+
validFrom: o.validFrom.toISOString(),
|
|
339
|
+
validUntil: o.validUntil?.toISOString() ?? null,
|
|
340
|
+
}))
|
|
341
|
+
: undefined;
|
|
134
342
|
return {
|
|
135
343
|
found: true,
|
|
136
344
|
entity: {
|
|
@@ -140,6 +348,7 @@ function recallEntityTool(kg) {
|
|
|
140
348
|
createdAt: entity.createdAt.toISOString(),
|
|
141
349
|
updatedAt: entity.updatedAt.toISOString(),
|
|
142
350
|
},
|
|
351
|
+
...(history ? { observationHistory: history } : {}),
|
|
143
352
|
relations: relations.map((r) => ({
|
|
144
353
|
from: r.fromName,
|
|
145
354
|
to: r.toName,
|
|
@@ -234,14 +443,20 @@ function recallRecentEpisodesTool(manager) {
|
|
|
234
443
|
domain: z.string().optional().describe('Filter by domain/topic'),
|
|
235
444
|
tags: z.array(z.string()).optional().describe('Filter by tags'),
|
|
236
445
|
limit: z.number().optional().describe('Max episodes to return (default: 5)'),
|
|
446
|
+
sinceIso: z
|
|
447
|
+
.string()
|
|
448
|
+
.optional()
|
|
449
|
+
.describe('Only episodes started after this ISO-8601 instant'),
|
|
237
450
|
}),
|
|
238
451
|
visibility: 'internal',
|
|
239
452
|
handler: async (params) => {
|
|
240
|
-
const { domain, tags, limit } = params;
|
|
453
|
+
const { domain, tags, limit, sinceIso } = params;
|
|
454
|
+
const sinceDate = sinceIso ? new Date(sinceIso) : undefined;
|
|
241
455
|
const episodes = await manager.mtm.getRecent({
|
|
242
456
|
domain,
|
|
243
457
|
tags,
|
|
244
458
|
limit: limit ?? 5,
|
|
459
|
+
...(sinceDate && !Number.isNaN(sinceDate.getTime()) ? { sinceDate } : {}),
|
|
245
460
|
});
|
|
246
461
|
if (episodes.length === 0) {
|
|
247
462
|
return { found: false, message: 'No recent episodes found.' };
|
package/dist/memory-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../src/memory-tools.ts"],"names":[],"mappings":"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"}
|