@cognitive-engine/memory 0.1.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"episode-extractor.d.ts","sourceRoot":"","sources":["../src/episode-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,OAAO,EACR,MAAM,wBAAwB,CAAA;AAoC/B;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,iBAAiB;IAG/C;;;OAGG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,IAAI,GAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAsC3B"}
1
+ {"version":3,"file":"episode-extractor.d.ts","sourceRoot":"","sources":["../src/episode-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,OAAO,EACR,MAAM,wBAAwB,CAAA;AAuB/B;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,iBAAiB;IAG/C;;;OAGG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,IAAI,GAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAsC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"episode-extractor.js","sourceRoot":"","sources":["../src/episode-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAM5C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAgB9C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;sIAiB4G,CAAA;AAEtI;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IAFnB,YACmB,GAAgB,EAChB,SAA4B;QAD5B,QAAG,GAAH,GAAG,CAAa;QAChB,cAAS,GAAT,SAAS,CAAmB;IAC5C,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,MAAc,EACd,OAAe,EACf,UAAiB;QAEjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAC1C;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;SACnC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CACnC,CAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CACvC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CACvC,CAAA;QAED,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;YACb,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,UAAU,IAAI,GAAG;YAC7B,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;YACpC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACjD,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,GAAG;SACf,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"episode-extractor.js","sourceRoot":"","sources":["../src/episode-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAM5C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAG9C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;sIAiB4G,CAAA;AAEtI;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IAFnB,YACmB,GAAgB,EAChB,SAA4B;QAD5B,QAAG,GAAH,GAAG,CAAa;QAChB,cAAS,GAAT,SAAS,CAAmB;IAC5C,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,MAAc,EACd,OAAe,EACf,UAAiB;QAEjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAC1C;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;SACnC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CACnC,CAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAEnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CACvC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CACvC,CAAA;QAED,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;YACb,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,UAAU,IAAI,GAAG;YAC7B,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,kBAAkB,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;YACpC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACjD,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,GAAG;SACf,CAAA;IACH,CAAC;CACF"}
@@ -24,7 +24,9 @@ export declare class EpisodicMemory {
24
24
  consolidate(userId: string): Promise<ConsolidationResult>;
25
25
  /** Mark an episode as accessed (boosts importance). */
26
26
  recordAccess(episodeId: string): Promise<void>;
27
+ private scoreAndRank;
27
28
  private fetchCandidates;
29
+ private matchesQuery;
28
30
  private computeRelevanceScores;
29
31
  private detectEmotionalPattern;
30
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"episodic-memory.d.ts","sourceRoot":"","sources":["../src/episodic-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACb,MAAM,wBAAwB,CAAA;AA8B/B;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAG3C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,GAAE,YAAiB;IAkB3B,2BAA2B;IACrB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,yCAAyC;IACnC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIrD,wDAAwD;IAClD,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA6CjE,sDAAsD;IAChD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC;IA8B3B;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqC/D,uDAAuD;IACjD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAYtC,eAAe;YA2Cf,sBAAsB;IAmBpC,OAAO,CAAC,sBAAsB;CA8B/B"}
1
+ {"version":3,"file":"episodic-memory.d.ts","sourceRoot":"","sources":["../src/episodic-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACb,MAAM,wBAAwB,CAAA;AA2B/B;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;gBAG3C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,GAAE,YAAiB;IAkB3B,2BAA2B;IACrB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,yCAAyC;IACnC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIrD,wDAAwD;IAClD,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAajE,sDAAsD;IAChD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC;IA8B3B;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqC/D,uDAAuD;IACjD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD,OAAO,CAAC,YAAY;YAoCN,eAAe;IAe7B,OAAO,CAAC,YAAY;YAkCN,sBAAsB;IAmBpC,OAAO,CAAC,sBAAsB;CA8B/B"}
@@ -7,6 +7,11 @@ const CONSOLIDATION_AGE_DAYS = 30;
7
7
  const FORGOTTEN_THRESHOLD = 0.1;
8
8
  const MIN_ACCESS_TO_KEEP = 2;
9
9
  const CONSOLIDATION_DECAY_FACTOR = 0.01;
10
+ const POSITIVE_VALENCE_THRESHOLD = 0.3;
11
+ const NEGATIVE_VALENCE_THRESHOLD = -0.3;
12
+ const DEFAULT_RELEVANCE_SCORE = 0.5;
13
+ const FORGOTTEN_RECENCY_THRESHOLD = 0.1;
14
+ const CANDIDATE_MULTIPLIER = 3;
10
15
  const DEFAULT_CONFIG = {
11
16
  decayLambda: 0.03,
12
17
  scoringWeights: { relevance: 0.4, recency: 0.3, importance: 0.3 },
@@ -51,36 +56,9 @@ export class EpisodicMemory {
51
56
  }
52
57
  /** Search episodes with semantic + temporal scoring. */
53
58
  async search(query) {
54
- const now = Date.now();
55
- const relevance = this.config.scoringWeights.relevance;
56
- const recency = this.config.scoringWeights.recency;
57
- const importance = this.config.scoringWeights.importance;
58
- // Fetch candidate episodes
59
59
  const candidates = await this.fetchCandidates(query);
60
- // Compute relevance scores via embedding similarity
61
60
  const relevanceScores = await this.computeRelevanceScores(query.query, candidates);
62
- // Score and rank
63
- const results = [];
64
- for (const ep of candidates) {
65
- const daysSince = (now - ep.occurredAt.getTime()) / MS_PER_DAY;
66
- const recencyScore = exponentialDecay(daysSince, ep.decayFactor);
67
- const relevanceScore = relevanceScores.get(ep.id) ?? 0.5;
68
- const accessBoost = Math.min(ep.accessCount * ACCESS_BOOST_PER_VIEW, MAX_ACCESS_BOOST);
69
- const importanceScore = Math.min(ep.importance + accessBoost, 1);
70
- const combinedScore = relevanceScore * relevance +
71
- recencyScore * recency +
72
- importanceScore * importance;
73
- // Skip "forgotten" episodes unless explicitly requested
74
- if (!query.includeDecayed && recencyScore < 0.1)
75
- continue;
76
- results.push({
77
- episode: ep,
78
- relevanceScore,
79
- recencyScore,
80
- importanceScore,
81
- combinedScore,
82
- });
83
- }
61
+ const results = this.scoreAndRank(candidates, relevanceScores, query.includeDecayed);
84
62
  results.sort((a, b) => b.combinedScore - a.combinedScore);
85
63
  return results.slice(0, query.limit ?? this.config.maxRelevantEpisodes);
86
64
  }
@@ -158,6 +136,31 @@ export class EpisodicMemory {
158
136
  });
159
137
  }
160
138
  // ── Private ──
139
+ scoreAndRank(candidates, relevanceScores, includeDecayed) {
140
+ const now = Date.now();
141
+ const { relevance, recency, importance } = this.config.scoringWeights;
142
+ const results = [];
143
+ for (const ep of candidates) {
144
+ const daysSince = (now - ep.occurredAt.getTime()) / MS_PER_DAY;
145
+ const recencyScore = exponentialDecay(daysSince, ep.decayFactor);
146
+ if (!includeDecayed && recencyScore < FORGOTTEN_RECENCY_THRESHOLD)
147
+ continue;
148
+ const relevanceScore = relevanceScores.get(ep.id) ?? DEFAULT_RELEVANCE_SCORE;
149
+ const accessBoost = Math.min(ep.accessCount * ACCESS_BOOST_PER_VIEW, MAX_ACCESS_BOOST);
150
+ const importanceScore = Math.min(ep.importance + accessBoost, 1);
151
+ const combinedScore = relevanceScore * relevance +
152
+ recencyScore * recency +
153
+ importanceScore * importance;
154
+ results.push({
155
+ episode: ep,
156
+ relevanceScore,
157
+ recencyScore,
158
+ importanceScore,
159
+ combinedScore,
160
+ });
161
+ }
162
+ return results;
163
+ }
161
164
  async fetchCandidates(query) {
162
165
  const where = { userId: query.userId };
163
166
  if (query.categories && query.categories.length > 0) {
@@ -166,31 +169,33 @@ export class EpisodicMemory {
166
169
  const episodes = await this.store.find(COLLECTION, {
167
170
  where,
168
171
  orderBy: { occurredAt: 'desc' },
169
- limit: (query.limit ?? this.config.maxRelevantEpisodes) * 3,
170
- });
171
- return episodes.filter((ep) => {
172
- if (query.categories &&
173
- query.categories.length > 0 &&
174
- !query.categories.includes(ep.category)) {
175
- return false;
176
- }
177
- if (query.emotions &&
178
- query.emotions.length > 0 &&
179
- !ep.emotions.some((e) => query.emotions.includes(e))) {
180
- return false;
181
- }
182
- if (query.timeRange?.from && ep.occurredAt < query.timeRange.from) {
183
- return false;
184
- }
185
- if (query.timeRange?.to && ep.occurredAt > query.timeRange.to) {
186
- return false;
187
- }
188
- if (query.minImportance !== undefined &&
189
- ep.importance < query.minImportance) {
190
- return false;
191
- }
192
- return true;
172
+ limit: (query.limit ?? this.config.maxRelevantEpisodes) * CANDIDATE_MULTIPLIER,
193
173
  });
174
+ return episodes.filter((ep) => this.matchesQuery(ep, query));
175
+ }
176
+ matchesQuery(ep, query) {
177
+ if (query.categories &&
178
+ query.categories.length > 0 &&
179
+ !query.categories.includes(ep.category)) {
180
+ return false;
181
+ }
182
+ const queryEmotions = query.emotions;
183
+ if (queryEmotions &&
184
+ queryEmotions.length > 0 &&
185
+ !ep.emotions.some((e) => queryEmotions.includes(e))) {
186
+ return false;
187
+ }
188
+ if (query.timeRange?.from && ep.occurredAt < query.timeRange.from) {
189
+ return false;
190
+ }
191
+ if (query.timeRange?.to && ep.occurredAt > query.timeRange.to) {
192
+ return false;
193
+ }
194
+ if (query.minImportance !== undefined &&
195
+ ep.importance < query.minImportance) {
196
+ return false;
197
+ }
198
+ return true;
194
199
  }
195
200
  async computeRelevanceScores(queryText, episodes) {
196
201
  const scores = new Map();
@@ -226,9 +231,9 @@ export class EpisodicMemory {
226
231
  dominantEmotion = emotion;
227
232
  }
228
233
  }
229
- if (avgValence > 0.3)
234
+ if (avgValence > POSITIVE_VALENCE_THRESHOLD)
230
235
  return `positive (${dominantEmotion})`;
231
- if (avgValence < -0.3)
236
+ if (avgValence < NEGATIVE_VALENCE_THRESHOLD)
232
237
  return `negative (${dominantEmotion})`;
233
238
  if (dominantEmotion !== 'neutral')
234
239
  return dominantEmotion;
@@ -1 +1 @@
1
- {"version":3,"file":"episodic-memory.js","sourceRoot":"","sources":["../src/episodic-memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"episodic-memory.js","sourceRoot":"","sources":["../src/episodic-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { LlmProvider, EmbeddingProvider, Fact } from '@cognitive-engine/core';
2
+ /**
3
+ * Extracts semantic facts from user messages using LLM analysis.
4
+ */
5
+ export declare class FactExtractor {
6
+ private readonly llm;
7
+ private readonly embedding;
8
+ constructor(llm: LlmProvider, embedding: EmbeddingProvider);
9
+ /**
10
+ * Analyze a message and extract facts.
11
+ * Returns array of Fact objects (may be empty if no facts found).
12
+ */
13
+ extract(userId: string, message: string): Promise<Fact[]>;
14
+ }
15
+ //# sourceMappingURL=fact-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fact-extractor.d.ts","sourceRoot":"","sources":["../src/fact-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,IAAI,EACL,MAAM,wBAAwB,CAAA;AAkC/B;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,iBAAiB;IAG/C;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAyChE"}
@@ -0,0 +1,80 @@
1
+ import { uid } from '@cognitive-engine/core';
2
+ import { clamp } from '@cognitive-engine/math';
3
+ const EXTRACTION_PROMPT = `Extract factual knowledge from the following message as subject-predicate-object triples.
4
+
5
+ Focus on:
6
+ - Personal facts (name, age, job, location, family)
7
+ - Preferences (likes, dislikes, interests, hobbies)
8
+ - Relationships (knows, works with, married to)
9
+ - Skills and abilities (can, knows how to)
10
+ - States and conditions (feels, wants, needs)
11
+
12
+ Respond ONLY with valid JSON (no markdown, no code blocks):
13
+
14
+ {
15
+ "facts": [
16
+ {
17
+ "subject": "entity name (usually the user or someone they mention)",
18
+ "predicate": "relationship or property (e.g. works_at, likes, has_child, lives_in)",
19
+ "object": "value or target entity",
20
+ "confidence": 0 to 1,
21
+ "source": "explicit" or "inferred"
22
+ }
23
+ ]
24
+ }
25
+
26
+ Rules:
27
+ - "explicit" = user directly stated this fact
28
+ - "inferred" = you deduced this from context (lower confidence)
29
+ - Use snake_case for predicates (works_at, not "works at")
30
+ - Keep subjects/objects as proper nouns or specific terms
31
+ - If no facts found, return {"facts": []}`;
32
+ /**
33
+ * Extracts semantic facts from user messages using LLM analysis.
34
+ */
35
+ export class FactExtractor {
36
+ llm;
37
+ embedding;
38
+ constructor(llm, embedding) {
39
+ this.llm = llm;
40
+ this.embedding = embedding;
41
+ }
42
+ /**
43
+ * Analyze a message and extract facts.
44
+ * Returns array of Fact objects (may be empty if no facts found).
45
+ */
46
+ async extract(userId, message) {
47
+ const response = await this.llm.completeJson([
48
+ { role: 'system', content: EXTRACTION_PROMPT },
49
+ { role: 'user', content: message },
50
+ ], { temperature: 0, maxTokens: 500 });
51
+ const result = response.parsed;
52
+ if (!result.facts || result.facts.length === 0)
53
+ return [];
54
+ const now = new Date();
55
+ const facts = [];
56
+ for (const extracted of result.facts) {
57
+ if (!extracted.subject || !extracted.predicate || !extracted.object) {
58
+ continue;
59
+ }
60
+ const tripleText = `${extracted.subject} ${extracted.predicate} ${extracted.object}`;
61
+ const vector = await this.embedding.embed(tripleText);
62
+ facts.push({
63
+ id: uid('fact'),
64
+ userId,
65
+ subject: extracted.subject,
66
+ predicate: extracted.predicate,
67
+ object: extracted.object,
68
+ confidence: clamp(extracted.confidence ?? 0.7, 0, 1),
69
+ source: extracted.source ?? 'extracted',
70
+ evidence: [message],
71
+ embedding: vector,
72
+ createdAt: now,
73
+ updatedAt: now,
74
+ accessCount: 0,
75
+ });
76
+ }
77
+ return facts;
78
+ }
79
+ }
80
+ //# sourceMappingURL=fact-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fact-extractor.js","sourceRoot":"","sources":["../src/fact-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAM5C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAG9C,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CA4BgB,CAAA;AAE1C;;GAEG;AACH,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,GAAgB,EAChB,SAA4B;QAD5B,QAAG,GAAH,GAAG,CAAa;QAChB,cAAS,GAAT,SAAS,CAAmB;IAC5C,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAe;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAC1C;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;SACnC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CACnC,CAAA;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAEzD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,KAAK,GAAW,EAAE,CAAA;QAExB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACpE,SAAQ;YACV,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE,CAAA;YACpF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAErD,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC;gBACf,MAAM;gBACN,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpD,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,WAAW;gBACvC,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,CAAC;aACf,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export { EpisodicMemory } from './episodic-memory.js';
2
2
  export { EpisodeExtractor } from './episode-extractor.js';
3
+ export { SemanticMemory } from './semantic-memory.js';
4
+ export { FactExtractor } from './fact-extractor.js';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export { EpisodicMemory } from './episodic-memory.js';
2
2
  export { EpisodeExtractor } from './episode-extractor.js';
3
+ export { SemanticMemory } from './semantic-memory.js';
4
+ export { FactExtractor } from './fact-extractor.js';
3
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import type { Store, EmbeddingProvider, Fact, FactSearchResult, FactQuery, SemanticContext, SemanticMemoryConfig } from '@cognitive-engine/core';
2
+ /**
3
+ * Semantic memory stores factual knowledge as subject-predicate-object triples.
4
+ *
5
+ * Features:
6
+ * - CRUD for facts with confidence tracking
7
+ * - Embedding-based semantic search
8
+ * - Confidence reinforcement (repeated facts become stronger)
9
+ * - Conflict resolution (contradictory facts reduce confidence of old ones)
10
+ * - Formatted context generation for reasoning layer
11
+ */
12
+ export declare class SemanticMemory {
13
+ private readonly store;
14
+ private readonly embedding;
15
+ private readonly config;
16
+ constructor(store: Store, embedding: EmbeddingProvider, config?: SemanticMemoryConfig);
17
+ /** Store a new fact. If a matching fact exists, reinforce its confidence. */
18
+ storeFact(fact: Fact): Promise<void>;
19
+ /** Retrieve a specific fact by ID. */
20
+ get(factId: string): Promise<Fact | null>;
21
+ /** Search facts by semantic similarity and/or subject/predicate filter. */
22
+ search(query: FactQuery): Promise<FactSearchResult[]>;
23
+ /** Get all facts for a subject. */
24
+ getFactsAbout(userId: string, subject: string): Promise<Fact[]>;
25
+ /** Get all facts with a specific predicate (e.g. "works_at", "likes"). */
26
+ getFactsByPredicate(userId: string, predicate: string): Promise<Fact[]>;
27
+ /** Build semantic context for the reasoning layer. */
28
+ getContext(userId: string, currentQuery?: string): Promise<SemanticContext>;
29
+ /** Update a fact's object value and adjust confidence. */
30
+ updateFact(factId: string, newObject: string, evidence?: string): Promise<void>;
31
+ /** Delete a fact. */
32
+ deleteFact(factId: string): Promise<void>;
33
+ /** Mark a fact as accessed (for usage tracking). */
34
+ recordAccess(factId: string): Promise<void>;
35
+ private findExactMatch;
36
+ private reinforce;
37
+ private resolveConflicts;
38
+ private fetchCandidates;
39
+ private computeRelevanceScores;
40
+ private formatContext;
41
+ }
42
+ //# sourceMappingURL=semantic-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-memory.d.ts","sourceRoot":"","sources":["../src/semantic-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAiB/B;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;gBAG7C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,iBAAiB,EAC5B,MAAM,GAAE,oBAAyB;IAuBnC,6EAA6E;IACvE,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1C,sCAAsC;IAChC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAI/C,2EAA2E;IACrE,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAiC3D,mCAAmC;IAC7B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IASrE,0EAA0E;IACpE,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,EAAE,CAAC;IASlB,sDAAsD;IAChD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC;IAkC3B,0DAA0D;IACpD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAsBhB,qBAAqB;IACf,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,oDAAoD;IAC9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAanC,cAAc;YAwBd,SAAS;YAoBT,gBAAgB;YA8BhB,eAAe;YAsBf,sBAAsB;IAqBpC,OAAO,CAAC,aAAa;CAetB"}
@@ -0,0 +1,257 @@
1
+ import { cosineSimilarity } from '@cognitive-engine/math';
2
+ const COLLECTION = 'facts';
3
+ const CONFLICT_CONFIDENCE_REDUCTION = 0.5;
4
+ const DEFAULT_RELEVANCE_SCORE = 0.5;
5
+ const DEFAULT_CONFIG = {
6
+ similarityThreshold: 0.6,
7
+ minConfidence: 0.3,
8
+ reinforcementBoost: 0.1,
9
+ maxConfidence: 0.99,
10
+ maxResults: 10,
11
+ scoringWeights: { relevance: 0.6, confidence: 0.4 },
12
+ };
13
+ /**
14
+ * Semantic memory stores factual knowledge as subject-predicate-object triples.
15
+ *
16
+ * Features:
17
+ * - CRUD for facts with confidence tracking
18
+ * - Embedding-based semantic search
19
+ * - Confidence reinforcement (repeated facts become stronger)
20
+ * - Conflict resolution (contradictory facts reduce confidence of old ones)
21
+ * - Formatted context generation for reasoning layer
22
+ */
23
+ export class SemanticMemory {
24
+ store;
25
+ embedding;
26
+ config;
27
+ constructor(store, embedding, config = {}) {
28
+ this.store = store;
29
+ this.embedding = embedding;
30
+ this.config = {
31
+ similarityThreshold: config.similarityThreshold ?? DEFAULT_CONFIG.similarityThreshold,
32
+ minConfidence: config.minConfidence ?? DEFAULT_CONFIG.minConfidence,
33
+ reinforcementBoost: config.reinforcementBoost ?? DEFAULT_CONFIG.reinforcementBoost,
34
+ maxConfidence: config.maxConfidence ?? DEFAULT_CONFIG.maxConfidence,
35
+ maxResults: config.maxResults ?? DEFAULT_CONFIG.maxResults,
36
+ scoringWeights: {
37
+ relevance: config.scoringWeights?.relevance ??
38
+ DEFAULT_CONFIG.scoringWeights.relevance,
39
+ confidence: config.scoringWeights?.confidence ??
40
+ DEFAULT_CONFIG.scoringWeights.confidence,
41
+ },
42
+ };
43
+ }
44
+ /** Store a new fact. If a matching fact exists, reinforce its confidence. */
45
+ async storeFact(fact) {
46
+ const existing = await this.findExactMatch(fact.userId, fact.subject, fact.predicate, fact.object);
47
+ if (existing) {
48
+ await this.reinforce(existing, fact.evidence);
49
+ return;
50
+ }
51
+ // Check for contradictions (same subject+predicate, different object)
52
+ await this.resolveConflicts(fact);
53
+ await this.store.set(COLLECTION, fact.id, fact);
54
+ }
55
+ /** Retrieve a specific fact by ID. */
56
+ async get(factId) {
57
+ return this.store.get(COLLECTION, factId);
58
+ }
59
+ /** Search facts by semantic similarity and/or subject/predicate filter. */
60
+ async search(query) {
61
+ const candidates = await this.fetchCandidates(query);
62
+ const relevanceScores = await this.computeRelevanceScores(query.query, candidates);
63
+ const { relevance, confidence } = this.config.scoringWeights;
64
+ const results = [];
65
+ for (const fact of candidates) {
66
+ if (fact.confidence < (query.minConfidence ?? this.config.minConfidence)) {
67
+ continue;
68
+ }
69
+ const relevanceScore = relevanceScores.get(fact.id) ?? DEFAULT_RELEVANCE_SCORE;
70
+ const confidenceScore = fact.confidence;
71
+ const combinedScore = relevanceScore * relevance + confidenceScore * confidence;
72
+ results.push({
73
+ fact,
74
+ relevanceScore,
75
+ confidenceScore,
76
+ combinedScore,
77
+ });
78
+ }
79
+ results.sort((a, b) => b.combinedScore - a.combinedScore);
80
+ return results.slice(0, query.limit ?? this.config.maxResults);
81
+ }
82
+ /** Get all facts for a subject. */
83
+ async getFactsAbout(userId, subject) {
84
+ const all = await this.store.find(COLLECTION, {
85
+ where: { userId },
86
+ });
87
+ const normalized = subject.toLowerCase();
88
+ return all.filter((f) => f.subject.toLowerCase() === normalized);
89
+ }
90
+ /** Get all facts with a specific predicate (e.g. "works_at", "likes"). */
91
+ async getFactsByPredicate(userId, predicate) {
92
+ const all = await this.store.find(COLLECTION, {
93
+ where: { userId },
94
+ });
95
+ const normalized = predicate.toLowerCase();
96
+ return all.filter((f) => f.predicate.toLowerCase() === normalized);
97
+ }
98
+ /** Build semantic context for the reasoning layer. */
99
+ async getContext(userId, currentQuery) {
100
+ let relevantFacts = [];
101
+ if (currentQuery) {
102
+ const results = await this.search({
103
+ userId,
104
+ query: currentQuery,
105
+ limit: this.config.maxResults,
106
+ });
107
+ relevantFacts = results.map((r) => r.fact);
108
+ }
109
+ else {
110
+ // No query — return top facts by confidence
111
+ const all = await this.store.find(COLLECTION, {
112
+ where: { userId },
113
+ });
114
+ relevantFacts = all
115
+ .filter((f) => f.confidence >= this.config.minConfidence)
116
+ .sort((a, b) => b.confidence - a.confidence)
117
+ .slice(0, this.config.maxResults);
118
+ }
119
+ // Group facts by subject
120
+ const subjectFacts = new Map();
121
+ for (const fact of relevantFacts) {
122
+ const existing = subjectFacts.get(fact.subject) ?? [];
123
+ existing.push(fact);
124
+ subjectFacts.set(fact.subject, existing);
125
+ }
126
+ const formattedContext = this.formatContext(subjectFacts);
127
+ return { relevantFacts, subjectFacts, formattedContext };
128
+ }
129
+ /** Update a fact's object value and adjust confidence. */
130
+ async updateFact(factId, newObject, evidence) {
131
+ const fact = await this.store.get(COLLECTION, factId);
132
+ if (!fact)
133
+ return;
134
+ const now = new Date();
135
+ const vector = await this.embedding.embed(`${fact.subject} ${fact.predicate} ${newObject}`);
136
+ const updatedEvidence = evidence
137
+ ? [...fact.evidence, evidence]
138
+ : fact.evidence;
139
+ await this.store.set(COLLECTION, factId, {
140
+ ...fact,
141
+ object: newObject,
142
+ embedding: vector,
143
+ evidence: updatedEvidence,
144
+ updatedAt: now,
145
+ });
146
+ }
147
+ /** Delete a fact. */
148
+ async deleteFact(factId) {
149
+ await this.store.delete(COLLECTION, factId);
150
+ }
151
+ /** Mark a fact as accessed (for usage tracking). */
152
+ async recordAccess(factId) {
153
+ const fact = await this.store.get(COLLECTION, factId);
154
+ if (!fact)
155
+ return;
156
+ await this.store.set(COLLECTION, factId, {
157
+ ...fact,
158
+ accessCount: fact.accessCount + 1,
159
+ lastAccessed: new Date(),
160
+ });
161
+ }
162
+ // ── Private ──
163
+ async findExactMatch(userId, subject, predicate, object) {
164
+ const all = await this.store.find(COLLECTION, {
165
+ where: { userId },
166
+ });
167
+ const s = subject.toLowerCase();
168
+ const p = predicate.toLowerCase();
169
+ const o = object.toLowerCase();
170
+ return (all.find((f) => f.subject.toLowerCase() === s &&
171
+ f.predicate.toLowerCase() === p &&
172
+ f.object.toLowerCase() === o) ?? null);
173
+ }
174
+ async reinforce(fact, newEvidence) {
175
+ const boosted = Math.min(fact.confidence + this.config.reinforcementBoost, this.config.maxConfidence);
176
+ const mergedEvidence = [
177
+ ...fact.evidence,
178
+ ...newEvidence.filter((e) => !fact.evidence.includes(e)),
179
+ ];
180
+ await this.store.set(COLLECTION, fact.id, {
181
+ ...fact,
182
+ confidence: boosted,
183
+ evidence: mergedEvidence,
184
+ accessCount: fact.accessCount + 1,
185
+ updatedAt: new Date(),
186
+ });
187
+ }
188
+ async resolveConflicts(newFact) {
189
+ const all = await this.store.find(COLLECTION, {
190
+ where: { userId: newFact.userId },
191
+ });
192
+ const s = newFact.subject.toLowerCase();
193
+ const p = newFact.predicate.toLowerCase();
194
+ const conflicts = all.filter((f) => f.subject.toLowerCase() === s &&
195
+ f.predicate.toLowerCase() === p &&
196
+ f.object.toLowerCase() !== newFact.object.toLowerCase());
197
+ for (const conflict of conflicts) {
198
+ // Reduce confidence of the conflicting fact
199
+ const reduced = conflict.confidence * CONFLICT_CONFIDENCE_REDUCTION;
200
+ if (reduced < this.config.minConfidence) {
201
+ await this.store.delete(COLLECTION, conflict.id);
202
+ }
203
+ else {
204
+ await this.store.set(COLLECTION, conflict.id, {
205
+ ...conflict,
206
+ confidence: reduced,
207
+ updatedAt: new Date(),
208
+ });
209
+ }
210
+ }
211
+ }
212
+ async fetchCandidates(query) {
213
+ const all = await this.store.find(COLLECTION, {
214
+ where: { userId: query.userId },
215
+ });
216
+ return all.filter((f) => {
217
+ if (query.subject &&
218
+ f.subject.toLowerCase() !== query.subject.toLowerCase()) {
219
+ return false;
220
+ }
221
+ if (query.predicate &&
222
+ f.predicate.toLowerCase() !== query.predicate.toLowerCase()) {
223
+ return false;
224
+ }
225
+ return true;
226
+ });
227
+ }
228
+ async computeRelevanceScores(queryText, facts) {
229
+ const scores = new Map();
230
+ if (!queryText || facts.length === 0)
231
+ return scores;
232
+ const queryVec = await this.embedding.embed(queryText);
233
+ for (const fact of facts) {
234
+ if (fact.embedding && fact.embedding.length > 0) {
235
+ const similarity = cosineSimilarity(queryVec, fact.embedding);
236
+ if (similarity >= this.config.similarityThreshold) {
237
+ scores.set(fact.id, Math.max(0, similarity));
238
+ }
239
+ }
240
+ }
241
+ return scores;
242
+ }
243
+ formatContext(subjectFacts) {
244
+ if (subjectFacts.size === 0)
245
+ return '';
246
+ const lines = ['Known facts:'];
247
+ for (const [subject, facts] of subjectFacts) {
248
+ lines.push(` ${subject}:`);
249
+ for (const fact of facts) {
250
+ const conf = Math.round(fact.confidence * 100);
251
+ lines.push(` - ${fact.predicate}: ${fact.object} (${conf}%)`);
252
+ }
253
+ }
254
+ return lines.join('\n');
255
+ }
256
+ }
257
+ //# sourceMappingURL=semantic-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-memory.js","sourceRoot":"","sources":["../src/semantic-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { FactSource } from '@cognitive-engine/core';
2
+ /** LLM extraction result for episode detection. */
3
+ export interface EpisodeExtractionResult {
4
+ hasEpisode: boolean;
5
+ summary: string;
6
+ details: string;
7
+ participants: string[];
8
+ location?: string;
9
+ emotions: string[];
10
+ emotionalValence: number;
11
+ emotionalIntensity: number;
12
+ category: string;
13
+ tags: string[];
14
+ importance: number;
15
+ }
16
+ /** LLM extraction result for fact extraction. */
17
+ export interface FactExtractionResult {
18
+ facts: ExtractedFact[];
19
+ }
20
+ /** A single extracted fact from LLM output. */
21
+ export interface ExtractedFact {
22
+ subject: string;
23
+ predicate: string;
24
+ object: string;
25
+ confidence: number;
26
+ source: FactSource;
27
+ }
28
+ /** Resolved configuration for EpisodicMemory. */
29
+ export interface ResolvedMemoryConfig {
30
+ decayLambda: number;
31
+ scoringWeights: {
32
+ relevance: number;
33
+ recency: number;
34
+ importance: number;
35
+ };
36
+ similarityThreshold: number;
37
+ categories: string[];
38
+ maxRecentEpisodes: number;
39
+ maxRelevantEpisodes: number;
40
+ }
41
+ /** Resolved configuration for SemanticMemory. */
42
+ export interface ResolvedSemanticConfig {
43
+ similarityThreshold: number;
44
+ minConfidence: number;
45
+ reinforcementBoost: number;
46
+ maxConfidence: number;
47
+ maxResults: number;
48
+ scoringWeights: {
49
+ relevance: number;
50
+ confidence: number;
51
+ };
52
+ }
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,aAAa,EAAE,CAAA;CACvB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,UAAU,CAAA;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1E,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAED,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1D"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognitive-engine/memory",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Episodic memory with decay, semantic search, and consolidation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",