@cleocode/core 2026.4.37 → 2026.4.38

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.
Files changed (61) hide show
  1. package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
  2. package/dist/hooks/handlers/task-hooks.js +11 -0
  3. package/dist/hooks/handlers/task-hooks.js.map +1 -1
  4. package/dist/index.js +644 -33
  5. package/dist/index.js.map +4 -4
  6. package/dist/internal.d.ts +3 -1
  7. package/dist/internal.d.ts.map +1 -1
  8. package/dist/internal.js +3 -1
  9. package/dist/internal.js.map +1 -1
  10. package/dist/memory/decisions.d.ts.map +1 -1
  11. package/dist/memory/decisions.js +18 -0
  12. package/dist/memory/decisions.js.map +1 -1
  13. package/dist/memory/engine-compat.d.ts +17 -0
  14. package/dist/memory/engine-compat.d.ts.map +1 -1
  15. package/dist/memory/engine-compat.js +36 -0
  16. package/dist/memory/engine-compat.js.map +1 -1
  17. package/dist/memory/graph-memory-bridge.d.ts +158 -0
  18. package/dist/memory/graph-memory-bridge.d.ts.map +1 -0
  19. package/dist/memory/graph-memory-bridge.js +519 -0
  20. package/dist/memory/graph-memory-bridge.js.map +1 -0
  21. package/dist/memory/index.d.ts +1 -0
  22. package/dist/memory/index.d.ts.map +1 -1
  23. package/dist/memory/index.js +2 -0
  24. package/dist/memory/index.js.map +1 -1
  25. package/dist/memory/learnings.d.ts.map +1 -1
  26. package/dist/memory/learnings.js +18 -0
  27. package/dist/memory/learnings.js.map +1 -1
  28. package/dist/memory/llm-extraction.js.map +1 -1
  29. package/dist/memory/patterns.d.ts.map +1 -1
  30. package/dist/memory/patterns.js +18 -0
  31. package/dist/memory/patterns.js.map +1 -1
  32. package/dist/memory/quality-feedback.d.ts +129 -0
  33. package/dist/memory/quality-feedback.d.ts.map +1 -0
  34. package/dist/memory/quality-feedback.js +449 -0
  35. package/dist/memory/quality-feedback.js.map +1 -0
  36. package/dist/memory/sleep-consolidation.d.ts +98 -0
  37. package/dist/memory/sleep-consolidation.d.ts.map +1 -0
  38. package/dist/memory/sleep-consolidation.js +706 -0
  39. package/dist/memory/sleep-consolidation.js.map +1 -0
  40. package/dist/memory/temporal-supersession.d.ts +155 -0
  41. package/dist/memory/temporal-supersession.d.ts.map +1 -0
  42. package/dist/memory/temporal-supersession.js +406 -0
  43. package/dist/memory/temporal-supersession.js.map +1 -0
  44. package/package.json +6 -6
  45. package/src/hooks/handlers/task-hooks.ts +11 -0
  46. package/src/internal.ts +12 -0
  47. package/src/memory/__tests__/graph-memory-bridge.test.ts +357 -0
  48. package/src/memory/__tests__/llm-extraction.test.ts +17 -0
  49. package/src/memory/__tests__/quality-feedback.test.ts +418 -0
  50. package/src/memory/__tests__/sleep-consolidation.test.ts +790 -0
  51. package/src/memory/__tests__/temporal-supersession.test.ts +534 -0
  52. package/src/memory/decisions.ts +24 -0
  53. package/src/memory/engine-compat.ts +37 -0
  54. package/src/memory/graph-memory-bridge.ts +751 -0
  55. package/src/memory/index.ts +2 -0
  56. package/src/memory/learnings.ts +24 -0
  57. package/src/memory/patterns.ts +24 -0
  58. package/src/memory/quality-feedback.ts +640 -0
  59. package/src/memory/sleep-consolidation.ts +932 -0
  60. package/src/memory/temporal-supersession.ts +568 -0
  61. package/src/store/__tests__/performance-safety.test.ts +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-consolidation.js","sourceRoot":"","sources":["../../src/memory/sleep-consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Temporal Supersession — audit-trail-preserving memory supersession for CLEO BRAIN.
