@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.
- package/dist/episode-extractor.d.ts.map +1 -1
- package/dist/episode-extractor.js.map +1 -1
- package/dist/episodic-memory.d.ts +2 -0
- package/dist/episodic-memory.d.ts.map +1 -1
- package/dist/episodic-memory.js +59 -54
- package/dist/episodic-memory.js.map +1 -1
- package/dist/fact-extractor.d.ts +15 -0
- package/dist/fact-extractor.d.ts.map +1 -0
- package/dist/fact-extractor.js +80 -0
- package/dist/fact-extractor.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/semantic-memory.d.ts +42 -0
- package/dist/semantic-memory.d.ts.map +1 -0
- package/dist/semantic-memory.js +257 -0
- package/dist/semantic-memory.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -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;
|
|
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;
|
|
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;
|
|
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"}
|
package/dist/episodic-memory.js
CHANGED
|
@@ -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
|
-
|
|
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) *
|
|
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 >
|
|
234
|
+
if (avgValence > POSITIVE_VALENCE_THRESHOLD)
|
|
230
235
|
return `positive (${dominantEmotion})`;
|
|
231
|
-
if (avgValence <
|
|
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":"AAUA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,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
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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|