@mce-bt/microagents-memory 0.11.0 → 0.13.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/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 +96 -1
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +367 -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 +221 -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,8 @@ 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;
|
|
79
136
|
}): Promise<Entity>;
|
|
80
137
|
/**
|
|
81
138
|
* Get an entity by name (scoped to this agent).
|
|
@@ -89,12 +146,49 @@ export declare class KnowledgeGraph {
|
|
|
89
146
|
getEntityById(id: string): Promise<Entity | null>;
|
|
90
147
|
/**
|
|
91
148
|
* Add observations to an existing entity. Deduplicates automatically.
|
|
149
|
+
* Routes through the observation history — signature unchanged.
|
|
92
150
|
*/
|
|
93
151
|
addObservations(entityName: string, observations: string[]): Promise<string[]>;
|
|
94
152
|
/**
|
|
95
|
-
* Remove specific observations from an entity.
|
|
153
|
+
* Remove specific observations from an entity. History is preserved: each
|
|
154
|
+
* removal is an INVALIDATE, never a delete — signature unchanged.
|
|
96
155
|
*/
|
|
97
156
|
removeObservations(entityName: string, observations: string[]): Promise<void>;
|
|
157
|
+
private static obsId;
|
|
158
|
+
/** Equality for "the same fact written twice": case- and whitespace-blind. */
|
|
159
|
+
private static sameContent;
|
|
160
|
+
/**
|
|
161
|
+
* The one write-path for observation state. Runs in a transaction holding
|
|
162
|
+
* `FOR UPDATE` on the entity row (also closing the projection's historical
|
|
163
|
+
* lost-update race), lazily backfills `origin='legacy'` history rows the
|
|
164
|
+
* first time a pre-history entity is touched, applies the revision to
|
|
165
|
+
* kg_observations, and rewrites `kg_entities.observations` as the active-set
|
|
166
|
+
* projection of the same instant.
|
|
167
|
+
*
|
|
168
|
+
* NOOPs are returned, never thrown — the caller (often a model) needs the
|
|
169
|
+
* outcome as data, and "nothing changed" is a legitimate one.
|
|
170
|
+
*/
|
|
171
|
+
reviseObservation(input: ReviseObservationInput): Promise<ReviseResult>;
|
|
172
|
+
/**
|
|
173
|
+
* Full temporal record for one entity: what was believed when, what
|
|
174
|
+
* replaced what, and why. Newest first.
|
|
175
|
+
*/
|
|
176
|
+
getObservationHistory(entityName: string): Promise<ObservationRow[]>;
|
|
177
|
+
/**
|
|
178
|
+
* Active observations similar to a vector, across the whole scope — the
|
|
179
|
+
* write-time dup check. ILIKE fallback when no vector is available, so the
|
|
180
|
+
* check degrades rather than disappears without an embedder.
|
|
181
|
+
*/
|
|
182
|
+
findSimilarObservations(query: {
|
|
183
|
+
embedding?: number[];
|
|
184
|
+
text?: string;
|
|
185
|
+
}, options?: {
|
|
186
|
+
entityName?: string;
|
|
187
|
+
threshold?: number;
|
|
188
|
+
limit?: number;
|
|
189
|
+
}): Promise<SimilarObservation[]>;
|
|
190
|
+
/** Entities whose vector no longer matches their facts — repair by re-store. */
|
|
191
|
+
listStaleEmbeddingEntities(limit?: number): Promise<Entity[]>;
|
|
98
192
|
/**
|
|
99
193
|
* Delete an entity and all its relations (cascading).
|
|
100
194
|
*/
|
|
@@ -186,6 +280,7 @@ export declare class KnowledgeGraph {
|
|
|
186
280
|
*/
|
|
187
281
|
getEntityTypeCounts(): Promise<Record<string, number>>;
|
|
188
282
|
private rowToEntity;
|
|
283
|
+
private rowToObservation;
|
|
189
284
|
private rowToRelation;
|
|
190
285
|
}
|
|
191
286
|
//# 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":"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,wFAAwF;IACxF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,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;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,6FAA6F;IAC7F,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IACtD,UAAU,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,WAAW,GAAG,kBAAkB,CAAC;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,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;IAyG1B;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,sEAAsE;QACtE,UAAU,CAAC,EAAE,qBAAqB,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,CAAC;IAqHnB;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY3D;;;;OAIG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYvD;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcpF;;;OAGG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAenF,OAAO,CAAC,MAAM,CAAC,KAAK;IAIpB,8EAA8E;IAC9E,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B;;;;;;;;;;OAUG;IACG,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC;IA+L7E;;;OAGG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAe1E;;;;OAIG;IACG,uBAAuB,CAC3B,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAC9C,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACxE,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAiEhC,gFAAgF;IAC1E,0BAA0B,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY/D;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,SAAS,CAAC,EAAE,IAAI,CAAC;KAClB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA2D5B;;;OAGG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAejB;;;OAGG;IACG,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACzC,OAAO,CAAC,CAAC,QAAQ,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAiC/D;;OAEG;IACG,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmC5E;;OAEG;IACG,yBAAyB,CAC7B,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,CAAC,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAwC/C;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IA+B3D;;OAEG;IACG,SAAS,CAAC,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BnF;;OAEG;IACG,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACpC,OAAO,CAAC,QAAQ,EAAE,CAAC;IA2BtB;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoB7F;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE;QAC5B,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAsB5B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAmB5D,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,aAAa;CActB"}
|
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,27 @@ 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 content of input.observations ?? []) {
|
|
154
|
+
const result = await this.reviseObservation({
|
|
155
|
+
entityName: input.name,
|
|
156
|
+
action: 'add',
|
|
157
|
+
content,
|
|
158
|
+
provenance: input.provenance,
|
|
159
|
+
});
|
|
160
|
+
if (result.outcome === 'added')
|
|
161
|
+
observations = result.activeObservations;
|
|
162
|
+
}
|
|
119
163
|
const mergedMeta = { ...existing.metadata, ...(input.metadata ?? {}) };
|
|
120
|
-
const embeddingStr = input.embedding
|
|
121
|
-
? `[${input.embedding.join(',')}]`
|
|
122
|
-
: null;
|
|
164
|
+
const embeddingStr = input.embedding ? `[${input.embedding.join(',')}]` : null;
|
|
123
165
|
if (embeddingStr) {
|
|
124
166
|
await this.pool.query(`UPDATE kg_entities
|
|
125
|
-
SET
|
|
126
|
-
embedding = $
|
|
127
|
-
WHERE id = $
|
|
128
|
-
mergedObs,
|
|
167
|
+
SET metadata = $1, entity_type = $2,
|
|
168
|
+
embedding = $3::vector, embedding_stale = FALSE, updated_at = NOW()
|
|
169
|
+
WHERE id = $4 AND namespace = $5 AND agent_id = $6`, [
|
|
129
170
|
JSON.stringify(mergedMeta),
|
|
130
171
|
input.entityType,
|
|
131
172
|
embeddingStr,
|
|
@@ -136,9 +177,8 @@ export class KnowledgeGraph {
|
|
|
136
177
|
}
|
|
137
178
|
else {
|
|
138
179
|
await this.pool.query(`UPDATE kg_entities
|
|
139
|
-
SET
|
|
140
|
-
WHERE id = $
|
|
141
|
-
mergedObs,
|
|
180
|
+
SET metadata = $1, entity_type = $2, updated_at = NOW()
|
|
181
|
+
WHERE id = $3 AND namespace = $4 AND agent_id = $5`, [
|
|
142
182
|
JSON.stringify(mergedMeta),
|
|
143
183
|
input.entityType,
|
|
144
184
|
existing.id,
|
|
@@ -148,7 +188,7 @@ export class KnowledgeGraph {
|
|
|
148
188
|
}
|
|
149
189
|
return {
|
|
150
190
|
...existing,
|
|
151
|
-
observations
|
|
191
|
+
observations,
|
|
152
192
|
metadata: mergedMeta,
|
|
153
193
|
entityType: input.entityType,
|
|
154
194
|
updatedAt: new Date(),
|
|
@@ -170,6 +210,24 @@ export class KnowledgeGraph {
|
|
|
170
210
|
embeddingStr,
|
|
171
211
|
JSON.stringify(input.metadata ?? {}),
|
|
172
212
|
]);
|
|
213
|
+
// Seed history alongside the projection — a brand-new entity's facts get
|
|
214
|
+
// real provenance rather than waiting for a lazy legacy backfill.
|
|
215
|
+
const origin = input.provenance?.origin ?? 'content';
|
|
216
|
+
for (const content of input.observations ?? []) {
|
|
217
|
+
await this.pool.query(`INSERT INTO kg_observations
|
|
218
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
219
|
+
source_session_id, evidence_session_ids)
|
|
220
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)`, [
|
|
221
|
+
KnowledgeGraph.obsId(),
|
|
222
|
+
id,
|
|
223
|
+
this.agentId,
|
|
224
|
+
this.namespace,
|
|
225
|
+
content,
|
|
226
|
+
origin,
|
|
227
|
+
input.provenance?.sourceSessionId ?? null,
|
|
228
|
+
input.provenance?.evidenceSessionIds ?? [],
|
|
229
|
+
]);
|
|
230
|
+
}
|
|
173
231
|
return {
|
|
174
232
|
id,
|
|
175
233
|
agentId: this.agentId,
|
|
@@ -207,33 +265,298 @@ export class KnowledgeGraph {
|
|
|
207
265
|
}
|
|
208
266
|
/**
|
|
209
267
|
* Add observations to an existing entity. Deduplicates automatically.
|
|
268
|
+
* Routes through the observation history — signature unchanged.
|
|
210
269
|
*/
|
|
211
270
|
async addObservations(entityName, observations) {
|
|
212
271
|
if (!this.pool)
|
|
213
272
|
throw new Error('KnowledgeGraph not started');
|
|
214
|
-
const
|
|
215
|
-
if (!
|
|
273
|
+
const exists = await this.getEntityByName(entityName);
|
|
274
|
+
if (!exists)
|
|
216
275
|
throw new Error(`Entity "${entityName}" not found`);
|
|
217
|
-
const
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
return
|
|
276
|
+
const added = [];
|
|
277
|
+
for (const content of observations) {
|
|
278
|
+
const result = await this.reviseObservation({ entityName, action: 'add', content });
|
|
279
|
+
if (result.outcome === 'added')
|
|
280
|
+
added.push(content);
|
|
281
|
+
}
|
|
282
|
+
return added;
|
|
224
283
|
}
|
|
225
284
|
/**
|
|
226
|
-
* Remove specific observations from an entity.
|
|
285
|
+
* Remove specific observations from an entity. History is preserved: each
|
|
286
|
+
* removal is an INVALIDATE, never a delete — signature unchanged.
|
|
227
287
|
*/
|
|
228
288
|
async removeObservations(entityName, observations) {
|
|
289
|
+
if (!this.pool)
|
|
290
|
+
throw new Error('KnowledgeGraph not started');
|
|
291
|
+
for (const content of observations) {
|
|
292
|
+
await this.reviseObservation({
|
|
293
|
+
entityName,
|
|
294
|
+
action: 'invalidate',
|
|
295
|
+
target: content,
|
|
296
|
+
reason: 'removed',
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// ─── Observation history (temporal, mirrors kg_relations) ───
|
|
301
|
+
static obsId() {
|
|
302
|
+
return `obs-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
303
|
+
}
|
|
304
|
+
/** Equality for "the same fact written twice": case- and whitespace-blind. */
|
|
305
|
+
static sameContent(a, b) {
|
|
306
|
+
const key = (s) => s.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
307
|
+
return key(a) === key(b);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The one write-path for observation state. Runs in a transaction holding
|
|
311
|
+
* `FOR UPDATE` on the entity row (also closing the projection's historical
|
|
312
|
+
* lost-update race), lazily backfills `origin='legacy'` history rows the
|
|
313
|
+
* first time a pre-history entity is touched, applies the revision to
|
|
314
|
+
* kg_observations, and rewrites `kg_entities.observations` as the active-set
|
|
315
|
+
* projection of the same instant.
|
|
316
|
+
*
|
|
317
|
+
* NOOPs are returned, never thrown — the caller (often a model) needs the
|
|
318
|
+
* outcome as data, and "nothing changed" is a legitimate one.
|
|
319
|
+
*/
|
|
320
|
+
async reviseObservation(input) {
|
|
321
|
+
if (!this.pool)
|
|
322
|
+
throw new Error('KnowledgeGraph not started');
|
|
323
|
+
const client = await this.pool.connect();
|
|
324
|
+
try {
|
|
325
|
+
await client.query('BEGIN');
|
|
326
|
+
const entityRes = await client.query(`SELECT * FROM kg_entities
|
|
327
|
+
WHERE namespace = $1 AND agent_id = $2 AND name = $3
|
|
328
|
+
FOR UPDATE`, [this.namespace, this.agentId, input.entityName]);
|
|
329
|
+
if (entityRes.rows.length === 0) {
|
|
330
|
+
await client.query('ROLLBACK');
|
|
331
|
+
return { outcome: 'noop', noopReason: 'entity_not_found', activeObservations: [] };
|
|
332
|
+
}
|
|
333
|
+
const entity = this.rowToEntity(entityRes.rows[0]);
|
|
334
|
+
const hadEmbedding = entityRes.rows[0].embedding != null;
|
|
335
|
+
// Lazy backfill: entities written before this table existed get their
|
|
336
|
+
// projection seeded as history exactly once, on first revision.
|
|
337
|
+
const countRes = await client.query('SELECT COUNT(*)::int AS n FROM kg_observations WHERE entity_id = $1', [entity.id]);
|
|
338
|
+
if (countRes.rows[0].n === 0 && entity.observations.length > 0) {
|
|
339
|
+
for (const content of entity.observations) {
|
|
340
|
+
await client.query(`INSERT INTO kg_observations
|
|
341
|
+
(id, entity_id, agent_id, namespace, content, valid_from, origin)
|
|
342
|
+
VALUES ($1, $2, $3, $4, $5, $6, 'legacy')`, [KnowledgeGraph.obsId(), entity.id, this.agentId, this.namespace, content, entity.createdAt]);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const activeRes = await client.query(`SELECT * FROM kg_observations
|
|
346
|
+
WHERE entity_id = $1 AND valid_until IS NULL
|
|
347
|
+
ORDER BY valid_from, created_at`, [entity.id]);
|
|
348
|
+
const active = activeRes.rows.map(this.rowToObservation);
|
|
349
|
+
const provenance = input.provenance ?? {};
|
|
350
|
+
const origin = provenance.origin ?? 'content';
|
|
351
|
+
const contentVec = input.contentEmbedding ? `[${input.contentEmbedding.join(',')}]` : null;
|
|
352
|
+
let result;
|
|
353
|
+
if (input.action === 'add') {
|
|
354
|
+
const content = (input.content ?? '').trim();
|
|
355
|
+
const dup = active.find((o) => KnowledgeGraph.sameContent(o.content, content));
|
|
356
|
+
if (!content || dup) {
|
|
357
|
+
await client.query('ROLLBACK');
|
|
358
|
+
return {
|
|
359
|
+
outcome: 'noop',
|
|
360
|
+
noopReason: 'duplicate',
|
|
361
|
+
observationId: dup?.id,
|
|
362
|
+
activeObservations: active.map((o) => o.content),
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
const id = KnowledgeGraph.obsId();
|
|
366
|
+
await client.query(`INSERT INTO kg_observations
|
|
367
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
368
|
+
source_session_id, evidence_session_ids, embedding)
|
|
369
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::vector)`, [
|
|
370
|
+
id,
|
|
371
|
+
entity.id,
|
|
372
|
+
this.agentId,
|
|
373
|
+
this.namespace,
|
|
374
|
+
content,
|
|
375
|
+
origin,
|
|
376
|
+
provenance.sourceSessionId ?? null,
|
|
377
|
+
provenance.evidenceSessionIds ?? [],
|
|
378
|
+
contentVec,
|
|
379
|
+
]);
|
|
380
|
+
result = {
|
|
381
|
+
outcome: 'added',
|
|
382
|
+
observationId: id,
|
|
383
|
+
activeObservations: [...active.map((o) => o.content), content],
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
// update / invalidate need a resolved target: an id or exact content.
|
|
388
|
+
const target = (input.target ?? '').trim();
|
|
389
|
+
const match = active.find((o) => o.id === target) ??
|
|
390
|
+
active.find((o) => KnowledgeGraph.sameContent(o.content, target));
|
|
391
|
+
if (!match) {
|
|
392
|
+
await client.query('ROLLBACK');
|
|
393
|
+
return {
|
|
394
|
+
outcome: 'noop',
|
|
395
|
+
noopReason: 'target_not_found',
|
|
396
|
+
activeObservations: active.map((o) => o.content),
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
if (input.action === 'update') {
|
|
400
|
+
const content = (input.content ?? '').trim();
|
|
401
|
+
if (!content || KnowledgeGraph.sameContent(content, match.content)) {
|
|
402
|
+
await client.query('ROLLBACK');
|
|
403
|
+
return {
|
|
404
|
+
outcome: 'noop',
|
|
405
|
+
noopReason: 'unchanged',
|
|
406
|
+
observationId: match.id,
|
|
407
|
+
activeObservations: active.map((o) => o.content),
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
const id = KnowledgeGraph.obsId();
|
|
411
|
+
await client.query(`INSERT INTO kg_observations
|
|
412
|
+
(id, entity_id, agent_id, namespace, content, origin,
|
|
413
|
+
source_session_id, evidence_session_ids, embedding)
|
|
414
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::vector)`, [
|
|
415
|
+
id,
|
|
416
|
+
entity.id,
|
|
417
|
+
this.agentId,
|
|
418
|
+
this.namespace,
|
|
419
|
+
content,
|
|
420
|
+
origin,
|
|
421
|
+
provenance.sourceSessionId ?? null,
|
|
422
|
+
provenance.evidenceSessionIds ?? [],
|
|
423
|
+
contentVec,
|
|
424
|
+
]);
|
|
425
|
+
await client.query(`UPDATE kg_observations
|
|
426
|
+
SET valid_until = NOW(), superseded_by = $1, reason = $2
|
|
427
|
+
WHERE id = $3`, [id, input.reason ?? null, match.id]);
|
|
428
|
+
result = {
|
|
429
|
+
outcome: 'updated',
|
|
430
|
+
observationId: id,
|
|
431
|
+
supersededId: match.id,
|
|
432
|
+
activeObservations: [
|
|
433
|
+
...active.filter((o) => o.id !== match.id).map((o) => o.content),
|
|
434
|
+
content,
|
|
435
|
+
],
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
await client.query(`UPDATE kg_observations SET valid_until = NOW(), reason = $1 WHERE id = $2`, [input.reason ?? null, match.id]);
|
|
440
|
+
result = {
|
|
441
|
+
outcome: 'invalidated',
|
|
442
|
+
supersededId: match.id,
|
|
443
|
+
activeObservations: active.filter((o) => o.id !== match.id).map((o) => o.content),
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// Projection rewrite, same transaction: the array column always shows
|
|
448
|
+
// exactly the active set. A changed projection with no fresh entity
|
|
449
|
+
// vector leaves the old vector describing the wrong facts — flagged,
|
|
450
|
+
// not silent; a provided vector clears the flag.
|
|
451
|
+
const entityVec = input.entityEmbedding ? `[${input.entityEmbedding.join(',')}]` : null;
|
|
452
|
+
if (entityVec) {
|
|
453
|
+
await client.query(`UPDATE kg_entities
|
|
454
|
+
SET observations = $1, embedding = $2::vector,
|
|
455
|
+
embedding_stale = FALSE, updated_at = NOW()
|
|
456
|
+
WHERE id = $3`, [result.activeObservations, entityVec, entity.id]);
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
await client.query(`UPDATE kg_entities
|
|
460
|
+
SET observations = $1,
|
|
461
|
+
embedding_stale = (embedding_stale OR $2), updated_at = NOW()
|
|
462
|
+
WHERE id = $3`, [result.activeObservations, hadEmbedding, entity.id]);
|
|
463
|
+
}
|
|
464
|
+
await client.query('COMMIT');
|
|
465
|
+
return result;
|
|
466
|
+
}
|
|
467
|
+
catch (err) {
|
|
468
|
+
await client.query('ROLLBACK').catch(() => { });
|
|
469
|
+
throw err;
|
|
470
|
+
}
|
|
471
|
+
finally {
|
|
472
|
+
client.release();
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Full temporal record for one entity: what was believed when, what
|
|
477
|
+
* replaced what, and why. Newest first.
|
|
478
|
+
*/
|
|
479
|
+
async getObservationHistory(entityName) {
|
|
229
480
|
if (!this.pool)
|
|
230
481
|
throw new Error('KnowledgeGraph not started');
|
|
231
482
|
const entity = await this.getEntityByName(entityName);
|
|
232
483
|
if (!entity)
|
|
233
|
-
return;
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
484
|
+
return [];
|
|
485
|
+
const result = await this.pool.query(`SELECT * FROM kg_observations
|
|
486
|
+
WHERE entity_id = $1
|
|
487
|
+
ORDER BY valid_from DESC, created_at DESC`, [entity.id]);
|
|
488
|
+
return result.rows.map(this.rowToObservation);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Active observations similar to a vector, across the whole scope — the
|
|
492
|
+
* write-time dup check. ILIKE fallback when no vector is available, so the
|
|
493
|
+
* check degrades rather than disappears without an embedder.
|
|
494
|
+
*/
|
|
495
|
+
async findSimilarObservations(query, options = {}) {
|
|
496
|
+
if (!this.pool)
|
|
497
|
+
throw new Error('KnowledgeGraph not started');
|
|
498
|
+
const limit = options.limit ?? 5;
|
|
499
|
+
if (query.embedding) {
|
|
500
|
+
const threshold = options.threshold ?? DEFAULT_SIMILARITY_THRESHOLD;
|
|
501
|
+
const conditions = [
|
|
502
|
+
'o.namespace = $1',
|
|
503
|
+
'o.agent_id = $2',
|
|
504
|
+
'o.valid_until IS NULL',
|
|
505
|
+
'o.embedding IS NOT NULL',
|
|
506
|
+
];
|
|
507
|
+
const params = [this.namespace, this.agentId];
|
|
508
|
+
let idx = 3;
|
|
509
|
+
if (options.entityName) {
|
|
510
|
+
conditions.push(`e.name = $${idx}`);
|
|
511
|
+
params.push(options.entityName);
|
|
512
|
+
idx++;
|
|
513
|
+
}
|
|
514
|
+
const vec = `[${query.embedding.join(',')}]`;
|
|
515
|
+
const result = await this.pool.query(`SELECT o.id, o.content, e.name AS entity_name,
|
|
516
|
+
1 - (o.embedding <=> $${idx}::vector) AS similarity
|
|
517
|
+
FROM kg_observations o
|
|
518
|
+
JOIN kg_entities e ON e.id = o.entity_id
|
|
519
|
+
WHERE ${conditions.join(' AND ')}
|
|
520
|
+
AND 1 - (o.embedding <=> $${idx}::vector) >= $${idx + 1}
|
|
521
|
+
ORDER BY o.embedding <=> $${idx}::vector
|
|
522
|
+
LIMIT $${idx + 2}`, [...params, vec, threshold, limit]);
|
|
523
|
+
return result.rows.map((row) => ({
|
|
524
|
+
entityName: row.entity_name,
|
|
525
|
+
observationId: row.id,
|
|
526
|
+
content: row.content,
|
|
527
|
+
similarity: parseFloat(row.similarity),
|
|
528
|
+
}));
|
|
529
|
+
}
|
|
530
|
+
if (!query.text)
|
|
531
|
+
return [];
|
|
532
|
+
const conditions = ['o.namespace = $1', 'o.agent_id = $2', 'o.valid_until IS NULL'];
|
|
533
|
+
const params = [this.namespace, this.agentId];
|
|
534
|
+
let idx = 3;
|
|
535
|
+
if (options.entityName) {
|
|
536
|
+
conditions.push(`e.name = $${idx}`);
|
|
537
|
+
params.push(options.entityName);
|
|
538
|
+
idx++;
|
|
539
|
+
}
|
|
540
|
+
const result = await this.pool.query(`SELECT o.id, o.content, e.name AS entity_name
|
|
541
|
+
FROM kg_observations o
|
|
542
|
+
JOIN kg_entities e ON e.id = o.entity_id
|
|
543
|
+
WHERE ${conditions.join(' AND ')} AND o.content ILIKE $${idx}
|
|
544
|
+
LIMIT $${idx + 1}`, [...params, `%${query.text}%`, limit]);
|
|
545
|
+
return result.rows.map((row) => ({
|
|
546
|
+
entityName: row.entity_name,
|
|
547
|
+
observationId: row.id,
|
|
548
|
+
content: row.content,
|
|
549
|
+
similarity: 1,
|
|
550
|
+
}));
|
|
551
|
+
}
|
|
552
|
+
/** Entities whose vector no longer matches their facts — repair by re-store. */
|
|
553
|
+
async listStaleEmbeddingEntities(limit = 20) {
|
|
554
|
+
if (!this.pool)
|
|
555
|
+
throw new Error('KnowledgeGraph not started');
|
|
556
|
+
const result = await this.pool.query(`SELECT * FROM kg_entities
|
|
557
|
+
WHERE namespace = $1 AND agent_id = $2 AND embedding_stale
|
|
558
|
+
ORDER BY updated_at DESC LIMIT $3`, [this.namespace, this.agentId, limit]);
|
|
559
|
+
return result.rows.map(this.rowToEntity);
|
|
237
560
|
}
|
|
238
561
|
/**
|
|
239
562
|
* Delete an entity and all its relations (cascading).
|
|
@@ -537,11 +860,27 @@ export class KnowledgeGraph {
|
|
|
537
860
|
name: row.name,
|
|
538
861
|
entityType: row.entity_type,
|
|
539
862
|
observations: (row.observations ?? []),
|
|
863
|
+
embeddingStale: row.embedding_stale ?? false,
|
|
540
864
|
metadata: (row.metadata ?? {}),
|
|
541
865
|
createdAt: new Date(row.created_at),
|
|
542
866
|
updatedAt: new Date(row.updated_at),
|
|
543
867
|
};
|
|
544
868
|
}
|
|
869
|
+
rowToObservation(row) {
|
|
870
|
+
return {
|
|
871
|
+
id: row.id,
|
|
872
|
+
entityId: row.entity_id,
|
|
873
|
+
content: row.content,
|
|
874
|
+
validFrom: new Date(row.valid_from),
|
|
875
|
+
validUntil: row.valid_until ? new Date(row.valid_until) : null,
|
|
876
|
+
supersededBy: row.superseded_by ?? null,
|
|
877
|
+
reason: row.reason ?? null,
|
|
878
|
+
origin: row.origin,
|
|
879
|
+
sourceSessionId: row.source_session_id ?? null,
|
|
880
|
+
evidenceSessionIds: (row.evidence_session_ids ?? []),
|
|
881
|
+
createdAt: new Date(row.created_at),
|
|
882
|
+
};
|
|
883
|
+
}
|
|
545
884
|
rowToRelation(row) {
|
|
546
885
|
return {
|
|
547
886
|
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,198 @@ 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,
|
|
104
182
|
...(embedding ? { embedding } : {}),
|
|
183
|
+
provenance: {
|
|
184
|
+
origin: callerOrigin(ctx, origin),
|
|
185
|
+
sourceSessionId: ctx?.sessionId ?? null,
|
|
186
|
+
...(evidenceSessionIds ? { evidenceSessionIds } : {}),
|
|
187
|
+
},
|
|
105
188
|
});
|
|
106
189
|
return {
|
|
107
190
|
stored: true,
|
|
108
191
|
entity: entity.name,
|
|
109
192
|
totalObservations: entity.observations.length,
|
|
193
|
+
...(skipped.length > 0 ? { skippedDuplicates: skipped } : {}),
|
|
194
|
+
...(nearDuplicates.length > 0
|
|
195
|
+
? {
|
|
196
|
+
nearDuplicates,
|
|
197
|
+
hint: 'Similar facts already exist. If the new fact REPLACES one of them, call revise_fact so history stays coherent.',
|
|
198
|
+
}
|
|
199
|
+
: {}),
|
|
200
|
+
};
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function reviseFactTool(kg, manager) {
|
|
205
|
+
return {
|
|
206
|
+
name: 'revise_fact',
|
|
207
|
+
description: 'Correct or retire a stored fact when reality changed or it was wrong. ' +
|
|
208
|
+
'"update" replaces it with new text; "invalidate" retires it with no replacement. ' +
|
|
209
|
+
'The old fact is kept as history (what was believed and when), never deleted. ' +
|
|
210
|
+
'Target the existing fact by quoting it (or its id from recall_entity).',
|
|
211
|
+
parameters: z.object({
|
|
212
|
+
entityName: z.string().describe('Entity the fact belongs to'),
|
|
213
|
+
action: z.enum(['update', 'invalidate']),
|
|
214
|
+
target: z.string().describe('The stored fact to revise — its text (or observation id)'),
|
|
215
|
+
replacement: z.string().optional().describe('The corrected fact (required for update)'),
|
|
216
|
+
reason: z.string().describe('Why this changed — shown in the history'),
|
|
217
|
+
evidenceSessionIds: z
|
|
218
|
+
.array(z.string())
|
|
219
|
+
.optional()
|
|
220
|
+
.describe('Session ids showing the change (required when reflecting on user-stated facts)'),
|
|
221
|
+
}),
|
|
222
|
+
visibility: 'internal',
|
|
223
|
+
handler: async (params, ctx) => {
|
|
224
|
+
const { entityName, action, target, replacement, reason, evidenceSessionIds } = params;
|
|
225
|
+
if (action === 'update' && !replacement?.trim()) {
|
|
226
|
+
return { revised: false, message: 'update needs a replacement — the corrected fact text.' };
|
|
227
|
+
}
|
|
228
|
+
const history = await kg.getObservationHistory(entityName);
|
|
229
|
+
if (history.length === 0) {
|
|
230
|
+
const entity = await kg.getEntityByName(entityName);
|
|
231
|
+
if (!entity)
|
|
232
|
+
return { revised: false, message: `No entity named "${entityName}".` };
|
|
233
|
+
}
|
|
234
|
+
const active = history.filter((o) => o.validUntil === null);
|
|
235
|
+
// Resolve the target: id → exact text → meaning. Ambiguity returns the
|
|
236
|
+
// candidates instead of guessing — a wrong revision is worse than none.
|
|
237
|
+
let resolved = active.find((o) => o.id === target) ??
|
|
238
|
+
active.find((o) => sameText(o.content, target));
|
|
239
|
+
if (!resolved && active.length > 0) {
|
|
240
|
+
const vector = await manager.embed(target);
|
|
241
|
+
if (vector) {
|
|
242
|
+
const similar = await kg.findSimilarObservations({ embedding: vector }, { entityName, threshold: TARGET_RESOLVE_THRESHOLD, limit: 1 });
|
|
243
|
+
if (similar[0]) {
|
|
244
|
+
resolved = active.find((o) => o.id === similar[0].observationId);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
if (!resolved) {
|
|
249
|
+
return {
|
|
250
|
+
revised: false,
|
|
251
|
+
message: 'No stored fact matches that target closely enough. Quote one of these exactly:',
|
|
252
|
+
candidates: active.slice(0, 10).map((o) => ({ id: o.id, content: o.content })),
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
const targetRow = resolved;
|
|
256
|
+
// A nightly reflection may not silently kill what the user stated
|
|
257
|
+
// themselves — it must cite the sessions that show the change. The
|
|
258
|
+
// origin is mechanical (host-minted session ids), so this cannot be
|
|
259
|
+
// prompted away.
|
|
260
|
+
if (targetRow.origin === 'user' &&
|
|
261
|
+
callerOrigin(ctx) === 'reflection' &&
|
|
262
|
+
(evidenceSessionIds?.length ?? 0) === 0) {
|
|
263
|
+
return {
|
|
264
|
+
revised: false,
|
|
265
|
+
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.',
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
const contentEmbedding = action === 'update' ? await manager.embed(replacement.trim()) : null;
|
|
269
|
+
// The entity vector must describe the post-revision active set.
|
|
270
|
+
const nextActive = [
|
|
271
|
+
...active.filter((o) => o.id !== targetRow.id).map((o) => o.content),
|
|
272
|
+
...(action === 'update' ? [replacement.trim()] : []),
|
|
273
|
+
];
|
|
274
|
+
const entity = await kg.getEntityByName(entityName);
|
|
275
|
+
const entityEmbedding = await manager.embed([entityName, entity?.entityType ?? '', ...nextActive].join(' — '));
|
|
276
|
+
const result = await kg.reviseObservation({
|
|
277
|
+
entityName,
|
|
278
|
+
action,
|
|
279
|
+
target: targetRow.id,
|
|
280
|
+
...(action === 'update' ? { content: replacement.trim() } : {}),
|
|
281
|
+
reason,
|
|
282
|
+
provenance: {
|
|
283
|
+
origin: callerOrigin(ctx),
|
|
284
|
+
sourceSessionId: ctx?.sessionId ?? null,
|
|
285
|
+
...(evidenceSessionIds ? { evidenceSessionIds } : {}),
|
|
286
|
+
},
|
|
287
|
+
...(contentEmbedding ? { contentEmbedding } : {}),
|
|
288
|
+
...(entityEmbedding ? { entityEmbedding } : {}),
|
|
289
|
+
});
|
|
290
|
+
if (result.outcome === 'noop') {
|
|
291
|
+
return { revised: false, outcome: result.outcome, reason: result.noopReason };
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
revised: true,
|
|
295
|
+
outcome: result.outcome,
|
|
296
|
+
was: targetRow.content,
|
|
297
|
+
...(action === 'update' ? { now: replacement.trim() } : {}),
|
|
298
|
+
activeObservations: result.activeObservations,
|
|
110
299
|
};
|
|
111
300
|
},
|
|
112
301
|
};
|
|
@@ -119,7 +308,10 @@ function recallEntityTool(kg) {
|
|
|
119
308
|
'about a person, project, tool, or concept.',
|
|
120
309
|
parameters: z.object({
|
|
121
310
|
name: z.string().describe('Exact name of the entity to recall'),
|
|
122
|
-
includeHistory: z
|
|
311
|
+
includeHistory: z
|
|
312
|
+
.boolean()
|
|
313
|
+
.optional()
|
|
314
|
+
.describe('Include superseded/invalidated facts and expired relations (default: false)'),
|
|
123
315
|
}),
|
|
124
316
|
visibility: 'internal',
|
|
125
317
|
handler: async (params) => {
|
|
@@ -131,6 +323,19 @@ function recallEntityTool(kg) {
|
|
|
131
323
|
const relations = await kg.getEntityRelations(name, {
|
|
132
324
|
includeExpired: includeHistory ?? false,
|
|
133
325
|
});
|
|
326
|
+
// What was believed before and why it changed — capped so a
|
|
327
|
+
// heavily-revised entity cannot flood the prompt.
|
|
328
|
+
const history = includeHistory
|
|
329
|
+
? (await kg.getObservationHistory(name)).slice(0, 20).map((o) => ({
|
|
330
|
+
id: o.id,
|
|
331
|
+
content: o.content,
|
|
332
|
+
active: o.validUntil === null,
|
|
333
|
+
origin: o.origin,
|
|
334
|
+
reason: o.reason,
|
|
335
|
+
validFrom: o.validFrom.toISOString(),
|
|
336
|
+
validUntil: o.validUntil?.toISOString() ?? null,
|
|
337
|
+
}))
|
|
338
|
+
: undefined;
|
|
134
339
|
return {
|
|
135
340
|
found: true,
|
|
136
341
|
entity: {
|
|
@@ -140,6 +345,7 @@ function recallEntityTool(kg) {
|
|
|
140
345
|
createdAt: entity.createdAt.toISOString(),
|
|
141
346
|
updatedAt: entity.updatedAt.toISOString(),
|
|
142
347
|
},
|
|
348
|
+
...(history ? { observationHistory: history } : {}),
|
|
143
349
|
relations: relations.map((r) => ({
|
|
144
350
|
from: r.fromName,
|
|
145
351
|
to: r.toName,
|
|
@@ -234,14 +440,20 @@ function recallRecentEpisodesTool(manager) {
|
|
|
234
440
|
domain: z.string().optional().describe('Filter by domain/topic'),
|
|
235
441
|
tags: z.array(z.string()).optional().describe('Filter by tags'),
|
|
236
442
|
limit: z.number().optional().describe('Max episodes to return (default: 5)'),
|
|
443
|
+
sinceIso: z
|
|
444
|
+
.string()
|
|
445
|
+
.optional()
|
|
446
|
+
.describe('Only episodes started after this ISO-8601 instant'),
|
|
237
447
|
}),
|
|
238
448
|
visibility: 'internal',
|
|
239
449
|
handler: async (params) => {
|
|
240
|
-
const { domain, tags, limit } = params;
|
|
450
|
+
const { domain, tags, limit, sinceIso } = params;
|
|
451
|
+
const sinceDate = sinceIso ? new Date(sinceIso) : undefined;
|
|
241
452
|
const episodes = await manager.mtm.getRecent({
|
|
242
453
|
domain,
|
|
243
454
|
tags,
|
|
244
455
|
limit: limit ?? 5,
|
|
456
|
+
...(sinceDate && !Number.isNaN(sinceDate.getTime()) ? { sinceDate } : {}),
|
|
245
457
|
});
|
|
246
458
|
if (episodes.length === 0) {
|
|
247
459
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,YAAY,CAAC,GAAoB,EAAE,OAAgB;IAC1D,IAAI,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,sBAAsB,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,yEAAyE;AACzE,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;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,EAAE,OAAO,CAAC;QAChC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC;QAC3B,gBAAgB,CAAC,EAAE,CAAC;QACpB,kBAAkB,CAAC,EAAE,CAAC;QACtB,gBAAgB,CAAC,EAAE,CAAC;QACpB,wBAAwB,CAAC,OAAO,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,2BAA2B;AAE3B,SAAS,mBAAmB,CAAC,EAAkB,EAAE,OAAsB;IACrE,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,kEAAkE;YAClE,0EAA0E;YAC1E,6EAA6E;YAC7E,2EAA2E;YAC3E,wCAAwC;QAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YACvG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC7E,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAIpC,CAAC;YAEF,mEAAmE;YACnE,uEAAuE;YACvE,kEAAkE;YAClE,wEAAwE;YACxE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAa,WAAW;gBAClC,CAAC,CAAC,MAAM,EAAE,CAAC,yBAAyB,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;gBACrF,CAAC,CAAC,EAAE,CAAC;YAEP,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC;oBACjC,KAAK;oBACL,UAAU;oBACV,KAAK,EAAE,KAAK,IAAI,EAAE;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;YACnE,CAAC;YAED,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC5B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,UAAU;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ;wBAChB,EAAE,EAAE,CAAC,CAAC,MAAM;wBACZ,IAAI,EAAE,CAAC,CAAC,YAAY;qBACrB,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAkB,EAAE,OAAsB;IAC9D,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,uEAAuE;YACvE,wEAAwE;YACxE,iFAAiF;YACjF,gFAAgF;YAChF,qFAAqF;QACvF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YAC9F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;YAC9G,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAC/F,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kEAAkE,CAAC;YAC/E,kBAAkB,EAAE,CAAC;iBAClB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,GAAoB,EAAE,EAAE;YACvD,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAM5E,CAAC;YAEF,wEAAwE;YACxE,uEAAuE;YACvE,oEAAoE;YACpE,MAAM,OAAO,GAAwE,EAAE,CAAC;YACxF,MAAM,cAAc,GAAqE,EAAE,CAAC;YAC5F,MAAM,OAAO,GAA2D,EAAE,CAAC;YAC3E,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChD,MAAM,OAAO,GAAG,MAAM;oBACpB,CAAC,CAAC,MAAM,EAAE,CAAC,uBAAuB,CAC9B,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,EAAE,SAAS,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,CAClD;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,wBAAwB,EAAE,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAC;wBACX,WAAW;wBACX,WAAW,EAAE,IAAI,CAAC,OAAO;wBACzB,MAAM,EAAE,IAAI,CAAC,UAAU;qBACxB,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACT,oEAAoE;oBACpE,cAAc,CAAC,IAAI,CAAC;wBAClB,WAAW;wBACX,QAAQ,EAAE,IAAI,CAAC,OAAO;wBACtB,MAAM,EAAE,IAAI,CAAC,UAAU;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,UAAU;oBAClB,iBAAiB,EAAE,OAAO;oBAC1B,OAAO,EACL,wFAAwF;iBAC3F,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,kEAAkE;YAClE,uEAAuE;YACvE,qEAAqE;YACrE,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,QAAQ;gBACrB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3F,CAAC,CAAC,QAAQ,CAAC;YACb,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CACnC,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAChD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC;gBACnC,IAAI,EAAE,UAAU;gBAChB,UAAU;gBACV,YAAY,EAAE,QAAQ;gBACtB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,UAAU,EAAE;oBACV,MAAM,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;oBACjC,eAAe,EAAE,GAAG,EAAE,SAAS,IAAI,IAAI;oBACvC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD;aACF,CAAC,CAAC;YAEH,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM;gBAC7C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;oBAC3B,CAAC,CAAC;wBACE,cAAc;wBACd,IAAI,EAAE,gHAAgH;qBACvH;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,EAAkB,EAAE,OAAsB;IAChE,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,wEAAwE;YACxE,mFAAmF;YACnF,+EAA+E;YAC/E,wEAAwE;QAC1E,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC7D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACvF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACvF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACtE,kBAAkB,EAAE,CAAC;iBAClB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,gFAAgF,CAAC;SAC9F,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,GAAoB,EAAE,EAAE;YACvD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAO/E,CAAC;YAEF,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;gBAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;YAC9F,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM;oBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,UAAU,IAAI,EAAE,CAAC;YACtF,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;YAE5D,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,QAAQ,GACV,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,uBAAuB,CAC9C,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,EAAE,UAAU,EAAE,SAAS,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,CAC9D,CAAC;oBACF,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBACf,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,gFAAgF;oBACzF,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC/E,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC;YAE3B,kEAAkE;YAClE,mEAAmE;YACnE,oEAAoE;YACpE,iBAAiB;YACjB,IACE,SAAS,CAAC,MAAM,KAAK,MAAM;gBAC3B,YAAY,CAAC,GAAG,CAAC,KAAK,YAAY;gBAClC,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EACvC,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EACL,uKAAuK;iBAC1K,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GACpB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,gEAAgE;YAChE,MAAM,UAAU,GAAG;gBACjB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpE,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,KAAK,CACzC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAClE,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC;gBACxC,UAAU;gBACV,MAAM;gBACN,MAAM,EAAE,SAAS,CAAC,EAAE;gBACpB,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM;gBACN,UAAU,EAAE;oBACV,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;oBACzB,eAAe,EAAE,GAAG,EAAE,SAAS,IAAI,IAAI;oBACvC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD;gBACD,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YAChF,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,EAAE,SAAS,CAAC,OAAO;gBACtB,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;aAC9C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAkB;IAC1C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sEAAsE;YACtE,sEAAsE;YACtE,4CAA4C;QAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC/D,cAAc,EAAE,CAAC;iBACd,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;SAC3F,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAGhC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,IAAI,UAAU,EAAE,CAAC;YACvE,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBAClD,cAAc,EAAE,cAAc,IAAI,KAAK;aACxC,CAAC,CAAC;YAEH,4DAA4D;YAC5D,kDAAkD;YAClD,MAAM,OAAO,GAAG,cAAc;gBAC5B,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9D,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,MAAM,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI;oBAC7B,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;oBACpC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;iBAChD,CAAC,CAAC;gBACL,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,UAAU;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;oBACzC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE;iBAC1C;gBACD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/B,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,EAAE,EAAE,CAAC,CAAC,MAAM;oBACZ,IAAI,EAAE,CAAC,CAAC,YAAY;oBACpB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;oBACpC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;oBAC/C,MAAM,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAkB;IAC5C,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,qEAAqE;YACrE,wEAAwE;YACxE,4EAA4E;YAC5E,oDAAoD;QACtD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC/C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;YAC5G,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;SACpH,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,MAK7C,CAAC;YAEF,IAAI,CAAC;gBACH,IAAI,QAAQ,CAAC;gBACb,IAAI,SAAS,EAAE,CAAC;oBACd,QAAQ,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAED,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE;4BACR,IAAI;4BACJ,EAAE;4BACF,IAAI,EAAE,YAAY;4BAClB,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE;yBAC5C;qBACF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAkB;IAC1C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,wDAAwD;YACxD,wDAAwD;QAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACrF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACnE,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAG7B,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,cAAc,CAAC;gBACvC,UAAU;gBACV,KAAK,EAAE,KAAK,IAAI,EAAE;aACnB,CAAC,CAAC;YAEH,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,UAAU;oBAClB,gBAAgB,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;iBACxC,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAsB;IACtD,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,2DAA2D;YAC3D,2DAA2D;QAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAChE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAC5E,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE,CAAC;QACF,UAAU,EAAE,UAAmB;QAC/B,OAAO,EAAE,KAAK,EAAE,MAAe,EAAE,EAAE;YACjC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAKzC,CAAC;YAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC3C,MAAM;gBACN,IAAI;gBACJ,KAAK,EAAE,KAAK,IAAI,CAAC;gBACjB,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC1E,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;YAChE,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9B,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE;oBACrC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI;iBAC3C,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|