@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 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';
@@ -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,GACnB,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,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,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"}
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,GAMf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,uBAAuB,GAMxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,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"}
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":"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"}
1
+ {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"}
@@ -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
- // Merge observations (deduplicate)
117
- const newObs = (input.observations ?? []).filter((o) => !existing.observations.includes(o));
118
- const mergedObs = [...existing.observations, ...newObs];
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 observations = $1, metadata = $2, entity_type = $3,
126
- embedding = $4::vector, updated_at = NOW()
127
- WHERE id = $5 AND namespace = $6 AND agent_id = $7`, [
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 observations = $1, metadata = $2, entity_type = $3, updated_at = NOW()
140
- WHERE id = $4 AND namespace = $5 AND agent_id = $6`, [
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: mergedObs,
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 entity = await this.getEntityByName(entityName);
215
- if (!entity)
273
+ const exists = await this.getEntityByName(entityName);
274
+ if (!exists)
216
275
  throw new Error(`Entity "${entityName}" not found`);
217
- const newObs = observations.filter((o) => !entity.observations.includes(o));
218
- if (newObs.length === 0)
219
- return [];
220
- const merged = [...entity.observations, ...newObs];
221
- await this.pool.query(`UPDATE kg_entities SET observations = $1, updated_at = NOW()
222
- WHERE id = $2 AND namespace = $3 AND agent_id = $4`, [merged, entity.id, this.namespace, this.agentId]);
223
- return newObs;
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 filtered = entity.observations.filter((o) => !observations.includes(o));
235
- await this.pool.query(`UPDATE kg_entities SET observations = $1, updated_at = NOW()
236
- WHERE id = $2 AND namespace = $3 AND agent_id = $4`, [filtered, entity.id, this.namespace, this.agentId]);
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":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAuDpB;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAmB,IAAI,CAAC;IAC5B,MAAM,CAAW;IACjB,OAAO,GAAW,EAAE,CAAC;IACrB,mBAAmB,CAAS;IAC5B,SAAS,CAAS;IAE1B,YAAY,MAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;IACjD,CAAC;IAED,oEAAoE;IACpE,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,iBAAiB;IAET,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE/D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;2BAQC,IAAI,CAAC,mBAAmB;;;;;;;;;;;;;;;;;;;;;KAqB9C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BrB,CAAC,CAAC;QAEH,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;IAC/E,CAAC;IAED,sBAAsB;IAEtB;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAMlB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,QAAQ,EAAE,CAAC;YACb,mCAAmC;YACnC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1C,CAAC;YACF,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YAEvE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS;gBAClC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;gBAClC,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;;8DAGoD,EACpD;oBACE,SAAS;oBACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;oBAC1B,KAAK,CAAC,UAAU;oBAChB,YAAY;oBACZ,QAAQ,CAAC,EAAE;oBACX,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,OAAO;iBACb,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;8DAEoD,EACpD;oBACE,SAAS;oBACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;oBAC1B,KAAK,CAAC,UAAU;oBAChB,QAAQ,CAAC,EAAE;oBACX,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,OAAO;iBACb,CACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,QAAQ;gBACX,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,aAAa;QACb,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS;YAClC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAClC,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;uDACiD,EACjD;YACE,EAAE;YACF,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,SAAS;YACd,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,YAAY,IAAI,EAAE;YACxB,YAAY;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SACrC,CACF,CAAC;QAEF,OAAO;YACL,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,gFAAgF,EAChF,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CACrC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,8EAA8E,EAC9E,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACnC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,YAAsB;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;0DACoD,EACpD,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAClD,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,YAAsB;QACjE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;0DACoD,EACpD,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACpD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB,8EAA8E,EAC9E,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CACrC,CAAC;IACJ,CAAC;IAED,wBAAwB;IAExB;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,KAOpB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,gCAAgC;QAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa,CACpF,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACpC;;;8CAGwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAEhD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;mDAC6C,EAC7C;YACE,EAAE;YACF,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,SAAS;YACd,UAAU,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE;YACX,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,MAAM,IAAI,GAAG;YACnB,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SACrC,CACF,CAAC;QAEF,OAAO;YACL,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,UAAU,CAAC,EAAE;YACzB,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG;YAC3B,SAAS;YACT,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;0DACoD,EACpD,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAIpB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO;QAErC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;8CAEwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CACtB,UAAkB,EAClB,UAAwC,EAAE;QAE1C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,2BAA2B,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;;;;WAQK,WAAW;kCACY,EAC5B,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1C,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAC1B,QAAQ,EAAE,GAAG,CAAC,SAAmB;YACjC,MAAM,EAAE,GAAG,CAAC,OAAiB;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iBAAiB;IAEjB;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAiC,EAAE;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QACjE,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC;QACR,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CACb,sBAAsB,GAAG;wCACO,GAAG;qFAC0C,GAAG,IAAI,CACrF,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,GAAG,EAAE,CAAC;QACR,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,mCAAmC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;yCACxB,GAAG,EAAE,EACxC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CACnB,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAC7B,cAAwB,EACxB,UAII,EAAE;QAEN,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa,CAAC,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC;QACR,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,uEAAuE;QACvE,0EAA0E;QAC1E,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,4BAA4B,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;oCAC8B,GAAG;;eAExB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;mCACJ,GAAG,iBAAiB,GAAG,GAAG,CAAC;iCAC7B,GAAG;gBACpB,GAAG,GAAG,CAAC,EAAE,EACnB,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAC5C,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,UAAoB,CAAC;SACjD,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAE/D,eAAe;QACf,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACxC;iEAC2D,EAC3D,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAEnE,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACrC;;;;gCAI0B,EAC1B,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1C,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,UAAwC,EAAE;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACxC,gFAAgF,EAChF,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,yBAAyB,CAAC;QAE9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACrC,qEAAqE,WAAW;gCACtD,EAC1B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;SAClD,CAAC;IACJ,CAAC;IAED,2BAA2B;IAE3B;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,IAAU,EACV,UAAmC,EAAE;QAErC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa;YAC3B,eAAe;YACf,kBAAkB;YAClB,2CAA2C;YAC3C,gBAAgB;SACjB,CAAC;QACF,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAC,CAAC;QAEd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,oCAAoC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EACvF,MAAM,CACP,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,EAAU,EAAE,YAAoB;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;gCAG0B,EAC1B,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACzE,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,kCAAkC;IAElC;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAMtB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1C,sCAAsC;QACtC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;;8CAGwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;QAEF,qBAAqB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IAEtB;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;gDAE0C,EAC1C,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,WAAqB,CAAC,GAAG,GAAG,CAAC,KAAe,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IAEd,WAAW,CAAC,GAA4B;QAC9C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,OAAO,EAAE,GAAG,CAAC,QAAkB;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAa;YAClD,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAA4B;YACzD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,GAA4B;QAChD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,OAAO,EAAE,GAAG,CAAC,QAAkB;YAC/B,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,QAAQ,EAAE,GAAG,CAAC,SAAmB;YACjC,YAAY,EAAE,GAAG,CAAC,aAAuB;YACzC,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAA4B;YACzD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAoHpB;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAmB,IAAI,CAAC;IAC5B,MAAM,CAAW;IACjB,OAAO,GAAW,EAAE,CAAC;IACrB,mBAAmB,CAAS;IAC5B,SAAS,CAAS;IAE1B,YAAY,MAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;IACjD,CAAC;IAED,oEAAoE;IACpE,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,iBAAiB;IAET,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAE/D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;2BAQC,IAAI,CAAC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2B9C,CAAC,CAAC;QAEH,wEAAwE;QACxE,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;2BAcC,IAAI,CAAC,mBAAmB;;;;;;;;KAQ9C,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4BrB,CAAC,CAAC;QAEH,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,yBAAyB,CAAC,CAAC;QAC7E,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IAChF,CAAC;IAED,sBAAsB;IAEtB;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAQlB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,QAAQ,EAAE,CAAC;YACb,qEAAqE;YACrE,sEAAsE;YACtE,gEAAgE;YAChE,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;oBAC1C,UAAU,EAAE,KAAK,CAAC,IAAI;oBACtB,MAAM,EAAE,KAAK;oBACb,OAAO;oBACP,UAAU,EAAE,KAAK,CAAC,UAAU;iBAC7B,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;oBAAE,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC;YAC3E,CAAC;YAED,MAAM,UAAU,GAAG,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAE/E,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;;8DAGoD,EACpD;oBACE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;oBAC1B,KAAK,CAAC,UAAU;oBAChB,YAAY;oBACZ,QAAQ,CAAC,EAAE;oBACX,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,OAAO;iBACb,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;8DAEoD,EACpD;oBACE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;oBAC1B,KAAK,CAAC,UAAU;oBAChB,QAAQ,CAAC,EAAE;oBACX,IAAI,CAAC,SAAS;oBACd,IAAI,CAAC,OAAO;iBACb,CACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,QAAQ;gBACX,YAAY;gBACZ,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,aAAa;QACb,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS;YAClC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAClC,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;uDACiD,EACjD;YACE,EAAE;YACF,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,SAAS;YACd,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,YAAY,IAAI,EAAE;YACxB,YAAY;YACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SACrC,CACF,CAAC;QAEF,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;;iDAGyC,EACzC;gBACE,cAAc,CAAC,KAAK,EAAE;gBACtB,EAAE;gBACF,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,SAAS;gBACd,OAAO;gBACP,MAAM;gBACN,KAAK,CAAC,UAAU,EAAE,eAAe,IAAI,IAAI;gBACzC,KAAK,CAAC,UAAU,EAAE,kBAAkB,IAAI,EAAE;aAC3C,CACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,gFAAgF,EAChF,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CACrC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,8EAA8E,EAC9E,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACnC,CAAC;QAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,YAAsB;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QAEjE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACpF,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,YAAsB;QACjE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC;gBAC3B,UAAU;gBACV,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,+DAA+D;IAEvD,MAAM,CAAC,KAAK;QAClB,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,8EAA8E;IACtE,MAAM,CAAC,WAAW,CAAC,CAAS,EAAE,CAAS;QAC7C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAA6B;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAClC;;qBAEa,EACb,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CACjD,CAAC;YACF,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;YACrF,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC;YAEzD,sEAAsE;YACtE,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,qEAAqE,EACrE,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAC;YACF,IAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAY,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3E,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC1C,MAAM,MAAM,CAAC,KAAK,CAChB;;uDAE2C,EAC3C,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAC7F,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAClC;;0CAEkC,EAClC,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEzD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAE3F,IAAI,MAAoB,CAAC;YAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;oBACpB,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC/B,OAAO;wBACL,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,WAAW;wBACvB,aAAa,EAAE,GAAG,EAAE,EAAE;wBACtB,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;qBACjD,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,MAAM,CAAC,KAAK,CAChB;;;+DAGqD,EACrD;oBACE,EAAE;oBACF,MAAM,CAAC,EAAE;oBACT,IAAI,CAAC,OAAO;oBACZ,IAAI,CAAC,SAAS;oBACd,OAAO;oBACP,MAAM;oBACN,UAAU,CAAC,eAAe,IAAI,IAAI;oBAClC,UAAU,CAAC,kBAAkB,IAAI,EAAE;oBACnC,UAAU;iBACX,CACF,CAAC;gBACF,MAAM,GAAG;oBACP,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,EAAE;oBACjB,kBAAkB,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;iBAC/D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,sEAAsE;gBACtE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;oBACnC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBACpE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAC/B,OAAO;wBACL,OAAO,EAAE,MAAM;wBACf,UAAU,EAAE,kBAAkB;wBAC9B,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;qBACjD,CAAC;gBACJ,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7C,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;wBACnE,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC/B,OAAO;4BACL,OAAO,EAAE,MAAM;4BACf,UAAU,EAAE,WAAW;4BACvB,aAAa,EAAE,KAAK,CAAC,EAAE;4BACvB,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;yBACjD,CAAC;oBACJ,CAAC;oBACD,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;oBAClC,MAAM,MAAM,CAAC,KAAK,CAChB;;;iEAGqD,EACrD;wBACE,EAAE;wBACF,MAAM,CAAC,EAAE;wBACT,IAAI,CAAC,OAAO;wBACZ,IAAI,CAAC,SAAS;wBACd,OAAO;wBACP,MAAM;wBACN,UAAU,CAAC,eAAe,IAAI,IAAI;wBAClC,UAAU,CAAC,kBAAkB,IAAI,EAAE;wBACnC,UAAU;qBACX,CACF,CAAC;oBACF,MAAM,MAAM,CAAC,KAAK,CAChB;;4BAEgB,EAChB,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CACrC,CAAC;oBACF,MAAM,GAAG;wBACP,OAAO,EAAE,SAAS;wBAClB,aAAa,EAAE,EAAE;wBACjB,YAAY,EAAE,KAAK,CAAC,EAAE;wBACtB,kBAAkB,EAAE;4BAClB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;4BAChE,OAAO;yBACR;qBACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,CAAC,KAAK,CAChB,2EAA2E,EAC3E,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CACjC,CAAC;oBACF,MAAM,GAAG;wBACP,OAAO,EAAE,aAAa;wBACtB,YAAY,EAAE,KAAK,CAAC,EAAE;wBACtB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;qBAClF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,oEAAoE;YACpE,qEAAqE;YACrE,iDAAiD;YACjD,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,CAAC,KAAK,CAChB;;;0BAGgB,EAChB,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAClD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,CAAC,KAAK,CAChB;;;0BAGgB,EAChB,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CACrD,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,UAAkB;QAC5C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;kDAE4C,EAC5C,CAAC,MAAM,CAAC,EAAE,CAAC,CACZ,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,KAA8C,EAC9C,UAAuE,EAAE;QAEzE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAEjC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,4BAA4B,CAAC;YACpE,MAAM,UAAU,GAAG;gBACjB,kBAAkB;gBAClB,iBAAiB;gBACjB,uBAAuB;gBACvB,yBAAyB;aAC1B,CAAC;YACF,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,UAAU,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAChC,GAAG,EAAE,CAAC;YACR,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;wCACgC,GAAG;;;kBAGzB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;wCACF,GAAG,iBAAiB,GAAG,GAAG,CAAC;sCAC7B,GAAG;mBACtB,GAAG,GAAG,CAAC,EAAE,EACpB,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CACnC,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/B,UAAU,EAAE,GAAG,CAAC,WAAqB;gBACrC,aAAa,EAAE,GAAG,CAAC,EAAY;gBAC/B,OAAO,EAAE,GAAG,CAAC,OAAiB;gBAC9B,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,UAAoB,CAAC;aACjD,CAAC,CAAC,CAAC;QACN,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;QACpF,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC;QACR,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;gBAGU,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG;iBACnD,GAAG,GAAG,CAAC,EAAE,EACpB,CAAC,GAAG,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CACtC,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,aAAa,EAAE,GAAG,CAAC,EAAY;YAC/B,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,UAAU,EAAE,CAAC;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,0BAA0B,CAAC,KAAK,GAAG,EAAE;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;0CAEoC,EACpC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CACtC,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB,8EAA8E,EAC9E,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CACrC,CAAC;IACJ,CAAC;IAED,wBAAwB;IAExB;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,KAOpB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,gCAAgC;QAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,mCAAmC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa,CACpF,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACpC;;;8CAGwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAEhD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;mDAC6C,EAC7C;YACE,EAAE;YACF,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,SAAS;YACd,UAAU,CAAC,EAAE;YACb,QAAQ,CAAC,EAAE;YACX,KAAK,CAAC,YAAY;YAClB,KAAK,CAAC,MAAM,IAAI,GAAG;YACnB,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;SACrC,CACF,CAAC;QAEF,OAAO;YACL,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,UAAU,CAAC,EAAE;YACzB,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACrB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG;YAC3B,SAAS;YACT,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;0DACoD,EACpD,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACnC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAIpB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO;QAErC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;8CAEwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CACtB,UAAkB,EAClB,UAAwC,EAAE;QAE1C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,2BAA2B,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;;;;;;WAQK,WAAW;kCACY,EAC5B,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1C,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAC1B,QAAQ,EAAE,GAAG,CAAC,SAAmB;YACjC,MAAM,EAAE,GAAG,CAAC,OAAiB;SAC9B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,iBAAiB;IAEjB;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAiC,EAAE;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QACjE,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC;QACR,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CACb,sBAAsB,GAAG;wCACO,GAAG;qFAC0C,GAAG,IAAI,CACrF,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,GAAG,EAAE,CAAC;QACR,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,mCAAmC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;yCACxB,GAAG,EAAE,EACxC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CACnB,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAC7B,cAAwB,EACxB,UAII,EAAE;QAEN,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa,CAAC,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC;QACR,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,uEAAuE;QACvE,0EAA0E;QAC1E,4EAA4E;QAC5E,uEAAuE;QACvE,yEAAyE;QACzE,sEAAsE;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,4BAA4B,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;oCAC8B,GAAG;;eAExB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;mCACJ,GAAG,iBAAiB,GAAG,GAAG,CAAC;iCAC7B,GAAG;gBACpB,GAAG,GAAG,CAAC,EAAE,EACnB,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAC5C,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACxB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,UAAoB,CAAC;SACjD,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAE/D,eAAe;QACf,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACxC;iEAC2D,EAC3D,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAEnE,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACrC;;;;gCAI0B,EAC1B,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC1C,CAAC;QAEF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,UAAwC,EAAE;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACxC,gFAAgF,EAChF,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,yBAAyB,CAAC;QAE9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACrC,qEAAqE,WAAW;gCACtD,EAC1B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;SAClD,CAAC;IACJ,CAAC;IAED,2BAA2B;IAE3B;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,IAAU,EACV,UAAmC,EAAE;QAErC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAa;YAC3B,eAAe;YACf,kBAAkB;YAClB,2CAA2C;YAC3C,gBAAgB;SACjB,CAAC;QACF,MAAM,MAAM,GAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAC,CAAC;QAEd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,mBAAmB,GAAG,oBAAoB,GAAG,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC,oCAAoC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EACvF,MAAM,CACP,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,EAAU,EAAE,YAAoB;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;;gCAG0B,EAC1B,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CACzE,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,kCAAkC;IAElC;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAMtB;QACC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1C,sCAAsC;QACtC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACnB;;;8CAGwC,EACxC,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/E,CAAC;QAEF,qBAAqB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IAEtB;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAClC;;gDAE0C,EAC1C,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC;QAEF,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,WAAqB,CAAC,GAAG,GAAG,CAAC,KAAe,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;IAEd,WAAW,CAAC,GAA4B;QAC9C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,OAAO,EAAE,GAAG,CAAC,QAAkB;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAc;YACxB,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAa;YAClD,cAAc,EAAG,GAAG,CAAC,eAAuC,IAAI,KAAK;YACrE,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAA4B;YACzD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,GAA4B;QACnD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,QAAQ,EAAE,GAAG,CAAC,SAAmB;YACjC,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,YAAY,EAAG,GAAG,CAAC,aAA+B,IAAI,IAAI;YAC1D,MAAM,EAAG,GAAG,CAAC,MAAwB,IAAI,IAAI;YAC7C,MAAM,EAAE,GAAG,CAAC,MAA2B;YACvC,eAAe,EAAG,GAAG,CAAC,iBAAmC,IAAI,IAAI;YACjE,kBAAkB,EAAE,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAa;YAChE,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,GAA4B;QAChD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,OAAO,EAAE,GAAG,CAAC,QAAkB;YAC/B,UAAU,EAAE,GAAG,CAAC,WAAqB;YACrC,QAAQ,EAAE,GAAG,CAAC,SAAmB;YACjC,YAAY,EAAE,GAAG,CAAC,aAAuB;YACzC,MAAM,EAAE,GAAG,CAAC,MAAgB;YAC5B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAA4B;YACzD,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF"}
@@ -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,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,GACrB,cAAc,EAAE,CAYlB"}
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"}
@@ -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; it just stays reachable by substring only.
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, ...observations.filter((o) => !existing.observations.includes(o))]
98
- : observations;
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.boolean().optional().describe('Include expired/superseded relations (default: false)'),
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.' };
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mce-bt/microagents-memory",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "3-tier memory system — STM (Redis), MTM (Postgres), LTM (Postgres + pgvector)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",