engram-sdk 0.3.3 → 0.3.5
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/README.md +17 -0
- package/agent-eval.md +144 -0
- package/dist/auto-ingest.js +2 -2
- package/dist/cli.js +53 -7
- package/dist/cli.js.map +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +63 -30
- package/dist/embeddings.js.map +1 -1
- package/dist/extract.js +15 -8
- package/dist/extract.js.map +1 -1
- package/dist/mcp.js +27 -4
- package/dist/mcp.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +4 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +44 -1
- package/dist/store.js.map +1 -1
- package/dist/temporal.d.ts +2 -0
- package/dist/temporal.d.ts.map +1 -1
- package/dist/temporal.js +3 -1
- package/dist/temporal.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/dist/vault.d.ts +9 -0
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +142 -38
- package/dist/vault.js.map +1 -1
- package/hackernews-post.md +45 -0
- package/package.json +1 -1
- package/signal-quality-plan.md +23 -0
package/dist/temporal.js
CHANGED
|
@@ -106,7 +106,8 @@ Respond in JSON:
|
|
|
106
106
|
{
|
|
107
107
|
"contradicts": true/false,
|
|
108
108
|
"confidence": 0.0-1.0,
|
|
109
|
-
"explanation": "brief explanation of what changed, or why they don't contradict"
|
|
109
|
+
"explanation": "brief explanation of what changed, or why they don't contradict",
|
|
110
|
+
"oldFactEndDate": "ISO 8601 date when the old fact stopped being true, if inferable from context (e.g. 'moved last month' → approximate date). null if unknown."
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
Only mark as contradicting if the newer statement genuinely updates, corrects, or replaces information in the older one. Additions or elaborations are NOT contradictions.`;
|
|
@@ -129,6 +130,7 @@ Only mark as contradicting if the newer statement genuinely updates, corrects, o
|
|
|
129
130
|
sharedTopics,
|
|
130
131
|
confidence: result.confidence ?? 0.7,
|
|
131
132
|
explanation: result.explanation ?? 'Fact updated',
|
|
133
|
+
oldFactEndDate: result.oldFactEndDate ?? undefined,
|
|
132
134
|
};
|
|
133
135
|
}
|
|
134
136
|
catch {
|
package/dist/temporal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export interface Memory {
|
|
|
26
26
|
lastModifiedAt: string;
|
|
27
27
|
accessCount: number;
|
|
28
28
|
expiresAt?: string;
|
|
29
|
+
validFrom?: string;
|
|
30
|
+
validUntil?: string;
|
|
29
31
|
salience: number;
|
|
30
32
|
confidence: number;
|
|
31
33
|
stability: number;
|
|
@@ -127,6 +129,7 @@ export declare const RecallInputSchema: z.ZodObject<{
|
|
|
127
129
|
minSalience: z.ZodDefault<z.ZodNumber>;
|
|
128
130
|
minConfidence: z.ZodDefault<z.ZodNumber>;
|
|
129
131
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
132
|
+
asOf: z.ZodOptional<z.ZodString>;
|
|
130
133
|
spread: z.ZodDefault<z.ZodBoolean>;
|
|
131
134
|
spreadHops: z.ZodDefault<z.ZodNumber>;
|
|
132
135
|
spreadDecay: z.ZodDefault<z.ZodNumber>;
|
|
@@ -146,6 +149,7 @@ export declare const RecallInputSchema: z.ZodObject<{
|
|
|
146
149
|
entities?: string[] | undefined;
|
|
147
150
|
topics?: string[] | undefined;
|
|
148
151
|
types?: ("episodic" | "semantic" | "procedural")[] | undefined;
|
|
152
|
+
asOf?: string | undefined;
|
|
149
153
|
}, {
|
|
150
154
|
context: string;
|
|
151
155
|
entities?: string[] | undefined;
|
|
@@ -155,6 +159,7 @@ export declare const RecallInputSchema: z.ZodObject<{
|
|
|
155
159
|
minSalience?: number | undefined;
|
|
156
160
|
minConfidence?: number | undefined;
|
|
157
161
|
limit?: number | undefined;
|
|
162
|
+
asOf?: string | undefined;
|
|
158
163
|
spread?: boolean | undefined;
|
|
159
164
|
spreadHops?: number | undefined;
|
|
160
165
|
spreadDecay?: number | undefined;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,UAAU,mDAAiD,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,UAAU,gGAOrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,QAAQ,uLAanB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,YAAY,yEAMvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,UAAU,4DAKrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAMpD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IAGjB,MAAM,EAAE,YAAY,CAAC;IAGrB,UAAU,EAAE,UAAU,CAAC;IAGvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAElE,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -68,6 +68,10 @@ export const RecallInputSchema = z.object({
|
|
|
68
68
|
minSalience: z.number().min(0).max(1).default(0),
|
|
69
69
|
minConfidence: z.number().min(0).max(1).default(0),
|
|
70
70
|
limit: z.number().int().min(1).max(100).default(30),
|
|
71
|
+
// Point-in-time query: "what was true at this date?"
|
|
72
|
+
// When set, includes superseded memories that were valid at this time,
|
|
73
|
+
// and excludes memories that weren't yet valid.
|
|
74
|
+
asOf: z.string().optional(),
|
|
71
75
|
// Spreading activation parameters
|
|
72
76
|
spread: z.boolean().default(true), // Enable spreading activation (default ON)
|
|
73
77
|
spreadHops: z.number().int().min(0).max(5).default(2), // Max graph hops
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAC/D,gDAAgD;AAChD,+DAA+D;AAE/D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAGzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/B,cAAc,EAAI,0BAA0B;IAC5C,aAAa,EAAK,2BAA2B;IAC7C,WAAW,EAAO,8BAA8B;IAChD,eAAe,EAAG,+BAA+B;IACjD,UAAU,EAAQ,gCAAgC;IAClD,QAAQ,EAAU,8BAA8B;CACjD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7B,UAAU,EAAU,+BAA+B;IACnD,aAAa,EAAO,kCAAkC;IACtD,YAAY,EAAQ,qCAAqC;IACzD,YAAY,EAAQ,+BAA+B;IACnD,QAAQ,EAAY,gCAAgC;IACpD,WAAW,EAAS,kCAAkC;IACtD,SAAS,EAAW,0CAA0C;IAC9D,aAAa,EAAO,mDAAmD;IACvE,YAAY,EAAQ,0CAA0C;IAC9D,iBAAiB,EAAG,sBAAsB;IAC1C,eAAe,EAAK,qCAAqC;IACzD,cAAc,EAAM,gDAAgD;CACrE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,QAAQ,EAAQ,wBAAwB;IACxC,SAAS,EAAO,oCAAoC;IACpD,WAAW,EAAK,uBAAuB;IACvC,YAAY,EAAI,gCAAgC;IAChD,UAAU,EAAM,4BAA4B;CAC7C,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/B,SAAS,EAAS,0BAA0B;IAC5C,cAAc,EAAI,4BAA4B;IAC9C,QAAQ,EAAU,sBAAsB;IACxC,QAAQ,EAAU,SAAS;CAC5B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vault.d.ts
CHANGED
|
@@ -85,6 +85,15 @@ export declare class Vault {
|
|
|
85
85
|
salience: number;
|
|
86
86
|
entities: string[];
|
|
87
87
|
}>;
|
|
88
|
+
clusteredFacts: Record<string, Array<{
|
|
89
|
+
content: string;
|
|
90
|
+
salience: number;
|
|
91
|
+
}>>;
|
|
92
|
+
recentChanges: Array<{
|
|
93
|
+
content: string;
|
|
94
|
+
when: string;
|
|
95
|
+
type: string;
|
|
96
|
+
}>;
|
|
88
97
|
activeCommitments: Array<{
|
|
89
98
|
content: string;
|
|
90
99
|
status: string;
|
package/dist/vault.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAgC,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AACzK,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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"}
|
package/dist/vault.js
CHANGED
|
@@ -4,6 +4,37 @@ import { RememberInputSchema, RecallInputSchema } from './types.js';
|
|
|
4
4
|
import { extract } from './extract.js';
|
|
5
5
|
import { calculateRecencyBoost, DEFAULT_TEMPORAL_CONFIG, findContradictionCandidates, verifyContradiction, temporalEdgeWeight } from './temporal.js';
|
|
6
6
|
// ============================================================
|
|
7
|
+
// Retry helper for rate-limited API calls
|
|
8
|
+
// ============================================================
|
|
9
|
+
async function withRetry(fn, { maxRetries = 3, label = 'API call' } = {}) {
|
|
10
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
11
|
+
try {
|
|
12
|
+
return await fn();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
const msg = err?.message ?? String(err);
|
|
16
|
+
const is429 = msg.includes('429') || msg.includes('RESOURCE_EXHAUSTED') || msg.includes('rate');
|
|
17
|
+
if (is429 && attempt < maxRetries) {
|
|
18
|
+
// Try to parse retry delay from error message
|
|
19
|
+
const retryMatch = msg.match(/retry in ([\d.]+)s/i);
|
|
20
|
+
const waitSec = retryMatch ? Math.ceil(parseFloat(retryMatch[1])) + 1 : (attempt + 1) * 15;
|
|
21
|
+
console.error(`[engram] ${label} rate limited. Retrying in ${waitSec}s (attempt ${attempt + 1}/${maxRetries})...`);
|
|
22
|
+
await new Promise(r => setTimeout(r, waitSec * 1000));
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
// Friendlier error message for rate limits
|
|
26
|
+
if (is429) {
|
|
27
|
+
throw new Error(`[engram] Rate limited after ${maxRetries} retries. ` +
|
|
28
|
+
`Free Gemini tier allows ~20 requests/minute. ` +
|
|
29
|
+
`Either wait a moment and retry, or upgrade to a paid API key. ` +
|
|
30
|
+
`Details: ${msg}`);
|
|
31
|
+
}
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
throw new Error('unreachable');
|
|
36
|
+
}
|
|
37
|
+
// ============================================================
|
|
7
38
|
// Vault — The public API for Engram
|
|
8
39
|
// ============================================================
|
|
9
40
|
export class Vault {
|
|
@@ -113,6 +144,11 @@ export class Vault {
|
|
|
113
144
|
const supersededId = keepNew ? existing.id : memory.id;
|
|
114
145
|
const keptId = keepNew ? memory.id : existing.id;
|
|
115
146
|
this.store.updateStatus(supersededId, 'superseded');
|
|
147
|
+
// Set valid_until: the superseded memory stopped being true when the kept memory was created
|
|
148
|
+
const keptMem = this.store.getMemoryDirect(keptId);
|
|
149
|
+
if (keptMem) {
|
|
150
|
+
this.store.setValidUntil(supersededId, keptMem.validFrom ?? keptMem.createdAt);
|
|
151
|
+
}
|
|
116
152
|
// Create a supersedes edge so the graph tracks the lineage
|
|
117
153
|
this.store.createEdge(keptId, supersededId, 'supersedes', 0.8);
|
|
118
154
|
// Merge: boost the kept memory's salience slightly from the duplicate
|
|
@@ -399,6 +435,9 @@ If nothing: {"insights": []}`;
|
|
|
399
435
|
if (result && result.confidence >= 0.7) {
|
|
400
436
|
// Mark the old memory as superseded
|
|
401
437
|
this.store.updateStatus(candidate.id, 'superseded');
|
|
438
|
+
// Set valid_until: use LLM-inferred date if available, else when the new fact became true
|
|
439
|
+
const validUntil = result.oldFactEndDate ?? memory.validFrom ?? memory.createdAt;
|
|
440
|
+
this.store.setValidUntil(candidate.id, validUntil);
|
|
402
441
|
// Create a supersedes edge with the contradiction confidence
|
|
403
442
|
this.store.createEdge(memory.id, candidate.id, 'supersedes', result.confidence);
|
|
404
443
|
// Inherit the old memory's stability (it was a trusted fact)
|
|
@@ -613,10 +652,27 @@ If nothing: {"insights": []}`;
|
|
|
613
652
|
});
|
|
614
653
|
}
|
|
615
654
|
// ── Phase 3: Filter, score, rank ───────────────────────
|
|
616
|
-
// 5. Filter
|
|
655
|
+
// 5. Filter by temporal validity
|
|
656
|
+
const asOf = parsed.asOf;
|
|
617
657
|
const showSuperseded = isAggregation && /correct|update|change|revis/i.test(parsed.context);
|
|
618
|
-
let results
|
|
619
|
-
|
|
658
|
+
let results;
|
|
659
|
+
if (asOf) {
|
|
660
|
+
// Point-in-time query: show memories that were valid at `asOf`,
|
|
661
|
+
// including superseded ones that were valid then.
|
|
662
|
+
const asOfDate = new Date(asOf).toISOString();
|
|
663
|
+
results = [...candidates.values()].filter(r => {
|
|
664
|
+
if (r.memory.status === 'archived')
|
|
665
|
+
return false;
|
|
666
|
+
const validFrom = r.memory.validFrom ?? r.memory.createdAt;
|
|
667
|
+
const validUntil = r.memory.validUntil;
|
|
668
|
+
return validFrom <= asOfDate && (!validUntil || validUntil > asOfDate);
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
else {
|
|
672
|
+
// Default: filter out superseded/archived
|
|
673
|
+
results = [...candidates.values()].filter(r => r.memory.status !== 'archived' &&
|
|
674
|
+
(r.memory.status !== 'superseded' || showSuperseded));
|
|
675
|
+
}
|
|
620
676
|
// Type filter
|
|
621
677
|
if (parsed.types && parsed.types.length > 0) {
|
|
622
678
|
results = results.filter(r => parsed.types.includes(r.memory.type));
|
|
@@ -832,9 +888,12 @@ If nothing: {"insights": []}`;
|
|
|
832
888
|
// --------------------------------------------------------
|
|
833
889
|
async consolidate() {
|
|
834
890
|
const startedAt = new Date().toISOString();
|
|
835
|
-
// Get recent unconsolidated episodes
|
|
891
|
+
// Get recent unconsolidated episodes, filtered by quality
|
|
892
|
+
// Skip very low-salience episodes (trivial exchanges, acknowledgments)
|
|
893
|
+
// to avoid wasting LLM tokens consolidating noise
|
|
836
894
|
const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
837
|
-
const episodes = this.store.getEpisodicSince(oneDayAgo)
|
|
895
|
+
const episodes = this.store.getEpisodicSince(oneDayAgo)
|
|
896
|
+
.filter(m => m.salience >= 0.2);
|
|
838
897
|
let semanticCreated = 0;
|
|
839
898
|
let semanticUpdated = 0;
|
|
840
899
|
let entitiesDiscovered = 0;
|
|
@@ -886,40 +945,78 @@ If nothing: {"insights": []}`;
|
|
|
886
945
|
// --------------------------------------------------------
|
|
887
946
|
async briefing(context = '', limit = 20) {
|
|
888
947
|
// 1. High-salience semantic memories (key facts)
|
|
889
|
-
const allSemantic = this.store.getByType('semantic',
|
|
890
|
-
const
|
|
891
|
-
.filter(m => m.salience >= 0.
|
|
892
|
-
.sort((a, b) => b.salience - a.salience)
|
|
948
|
+
const allSemantic = this.store.getByType('semantic', 200);
|
|
949
|
+
const activeSemantic = allSemantic
|
|
950
|
+
.filter(m => m.salience >= 0.3 && m.status === 'active')
|
|
951
|
+
.sort((a, b) => b.salience - a.salience);
|
|
952
|
+
const keyFacts = activeSemantic
|
|
893
953
|
.slice(0, limit)
|
|
894
954
|
.map(m => ({ content: m.content, salience: m.salience, entities: m.entities }));
|
|
895
|
-
// 2.
|
|
955
|
+
// 2. Cluster facts by primary entity for organized presentation
|
|
956
|
+
const clusteredFacts = {};
|
|
957
|
+
for (const mem of activeSemantic.slice(0, 50)) {
|
|
958
|
+
const primaryEntity = mem.entities[0] ?? 'General';
|
|
959
|
+
if (!clusteredFacts[primaryEntity])
|
|
960
|
+
clusteredFacts[primaryEntity] = [];
|
|
961
|
+
if (clusteredFacts[primaryEntity].length < 5) {
|
|
962
|
+
clusteredFacts[primaryEntity].push({
|
|
963
|
+
content: mem.content,
|
|
964
|
+
salience: mem.salience,
|
|
965
|
+
});
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
// 3. What changed recently — memories created or modified in last 48h
|
|
969
|
+
// This is the "what's new since last session" section
|
|
970
|
+
const twoDaysAgo = new Date(Date.now() - 48 * 60 * 60 * 1000);
|
|
971
|
+
const recentMemories = this.store.getRecent(50)
|
|
972
|
+
.filter(m => new Date(m.createdAt) > twoDaysAgo && m.status === 'active');
|
|
973
|
+
// Identify supersessions (corrections to old facts)
|
|
974
|
+
const recentChanges = [];
|
|
975
|
+
for (const mem of recentMemories.slice(0, 15)) {
|
|
976
|
+
// Check if this memory supersedes another (it's a correction/update)
|
|
977
|
+
const edges = this.store.getEdgesFrom(mem.id);
|
|
978
|
+
const isCorrection = edges.some(e => e.type === 'supersedes');
|
|
979
|
+
const type = isCorrection ? 'correction' :
|
|
980
|
+
mem.status === 'pending' ? 'commitment' :
|
|
981
|
+
mem.type === 'episodic' ? 'event' : 'new_fact';
|
|
982
|
+
recentChanges.push({
|
|
983
|
+
content: mem.content,
|
|
984
|
+
when: mem.createdAt,
|
|
985
|
+
type,
|
|
986
|
+
});
|
|
987
|
+
}
|
|
988
|
+
// 4. Active commitments (pending status) — only high-confidence ones
|
|
896
989
|
const allMemories = this.store.exportAll().memories;
|
|
897
990
|
const activeCommitments = allMemories
|
|
898
|
-
.filter(m => m.status === 'pending')
|
|
991
|
+
.filter(m => m.status === 'pending' && m.salience >= 0.4)
|
|
899
992
|
.sort((a, b) => b.salience - a.salience)
|
|
900
993
|
.slice(0, 10)
|
|
901
994
|
.map(m => ({ content: m.content, status: m.status, entities: m.entities }));
|
|
902
|
-
//
|
|
995
|
+
// 5. Recent activity (last 24h episodes)
|
|
903
996
|
const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
|
|
904
997
|
const recentActivity = this.store.getEpisodicSince(oneDayAgo, 10)
|
|
905
998
|
.map(m => ({ content: m.content, when: m.createdAt }));
|
|
906
|
-
//
|
|
999
|
+
// 6. Top entities
|
|
907
1000
|
const topEntities = this.entities()
|
|
908
|
-
.slice(0,
|
|
1001
|
+
.slice(0, 15)
|
|
909
1002
|
.map(e => ({ name: e.name, type: e.type, memoryCount: e.memoryCount }));
|
|
910
|
-
//
|
|
1003
|
+
// 7. Contradictions
|
|
911
1004
|
const contradictions = this.contradictions(5)
|
|
912
1005
|
.map(c => ({ a: c.memoryA.content, b: c.memoryB.content }));
|
|
913
|
-
//
|
|
1006
|
+
// 8. If context is provided, do a spreading-activation recall and weave in results
|
|
914
1007
|
let contextualMemories = [];
|
|
915
1008
|
if (context.trim()) {
|
|
916
1009
|
const recalled = await this.recall({ context, limit: 5, spread: true });
|
|
917
1010
|
contextualMemories = recalled.map(m => m.content);
|
|
918
1011
|
}
|
|
919
|
-
//
|
|
1012
|
+
// 9. Build summary
|
|
920
1013
|
const stats = this.stats();
|
|
921
1014
|
const summaryParts = [];
|
|
922
1015
|
summaryParts.push(`Vault: ${stats.total} memories (${stats.semantic} semantic, ${stats.episodic} episodic, ${stats.procedural} procedural), ${stats.entities} entities.`);
|
|
1016
|
+
if (recentChanges.length > 0) {
|
|
1017
|
+
const corrections = recentChanges.filter(c => c.type === 'correction').length;
|
|
1018
|
+
summaryParts.push(`${recentChanges.length} changes in last 48h${corrections > 0 ? ` (${corrections} corrections)` : ''}.`);
|
|
1019
|
+
}
|
|
923
1020
|
if (activeCommitments.length > 0) {
|
|
924
1021
|
summaryParts.push(`${activeCommitments.length} pending commitment(s).`);
|
|
925
1022
|
}
|
|
@@ -932,6 +1029,8 @@ If nothing: {"insights": []}`;
|
|
|
932
1029
|
return {
|
|
933
1030
|
summary: summaryParts.join(' '),
|
|
934
1031
|
keyFacts,
|
|
1032
|
+
clusteredFacts,
|
|
1033
|
+
recentChanges,
|
|
935
1034
|
activeCommitments,
|
|
936
1035
|
recentActivity,
|
|
937
1036
|
topEntities,
|
|
@@ -1200,12 +1299,16 @@ Confidence guide:
|
|
|
1200
1299
|
const includeContradictions = opts?.includeContradictions ?? true;
|
|
1201
1300
|
const now = Date.now();
|
|
1202
1301
|
const alerts = [];
|
|
1203
|
-
// 1. Pending commitments
|
|
1302
|
+
// 1. Pending commitments — only surface items that look like real commitments
|
|
1204
1303
|
const pending = this.store.getByStatus('pending', 50);
|
|
1205
1304
|
for (const mem of pending) {
|
|
1206
1305
|
const ageDays = Math.floor((now - new Date(mem.createdAt).getTime()) / (1000 * 60 * 60 * 24));
|
|
1207
1306
|
const priority = ageDays >= 7 ? 'high' :
|
|
1208
1307
|
ageDays >= 3 ? 'medium' : 'low';
|
|
1308
|
+
// Filter out low-confidence pending items — they're likely
|
|
1309
|
+
// discussed possibilities, not real commitments
|
|
1310
|
+
if (mem.confidence < 0.6)
|
|
1311
|
+
continue;
|
|
1209
1312
|
// High-salience pending items are always worth surfacing
|
|
1210
1313
|
// Low-salience ones only if they're getting stale
|
|
1211
1314
|
if (mem.salience < 0.4 && ageDays < staleDays)
|
|
@@ -1964,26 +2067,27 @@ Be conservative with explicit memories. Be observant with implicit ones — look
|
|
|
1964
2067
|
}
|
|
1965
2068
|
if (config.provider === 'gemini') {
|
|
1966
2069
|
const geminiModel = model.startsWith('gemini') ? model : 'gemini-2.5-flash';
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
2070
|
+
return withRetry(async () => {
|
|
2071
|
+
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${geminiModel}:generateContent?key=${config.apiKey}`, {
|
|
2072
|
+
method: 'POST',
|
|
2073
|
+
headers: { 'Content-Type': 'application/json' },
|
|
2074
|
+
body: JSON.stringify({
|
|
2075
|
+
contents: [{ parts: [{ text: prompt }] }],
|
|
2076
|
+
generationConfig: {
|
|
2077
|
+
responseMimeType: 'application/json',
|
|
2078
|
+
maxOutputTokens: 4096,
|
|
2079
|
+
},
|
|
2080
|
+
}),
|
|
2081
|
+
});
|
|
2082
|
+
if (!response.ok) {
|
|
2083
|
+
const err = await response.text();
|
|
2084
|
+
throw new Error(`Gemini API error: ${response.status} ${err}`);
|
|
2085
|
+
}
|
|
2086
|
+
const data = await response.json();
|
|
2087
|
+
const text = data.candidates?.[0]?.content?.parts?.[0]?.text ?? '';
|
|
2088
|
+
const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/) ?? text.match(/\{[\s\S]*\}/);
|
|
2089
|
+
return jsonMatch ? (jsonMatch[1] ?? jsonMatch[0]) : text;
|
|
2090
|
+
}, { label: 'Gemini generateContent' });
|
|
1987
2091
|
}
|
|
1988
2092
|
if (config.provider === 'openai') {
|
|
1989
2093
|
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|