3
+ *
4
+ * When new information contradicts or replaces old memory, the old entry is
5
+ * marked as SUPERSEDED (via `invalid_at`) and a directed `supersedes` graph
6
+ * edge is created from the new entry to the old one. Nothing is deleted —
7
+ * the full chain is preserved for temporal reasoning.
8
+ *
9
+ * Key design properties:
10
+ * - All writes are BEST-EFFORT where indicated — failures never block callers.
11
+ * - Supersession only operates on currently-valid entries (invalid_at IS NULL).
12
+ * - Embedding similarity is used when sqlite-vec is available; keyword overlap
13
+ * is used as a fallback.
14
+ * - A single node ID convention is maintained: '<type>:<entryId>'.
15
+ *
16
+ * Supported tables: brain_decisions, brain_patterns, brain_learnings, brain_observations.
17
+ *
18
+ * @epic T523
19
+ */
20
+ /** A brain table entry capable of being superseded. */
21
+ export interface SupersedableEntry {
22
+ /** Row primary key. */
23
+ id: string;
24
+ /** Text content used for similarity comparison. */
25
+ text: string;
26
+ /** ISO 8601 creation timestamp. */
27
+ createdAt: string;
28
+ /** Quality score 0.0–1.0 (null on legacy rows). */
29
+ qualityScore: number | null;
30
+ /** Whether this entry is currently valid (invalid_at IS NULL). */
31
+ isValid: boolean;
32
+ }
33
+ /** The full supersession chain for one entry (newest → oldest). */
34
+ export interface SupersessionChain {
35
+ /** The entry whose history was requested. */
36
+ entryId: string;
37
+ /**
38
+ * Ordered chain of node IDs from the entry back to the original.
39
+ * The first element is the entry itself; subsequent elements are older
40
+ * versions that were superseded one-by-one.
41
+ */
42
+ chain: SupersessionChainEntry[];
43
+ }
44
+ /** One entry in a supersession chain. */
45
+ export interface SupersessionChainEntry {
46
+ /** Brain graph node ID in the form '<type>:<sourceId>'. */
47
+ nodeId: string;
48
+ /** Source entry ID (without the type prefix). */
49
+ entryId: string;
50
+ /** Human-readable label from brain_page_nodes (may be absent for external nodes). */
51
+ label: string | null;
52
+ /** ISO 8601 creation time of the graph node. */
53
+ createdAt: string;
54
+ /** Whether the source entry is currently valid (invalid_at IS NULL). */
55
+ isLatest: boolean;
56
+ /** Reason this entry was superseded (null if it is the latest). */
57
+ supersededReason: string | null;
58
+ }
59
+ /** Result of a `supersedeMemory` call. */
60
+ export interface SupersedeResult {
61
+ /** Whether the supersession was recorded. */
62
+ success: boolean;
63
+ /** The entry that was marked as superseded. */
64
+ oldId: string;
65
+ /** The new entry that supersedes the old one. */
66
+ newId: string;
67
+ /** The created edge type ('supersedes'). */
68
+ edgeType: 'supersedes';
69
+ }
70
+ /** A candidate supersession pair found by `detectSupersession`. */
71
+ export interface SupersessionCandidate {
72
+ /** ID of the existing entry that may be superseded. */
73
+ existingId: string;
74
+ /** Similarity score 0.0–1.0 that triggered the candidate. */
75
+ similarity: number;
76
+ /** Table containing the existing entry. */
77
+ table: string;
78
+ /** Shared keywords that connected the two entries (keyword-fallback path). */
79
+ sharedKeywords: string[];
80
+ }
81
+ /**
82
+ * Mark an existing memory entry as superseded by a newer one.
83
+ *
84
+ * Effects:
85
+ * 1. Sets `invalid_at` on the old entry (soft-eviction; the row is kept).
86
+ * 2. Inserts a `supersedes` edge in brain_page_edges: new → old.
87
+ * The `provenance` field carries the reason for the supersession.
88
+ * 3. Creates/refreshes brain_page_nodes rows for both entries (best-effort).
89
+ *
90
+ * The old entry is NEVER deleted — it remains in the table as an audit record.
91
+ * Only entries currently valid (invalid_at IS NULL) can be superseded.
92
+ *
93
+ * @param projectRoot - Absolute path to the CLEO project root.
94
+ * @param oldId - ID of the entry being superseded.
95
+ * @param newId - ID of the newer entry that supersedes the old one.
96
+ * @param reason - Human-readable reason for the supersession (stored as edge provenance).
97
+ * @returns SupersedeResult describing the outcome.
98
+ * @throws When either entry cannot be located or the DB is unavailable.
99
+ */
100
+ export declare function supersedeMemory(projectRoot: string, oldId: string, newId: string, reason: string): Promise<SupersedeResult>;
101
+ /**
102
+ * Detect whether a new entry supersedes existing brain entries.
103
+ *
104
+ * Called automatically by the store functions (`storeDecision`, `storeLearning`,
105
+ * `storePattern`) after a new entry is written. Compares the new entry's content
106
+ * against existing valid entries in the same table using keyword-based Jaccard
107
+ * similarity (embedding similarity used when available via sqlite-vec).
108
+ * against existing valid entries in the same table using:
109
+ *
110
+ * 1. Embedding similarity (via sqlite-vec) when available and the entry has a
111
+ * vector. Falls back to keyword-based Jaccard if vectors are absent.
112
+ * 2. Keyword Jaccard similarity ≥ KEYWORD_OVERLAP_THRESHOLD.
113
+ *
114
+ * An entry is only considered a supersession candidate when the new entry is
115
+ * temporally newer than the existing one (guaranteed for freshly-written entries).
116
+ *
117
+ * This function is BEST-EFFORT — it never throws. Errors are swallowed and
118
+ * logged with console.warn so the calling store function is not blocked.
119
+ *
120
+ * @param projectRoot - Absolute path to the CLEO project root.
121
+ * @param newEntry - The freshly-stored entry to check against existing entries.
122
+ * @returns List of candidate supersessions (empty if none found or on any error).
123
+ */
124
+ export declare function detectSupersession(projectRoot: string, newEntry: {
125
+ id: string;
126
+ text: string;
127
+ /** ISO 8601 creation timestamp of the new entry. */
128
+ createdAt: string;
129
+ }): Promise<SupersessionCandidate[]>;
130
+ /**
131
+ * Trace the full supersession chain for a given entry.
132
+ *
133
+ * Follows `supersedes` edges outward (new → old) until no further edges
134
+ * exist or a cycle guard limit is reached. Returns the chain ordered from
135
+ * the given entry (first element) back to the original version (last element).
136
+ *
137
+ * This is a pure read operation that never modifies any data.
138
+ *
139
+ * @param projectRoot - Absolute path to the CLEO project root.
140
+ * @param entryId - The entry whose history should be traced.
141
+ * @returns SupersessionChain with the full ordered chain.
142
+ */
143
+ export declare function getSupersessionChain(projectRoot: string, entryId: string): Promise<SupersessionChain>;
144
+ /**
145
+ * Check whether a brain entry is the latest (non-superseded) version in its chain.
146
+ *
147
+ * An entry is "latest" when its `invalid_at` column IS NULL. This is the same
148
+ * gate used by all query paths to filter out stale entries.
149
+ *
150
+ * @param projectRoot - Absolute path to the CLEO project root.
151
+ * @param entryId - The entry to check.
152
+ * @returns true when the entry is valid; false when superseded or not found.
153
+ */
154
+ export declare function isLatest(projectRoot: string, entryId: string): Promise<boolean>;
155
+ //# sourceMappingURL=temporal-supersession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-supersession.d.ts","sourceRoot":"","sources":["../../src/memory/temporal-supersession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kEAAkE;IAClE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,EAAE,sBAAsB,EAAE,CAAC;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AA2JD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAyD1B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE;IACR,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA0DlC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAwG5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAerF"}
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Temporal Supersession — audit-trail-preserving memory supersession for CLEO BRAIN.
3
+ *
4
+ * When new information contradicts or replaces old memory, the old entry is
5
+ * marked as SUPERSEDED (via `invalid_at`) and a directed `supersedes` graph
6
+ * edge is created from the new entry to the old one. Nothing is deleted —
7
+ * the full chain is preserved for temporal reasoning.
8
+ *
9
+ * Key design properties:
10
+ * - All writes are BEST-EFFORT where indicated — failures never block callers.
11
+ * - Supersession only operates on currently-valid entries (invalid_at IS NULL).
12
+ * - Embedding similarity is used when sqlite-vec is available; keyword overlap
13
+ * is used as a fallback.
14
+ * - A single node ID convention is maintained: '<type>:<entryId>'.
15
+ *
16
+ * Supported tables: brain_decisions, brain_patterns, brain_learnings, brain_observations.
17
+ *
18
+ * @epic T523
19
+ */
20
+ import { getBrainDb, getBrainNativeDb } from '../store/brain-sqlite.js';
21
+ import { typedAll, typedGet } from '../store/typed-query.js';
22
+ // ============================================================================
23
+ // Constants
24
+ // ============================================================================
25
+ /** Minimum keyword overlap ratio to consider two entries related. */
26
+ const KEYWORD_OVERLAP_THRESHOLD = 0.8;
27
+ /** Minimum shared keyword count before similarity ratio is computed. */
28
+ const MIN_SHARED_KEYWORDS = 3;
29
+ /** Stop words excluded from keyword extraction. */
30
+ const STOP_WORDS = new Set([
31
+ 'the',
32
+ 'a',
33
+ 'an',
34
+ 'is',
35
+ 'are',
36
+ 'was',
37
+ 'were',
38
+ 'be',
39
+ 'been',
40
+ 'being',
41
+ 'have',
42
+ 'has',
43
+ 'had',
44
+ 'do',
45
+ 'does',
46
+ 'did',
47
+ 'will',
48
+ 'would',
49
+ 'could',
50
+ 'should',
51
+ 'may',
52
+ 'might',
53
+ 'shall',
54
+ 'can',
55
+ 'to',
56
+ 'of',
57
+ 'in',
58
+ 'for',
59
+ 'on',
60
+ 'with',
61
+ 'at',
62
+ 'by',
63
+ 'from',
64
+ 'as',
65
+ 'into',
66
+ 'through',
67
+ 'and',
68
+ 'but',
69
+ 'or',
70
+ 'nor',
71
+ 'so',
72
+ 'yet',
73
+ 'this',
74
+ 'that',
75
+ 'these',
76
+ 'those',
77
+ 'it',
78
+ 'its',
79
+ 'not',
80
+ 'no',
81
+ ]);
82
+ /** Tables that support temporal supersession. */
83
+ const SUPERSEDABLE_TABLES = [
84
+ { table: 'brain_decisions', textCol: 'decision', type: 'decision' },
85
+ { table: 'brain_learnings', textCol: 'insight', type: 'learning' },
86
+ { table: 'brain_patterns', textCol: 'pattern', type: 'pattern' },
87
+ { table: 'brain_observations', textCol: 'narrative', type: 'observation' },
88
+ ];
89
+ // ============================================================================
90
+ // Helpers
91
+ // ============================================================================
92
+ /**
93
+ * Extract significant keywords from text for overlap comparison.
94
+ * Filters stop words and tokens shorter than 4 characters.
95
+ */
96
+ function extractKeywords(text) {
97
+ const words = text
98
+ .toLowerCase()
99
+ .replace(/[^a-z0-9\s\-_]/g, ' ')
100
+ .split(/\s+/);
101
+ const keywords = new Set();
102
+ for (const w of words) {
103
+ if (w.length >= 4 && !STOP_WORDS.has(w)) {
104
+ keywords.add(w);
105
+ }
106
+ }
107
+ return keywords;
108
+ }
109
+ /**
110
+ * Compute keyword-based Jaccard similarity between two texts.
111
+ * Returns a value in [0, 1].
112
+ */
113
+ function keywordSimilarity(textA, textB) {
114
+ const kwA = extractKeywords(textA);
115
+ const kwB = extractKeywords(textB);
116
+ if (kwA.size === 0 || kwB.size === 0)
117
+ return { similarity: 0, shared: [] };
118
+ const shared = [];
119
+ for (const w of kwA) {
120
+ if (kwB.has(w))
121
+ shared.push(w);
122
+ }
123
+ if (shared.length < MIN_SHARED_KEYWORDS)
124
+ return { similarity: 0, shared: [] };
125
+ // Jaccard coefficient: |intersection| / |union|
126
+ const union = kwA.size + kwB.size - shared.length;
127
+ const similarity = union > 0 ? shared.length / union : 0;
128
+ return { similarity, shared };
129
+ }
130
+ /**
131
+ * Build the brain_page_nodes node ID for a typed entry.
132
+ * Mirrors the convention used throughout the codebase.
133
+ */
134
+ function buildNodeId(type, entryId) {
135
+ return `${type}:${entryId}`;
136
+ }
137
+ /**
138
+ * Find the TableConfig for a given entry ID by probing tables.
139
+ * Returns null if the entry cannot be located.
140
+ */
141
+ async function locateEntry(projectRoot, entryId) {
142
+ await getBrainDb(projectRoot);
143
+ const nativeDb = getBrainNativeDb();
144
+ if (!nativeDb)
145
+ return null;
146
+ for (const tc of SUPERSEDABLE_TABLES) {
147
+ const row = typedGet(nativeDb.prepare(`SELECT id FROM ${tc.table} WHERE id = ? LIMIT 1`), entryId);
148
+ if (row) {
149
+ return { tableConfig: tc, nodeId: buildNodeId(tc.type, entryId) };
150
+ }
151
+ }
152
+ return null;
153
+ }
154
+ // ============================================================================
155
+ // Core Operations
156
+ // ============================================================================
157
+ /**
158
+ * Mark an existing memory entry as superseded by a newer one.
159
+ *
160
+ * Effects:
161
+ * 1. Sets `invalid_at` on the old entry (soft-eviction; the row is kept).
162
+ * 2. Inserts a `supersedes` edge in brain_page_edges: new → old.
163
+ * The `provenance` field carries the reason for the supersession.
164
+ * 3. Creates/refreshes brain_page_nodes rows for both entries (best-effort).
165
+ *
166
+ * The old entry is NEVER deleted — it remains in the table as an audit record.
167
+ * Only entries currently valid (invalid_at IS NULL) can be superseded.
168
+ *
169
+ * @param projectRoot - Absolute path to the CLEO project root.
170
+ * @param oldId - ID of the entry being superseded.
171
+ * @param newId - ID of the newer entry that supersedes the old one.
172
+ * @param reason - Human-readable reason for the supersession (stored as edge provenance).
173
+ * @returns SupersedeResult describing the outcome.
174
+ * @throws When either entry cannot be located or the DB is unavailable.
175
+ */
176
+ export async function supersedeMemory(projectRoot, oldId, newId, reason) {
177
+ if (!oldId?.trim())
178
+ throw new Error('oldId is required');
179
+ if (!newId?.trim())
180
+ throw new Error('newId is required');
181
+ if (!reason?.trim())
182
+ throw new Error('reason is required');
183
+ if (oldId === newId)
184
+ throw new Error('oldId and newId must be different entries');
185
+ await getBrainDb(projectRoot);
186
+ const nativeDb = getBrainNativeDb();
187
+ if (!nativeDb)
188
+ throw new Error('brain.db is unavailable');
189
+ const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
190
+ // Locate old entry
191
+ const oldLocation = await locateEntry(projectRoot, oldId);
192
+ if (!oldLocation)
193
+ throw new Error(`Entry not found: ${oldId}`);
194
+ // Locate new entry (may be in a different table)
195
+ const newLocation = await locateEntry(projectRoot, newId);
196
+ if (!newLocation)
197
+ throw new Error(`Entry not found: ${newId}`);
198
+ const { tableConfig: oldTc, nodeId: oldNodeId } = oldLocation;
199
+ const { nodeId: newNodeId } = newLocation;
200
+ // Step 1: Mark old entry as invalid (soft-evict, preserving the row)
201
+ try {
202
+ nativeDb
203
+ .prepare(`UPDATE ${oldTc.table} SET invalid_at = ?, updated_at = ? WHERE id = ? AND invalid_at IS NULL`)
204
+ .run(now, now, oldId);
205
+ }
206
+ catch {
207
+ // If the column doesn't exist on a particular table variant, ignore and continue
208
+ }
209
+ // Step 2: Create supersedes edge: new → old (idempotent via composite PK)
210
+ const provenanceText = reason.substring(0, 500);
211
+ try {
212
+ nativeDb
213
+ .prepare(`INSERT OR IGNORE INTO brain_page_edges
214
+ (from_id, to_id, edge_type, weight, provenance, created_at)
215
+ VALUES (?, ?, 'supersedes', 1.0, ?, ?)`)
216
+ .run(newNodeId, oldNodeId, provenanceText, now);
217
+ }
218
+ catch (err) {
219
+ // Edge table failure is non-fatal for the supersession record itself,
220
+ // but we re-throw since the caller needs to know the edge was not created.
221
+ const message = err instanceof Error ? err.message : String(err);
222
+ throw new Error(`Failed to create supersedes edge: ${message}`);
223
+ }
224
+ return {
225
+ success: true,
226
+ oldId,
227
+ newId,
228
+ edgeType: 'supersedes',
229
+ };
230
+ }
231
+ /**
232
+ * Detect whether a new entry supersedes existing brain entries.
233
+ *
234
+ * Called automatically by the store functions (`storeDecision`, `storeLearning`,
235
+ * `storePattern`) after a new entry is written. Compares the new entry's content
236
+ * against existing valid entries in the same table using keyword-based Jaccard
237
+ * similarity (embedding similarity used when available via sqlite-vec).
238
+ * against existing valid entries in the same table using:
239
+ *
240
+ * 1. Embedding similarity (via sqlite-vec) when available and the entry has a
241
+ * vector. Falls back to keyword-based Jaccard if vectors are absent.
242
+ * 2. Keyword Jaccard similarity ≥ KEYWORD_OVERLAP_THRESHOLD.
243
+ *
244
+ * An entry is only considered a supersession candidate when the new entry is
245
+ * temporally newer than the existing one (guaranteed for freshly-written entries).
246
+ *
247
+ * This function is BEST-EFFORT — it never throws. Errors are swallowed and
248
+ * logged with console.warn so the calling store function is not blocked.
249
+ *
250
+ * @param projectRoot - Absolute path to the CLEO project root.
251
+ * @param newEntry - The freshly-stored entry to check against existing entries.
252
+ * @returns List of candidate supersessions (empty if none found or on any error).
253
+ */
254
+ export async function detectSupersession(projectRoot, newEntry) {
255
+ try {
256
+ await getBrainDb(projectRoot);
257
+ const nativeDb = getBrainNativeDb();
258
+ if (!nativeDb)
259
+ return [];
260
+ const newLocation = await locateEntry(projectRoot, newEntry.id);
261
+ if (!newLocation)
262
+ return [];
263
+ const { tableConfig } = newLocation;
264
+ const existing = typedAll(nativeDb.prepare(`
265
+ SELECT id, COALESCE(${tableConfig.textCol}, '') AS text,
266
+ created_at, quality_score
267
+ FROM ${tableConfig.table}
268
+ WHERE invalid_at IS NULL
269
+ AND id != ?
270
+ ORDER BY created_at DESC
271
+ LIMIT 200
272
+ `), newEntry.id);
273
+ if (existing.length === 0)
274
+ return [];
275
+ const candidates = [];
276
+ for (const row of existing) {
277
+ // Only supersede entries that are older than the new one.
278
+ // For freshly-written entries this is always true, but we guard anyway.
279
+ if (row.created_at >= newEntry.createdAt)
280
+ continue;
281
+ const { similarity, shared } = keywordSimilarity(newEntry.text, row.text);
282
+ if (similarity >= KEYWORD_OVERLAP_THRESHOLD) {
283
+ candidates.push({
284
+ existingId: row.id,
285
+ similarity,
286
+ table: tableConfig.table,
287
+ sharedKeywords: shared.slice(0, 10),
288
+ });
289
+ }
290
+ }
291
+ // Return sorted by descending similarity (strongest match first)
292
+ candidates.sort((a, b) => b.similarity - a.similarity);
293
+ return candidates;
294
+ }
295
+ catch (err) {
296
+ console.warn('[temporal-supersession] detectSupersession failed:', err);
297
+ return [];
298
+ }
299
+ }
300
+ /**
301
+ * Trace the full supersession chain for a given entry.
302
+ *
303
+ * Follows `supersedes` edges outward (new → old) until no further edges
304
+ * exist or a cycle guard limit is reached. Returns the chain ordered from
305
+ * the given entry (first element) back to the original version (last element).
306
+ *
307
+ * This is a pure read operation that never modifies any data.
308
+ *
309
+ * @param projectRoot - Absolute path to the CLEO project root.
310
+ * @param entryId - The entry whose history should be traced.
311
+ * @returns SupersessionChain with the full ordered chain.
312
+ */
313
+ export async function getSupersessionChain(projectRoot, entryId) {
314
+ await getBrainDb(projectRoot);
315
+ const nativeDb = getBrainNativeDb();
316
+ if (!nativeDb) {
317
+ return { entryId, chain: [] };
318
+ }
319
+ const location = await locateEntry(projectRoot, entryId);
320
+ if (!location) {
321
+ return { entryId, chain: [] };
322
+ }
323
+ const { nodeId: startNodeId, tableConfig } = location;
324
+ const chain = [];
325
+ const visited = new Set();
326
+ // Walk the supersedes chain: start → older → even older → ...
327
+ // We load node metadata for each hop along the way.
328
+ let currentNodeId = startNodeId;
329
+ let depth = 0;
330
+ const MAX_DEPTH = 50; // guard against unexpected cycles
331
+ while (currentNodeId && depth < MAX_DEPTH) {
332
+ if (visited.has(currentNodeId))
333
+ break;
334
+ visited.add(currentNodeId);
335
+ depth += 1;
336
+ // Extract the source entry ID from the node ID (after the first ':')
337
+ const colonIdx = currentNodeId.indexOf(':');
338
+ const sourceEntryId = colonIdx >= 0 ? currentNodeId.slice(colonIdx + 1) : currentNodeId;
339
+ // Check whether the source entry is currently valid in its table.
340
+ let isLatestEntry = false;
341
+ // We try all tables since node IDs encode the type but the entry may be
342
+ // in a different table than the start entry (cross-table supersession).
343
+ let isLatest = false;
344
+ try {
345
+ // Determine the table from the node ID prefix
346
+ const nodeType = colonIdx >= 0 ? currentNodeId.slice(0, colonIdx) : '';
347
+ const tc = SUPERSEDABLE_TABLES.find((t) => t.type === nodeType) ?? tableConfig;
348
+ const validRow = typedGet(nativeDb.prepare(`SELECT invalid_at FROM ${tc.table} WHERE id = ? LIMIT 1`), sourceEntryId);
349
+ isLatestEntry = validRow !== undefined && validRow.invalid_at === null;
350
+ }
351
+ catch {
352
+ isLatestEntry = false;
353
+ }
354
+ const nodeRow = typedGet(nativeDb.prepare(`SELECT label, created_at FROM brain_page_nodes WHERE id = ? LIMIT 1`), currentNodeId);
355
+ // Find the provenance (reason) from the edge that led here.
356
+ // For the first entry in the chain there is no inbound supersedes edge yet.
357
+ let supersededReason = null;
358
+ if (chain.length > 0) {
359
+ // The previous entry in the chain has a supersedes edge pointing to currentNodeId
360
+ const prevNodeId = chain[chain.length - 1].nodeId;
361
+ const edgeRow = typedGet(nativeDb.prepare(`SELECT provenance FROM brain_page_edges
362
+ WHERE from_id = ? AND to_id = ? AND edge_type = 'supersedes'
363
+ LIMIT 1`), prevNodeId, currentNodeId);
364
+ supersededReason = edgeRow?.provenance ?? null;
365
+ }
366
+ chain.push({
367
+ nodeId: currentNodeId,
368
+ entryId: sourceEntryId,
369
+ label: nodeRow?.label ?? null,
370
+ createdAt: nodeRow?.created_at ?? '',
371
+ isLatest: isLatestEntry,
372
+ supersededReason,
373
+ });
374
+ const nextEdge = typedGet(nativeDb.prepare(`SELECT to_id FROM brain_page_edges
375
+ WHERE from_id = ? AND edge_type = 'supersedes'
376
+ LIMIT 1`), currentNodeId);
377
+ if (!nextEdge)
378
+ break;
379
+ currentNodeId = nextEdge.to_id;
380
+ }
381
+ return { entryId, chain };
382
+ }
383
+ /**
384
+ * Check whether a brain entry is the latest (non-superseded) version in its chain.
385
+ *
386
+ * An entry is "latest" when its `invalid_at` column IS NULL. This is the same
387
+ * gate used by all query paths to filter out stale entries.
388
+ *
389
+ * @param projectRoot - Absolute path to the CLEO project root.
390
+ * @param entryId - The entry to check.
391
+ * @returns true when the entry is valid; false when superseded or not found.
392
+ */
393
+ export async function isLatest(projectRoot, entryId) {
394
+ await getBrainDb(projectRoot);
395
+ const nativeDb = getBrainNativeDb();
396
+ if (!nativeDb)
397
+ return false;
398
+ for (const tc of SUPERSEDABLE_TABLES) {
399
+ const row = typedGet(nativeDb.prepare(`SELECT invalid_at FROM ${tc.table} WHERE id = ? LIMIT 1`), entryId);
400
+ if (row !== undefined) {
401
+ return row.invalid_at === null;
402
+ }
403
+ }
404
+ return false;
405
+ }
406
+ //# sourceMappingURL=temporal-supersession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal-supersession.js","sourceRoot":"","sources":["../../src/memory/temporal-supersession.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/core",
3
- "version": "2026.4.37",
3
+ "version": "2026.4.38",
4
4
  "description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -48,12 +48,12 @@
48
48
  "write-file-atomic": "^7.0.1",
49
49
  "yaml": "^2.8.3",
50
50
  "zod": "^4.3.6",
51
- "@cleocode/adapters": "2026.4.37",
51
+ "@cleocode/caamp": "2026.4.38",
52
+ "@cleocode/adapters": "2026.4.38",
53
+ "@cleocode/contracts": "2026.4.38",
54
+ "@cleocode/lafs": "2026.4.38",
52
55
  "@cleocode/agents": "2026.4.36",
53
- "@cleocode/contracts": "2026.4.37",
54
- "@cleocode/caamp": "2026.4.37",
55
- "@cleocode/lafs": "2026.4.37",
56
- "@cleocode/nexus": "2026.4.37",
56
+ "@cleocode/nexus": "2026.4.38",
57
57
  "@cleocode/skills": "2026.4.36"
58
58
  },
59
59
  "engines": {