sensorium-mcp 3.0.29 → 3.0.31
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/data/memory/reflection.d.ts.map +1 -1
- package/dist/data/memory/reflection.js +43 -19
- package/dist/data/memory/reflection.js.map +1 -1
- package/dist/data/memory/semantic.d.ts +1 -0
- package/dist/data/memory/semantic.d.ts.map +1 -1
- package/dist/data/memory/semantic.js +1 -0
- package/dist/data/memory/semantic.js.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/services/consolidation.service.d.ts.map +1 -1
- package/dist/services/consolidation.service.js +180 -139
- package/dist/services/consolidation.service.js.map +1 -1
- package/dist/services/self-update.service.d.ts +36 -0
- package/dist/services/self-update.service.d.ts.map +1 -0
- package/dist/services/self-update.service.js +300 -0
- package/dist/services/self-update.service.js.map +1 -0
- package/dist/tools/start-session-tool.js +1 -1
- package/dist/tools/start-session-tool.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getUnconsolidatedEpisodes, markConsolidated } from "../data/memory/episodes.js";
|
|
2
|
-
import { saveSemanticNote,
|
|
2
|
+
import { saveSemanticNote, searchByEmbedding, saveNoteEmbedding, supersedeNote, updateSemanticNote, } from "../data/memory/semantic.js";
|
|
3
3
|
import { cleanupConsolidationHousekeeping, getCandidateNotesForPruning, getUnconsolidatedThreadIds, getActiveNoteContent, hasActiveNote, expireNote, logConsolidation, mergeDuplicateNote, sweepOrphanedNotes, sweepOrphanedEmbeddings, } from "../data/memory/consolidation.js";
|
|
4
4
|
import { resolveKnowledgeThreadId } from "../config.js";
|
|
5
5
|
import { passesStructuralGate, passesQualityGate, parseReflectionFields } from "../data/memory/reflection.js";
|
|
@@ -26,54 +26,12 @@ function extractEpisodeText(episodes) {
|
|
|
26
26
|
})
|
|
27
27
|
.join("\n");
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
try {
|
|
31
|
-
// Use embedding search to find semantically related notes (not just keyword match)
|
|
32
|
-
const embedding = await generateEmbedding(episodesText.slice(0, 8000), apiKey);
|
|
33
|
-
const related = searchByEmbedding(db, embedding, {
|
|
34
|
-
maxResults: 30,
|
|
35
|
-
minSimilarity: 0.3,
|
|
36
|
-
skipAccessTracking: true,
|
|
37
|
-
threadId,
|
|
38
|
-
});
|
|
39
|
-
if (related.length === 0)
|
|
40
|
-
return "";
|
|
41
|
-
return `\n\nExisting memory notes (check for contradictions — supersede any that are outdated):
|
|
42
|
-
${related.map((note) => `[${note.noteId}] (${note.type}, conf: ${note.confidence}) ${note.content}`).join("\n")}`;
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
log.warn(`[consolidation] Embedding search for existing notes failed: ${errorMessage(err)}`);
|
|
46
|
-
// Fallback to keyword search
|
|
47
|
-
try {
|
|
48
|
-
const topKeywords = episodesText
|
|
49
|
-
.toLowerCase().replace(/[^a-z0-9\s]/g, " ").split(/\s+/)
|
|
50
|
-
.filter((w) => w.length > 3)
|
|
51
|
-
.slice(0, 12);
|
|
52
|
-
if (topKeywords.length === 0)
|
|
53
|
-
return "";
|
|
54
|
-
const ranked = searchSemanticNotesRanked(db, topKeywords.join(" "), {
|
|
55
|
-
maxResults: 15,
|
|
56
|
-
skipAccessTracking: true,
|
|
57
|
-
minMatchRatio: 0.2,
|
|
58
|
-
threadId,
|
|
59
|
-
});
|
|
60
|
-
if (ranked.length === 0)
|
|
61
|
-
return "";
|
|
62
|
-
return `\n\nExisting memory notes (check for contradictions — supersede any that are outdated):
|
|
63
|
-
${ranked.map((note) => `[${note.noteId}] (${note.type}, conf: ${note.confidence}) ${note.content}`).join("\n")}`;
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
return "";
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
async function buildConsolidationPrompt(db, episodes, apiKey, threadId) {
|
|
29
|
+
function buildExtractionPrompt(episodes) {
|
|
71
30
|
const episodesText = extractEpisodeText(episodes);
|
|
72
|
-
const existingNotesSection = await buildExistingNotesSection(db, episodesText, apiKey, threadId);
|
|
73
31
|
return `You are a memory consolidation agent. Extract ONLY actionable, durable knowledge from these episodes. Quality over quantity — fewer, better notes.
|
|
74
32
|
|
|
75
33
|
Episodes:
|
|
76
|
-
${episodesText}
|
|
34
|
+
${episodesText}
|
|
77
35
|
|
|
78
36
|
Output a JSON object with:
|
|
79
37
|
{
|
|
@@ -84,20 +42,7 @@ Output a JSON object with:
|
|
|
84
42
|
"keywords": ["keyword1", "keyword2", "keyword3"],
|
|
85
43
|
"confidence": 0.0-1.0,
|
|
86
44
|
"priority": 0 | 1 | 2,
|
|
87
|
-
"quality_score": 1-5
|
|
88
|
-
"linked_notes": ["sn_xxx"],
|
|
89
|
-
"link_reasons": ["brief causal relationship explanation"]
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"supersede": [
|
|
93
|
-
{
|
|
94
|
-
"oldNoteId": "sn_xxx",
|
|
95
|
-
"reason": "Why the old note is outdated/contradicted",
|
|
96
|
-
"newContent": "Updated version of the knowledge",
|
|
97
|
-
"type": "fact",
|
|
98
|
-
"keywords": ["keyword1", "keyword2"],
|
|
99
|
-
"confidence": 0.8,
|
|
100
|
-
"priority": 0 | 1 | 2
|
|
45
|
+
"quality_score": 1-5
|
|
101
46
|
}
|
|
102
47
|
]
|
|
103
48
|
}
|
|
@@ -112,15 +57,9 @@ BANNED content — do NOT extract:
|
|
|
112
57
|
- Self-assessments or meta-observations about the agent's own behavior ("I tend to...", "I regularly...")
|
|
113
58
|
- Passive observations that don't inform decisions ("a discussion occurred", "code was reviewed")
|
|
114
59
|
- Transient status ("currently working on X", "PR is open", "tests passing")
|
|
115
|
-
- Duplicate information already captured in an existing note (check the existing notes section carefully)
|
|
116
60
|
|
|
117
61
|
EXCEPTION: If the operator explicitly corrected the agent's behavior, extract that correction as a preference.
|
|
118
62
|
|
|
119
|
-
SUPERSEDE — check existing notes for contradictions:
|
|
120
|
-
- CRITICAL: If a new episode contradicts or updates an existing note, add a "supersede" entry
|
|
121
|
-
- Common triggers: decisions changed, projects completed/abandoned, preferences updated, tools/tech switched, version numbers changed
|
|
122
|
-
- The new episodes represent MORE RECENT information
|
|
123
|
-
|
|
124
63
|
TYPE RULES:
|
|
125
64
|
- fact: Durable knowledge about the project, codebase, architecture, people, or external world
|
|
126
65
|
- preference: Operator's explicit or strongly implied preference for how things should be done
|
|
@@ -145,16 +84,59 @@ CONTENT QUALITY:
|
|
|
145
84
|
- Capture WHY (motivation/context), not just WHAT. Include outcome if known
|
|
146
85
|
- If neither WHY nor outcome is available, the note is probably not worth extracting
|
|
147
86
|
- Include dates when known. Write "On April 15, operator requested X" not just "operator requested X." If the episode contains timestamps or date references, include them in the note content.
|
|
148
|
-
- Return {"notes": []
|
|
87
|
+
- Return {"notes": []} if nothing actionable
|
|
149
88
|
|
|
150
89
|
SPECIFICITY GATE — apply to every note before including it:
|
|
151
90
|
- Every note MUST contain at least one specific anchor: a file name, commit hash, person name, date, or concrete number. If you cannot name something specific, do not create the note.
|
|
152
|
-
- Do NOT create notes that merely say "X was completed" or "Y was done." If something was completed, state WHAT specifically was done — which files changed, what bug was fixed, what the outcome was. Headlines without substance are useless
|
|
91
|
+
- Do NOT create notes that merely say "X was completed" or "Y was done." If something was completed, state WHAT specifically was done — which files changed, what bug was fixed, what the outcome was. Headlines without substance are useless.`;
|
|
92
|
+
}
|
|
93
|
+
function buildSupersedePrompt(batch) {
|
|
94
|
+
const notesSection = batch
|
|
95
|
+
.map((item) => `[${item.noteIndex}] New: "${item.content}"\n` +
|
|
96
|
+
(item.candidates.length > 0
|
|
97
|
+
? ` Candidates:\n${item.candidates.map((c) => ` [${c.noteId}] (${c.type}, conf: ${c.confidence}) ${c.content}`).join("\n")}`
|
|
98
|
+
: ` Candidates: none`))
|
|
99
|
+
.join("\n\n");
|
|
100
|
+
return `You are a contradiction detector for a memory system. For each new note, check if it contradicts or replaces any of its candidate existing notes.
|
|
101
|
+
|
|
102
|
+
${notesSection}
|
|
103
|
+
|
|
104
|
+
Output a JSON object:
|
|
105
|
+
{
|
|
106
|
+
"results": [
|
|
107
|
+
{ "noteIndex": 0, "supersede": true, "targetNoteId": "sn_xxx", "reason": "Why the candidate is now outdated" },
|
|
108
|
+
{ "noteIndex": 1, "supersede": false }
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
Rules:
|
|
113
|
+
- supersede=true ONLY if the new note explicitly contradicts, updates, or replaces a candidate (e.g., newer value, completed/abandoned project, changed preference, updated version)
|
|
114
|
+
- The new note represents MORE RECENT information than the candidates
|
|
115
|
+
- supersede=false if the new note adds different information without invalidating any candidate
|
|
116
|
+
- If no candidates are listed for a note, output supersede=false
|
|
117
|
+
- Output exactly one result per note index, in ascending order
|
|
118
|
+
- Only one candidate can be targeted per new note (the most directly contradicted one)`;
|
|
119
|
+
}
|
|
120
|
+
function buildLinkingPrompt(newNote, neighbors) {
|
|
121
|
+
const neighborsSection = neighbors.map((n) => `[${n.noteId}] (${n.type}) ${n.content}`).join("\n");
|
|
122
|
+
return `You are a causal link detector for a memory system. Determine if any of these existing notes are causally related to the new note.
|
|
123
|
+
|
|
124
|
+
New note: "${newNote.content}"
|
|
125
|
+
|
|
126
|
+
Existing notes to compare:
|
|
127
|
+
${neighborsSection}
|
|
128
|
+
|
|
129
|
+
Output a JSON object:
|
|
130
|
+
{
|
|
131
|
+
"links": [
|
|
132
|
+
{ "noteId": "sn_xxx", "reason": "Brief causal relationship — one caused the other, or they are part of the same chain" }
|
|
133
|
+
]
|
|
134
|
+
}
|
|
153
135
|
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
- If
|
|
136
|
+
Rules:
|
|
137
|
+
- Only include notes where there is a CLEAR causal or sequential relationship (one caused the other, one is a consequence of the other, or they are part of the same decision chain)
|
|
138
|
+
- Do NOT link notes that are merely on the same topic or share keywords — the relationship must be directional and causal
|
|
139
|
+
- If no causal relationships exist, output { "links": [] }`;
|
|
158
140
|
}
|
|
159
141
|
async function checkConsolidationDuplicate(db, content, apiKey, threadId) {
|
|
160
142
|
try {
|
|
@@ -294,19 +276,19 @@ export async function runIntelligentConsolidation(db, threadId, options) {
|
|
|
294
276
|
const apiKey = process.env.OPENAI_API_KEY;
|
|
295
277
|
if (!apiKey)
|
|
296
278
|
throw new Error("OPENAI_API_KEY not set");
|
|
297
|
-
|
|
298
|
-
|
|
279
|
+
// ── Step 1: Extract knowledge from episodes ───────────────────────────
|
|
280
|
+
const extractMessages = [
|
|
281
|
+
{ role: "system", content: buildExtractionPrompt(episodes) },
|
|
299
282
|
{ role: "user", content: "Extract knowledge from the episodes above." },
|
|
300
283
|
];
|
|
301
|
-
const
|
|
284
|
+
const extractRaw = await chatCompletion(extractMessages, apiKey, {
|
|
302
285
|
model: process.env.CONSOLIDATION_MODEL ?? "gpt-4o",
|
|
303
286
|
maxTokens: 4096,
|
|
304
287
|
responseFormat: { type: "json_object" },
|
|
305
288
|
timeoutMs: 60_000,
|
|
306
289
|
});
|
|
307
|
-
const
|
|
308
|
-
const extractedNotes =
|
|
309
|
-
const supersedeActions = parsed.supersede ?? [];
|
|
290
|
+
const extractParsed = repairAndParseJSON(extractRaw);
|
|
291
|
+
const extractedNotes = extractParsed.notes ?? [];
|
|
310
292
|
const episodeIds = episodes.map((episode) => episode.episodeId);
|
|
311
293
|
if (!dryRun) {
|
|
312
294
|
const noteWrites = [];
|
|
@@ -321,14 +303,6 @@ export async function runIntelligentConsolidation(db, threadId, options) {
|
|
|
321
303
|
log.debug(`[consolidation] Dedup: skipping note similar to ${dedup.matchId} at ${dedup.similarity?.toFixed(3)}`);
|
|
322
304
|
continue;
|
|
323
305
|
}
|
|
324
|
-
const rawLinked = Array.isArray(note.linked_notes) ? note.linked_notes.filter((id) => typeof id === "string") : [];
|
|
325
|
-
const rawReasons = {};
|
|
326
|
-
if (Array.isArray(note.link_reasons)) {
|
|
327
|
-
rawLinked.forEach((id, i) => {
|
|
328
|
-
if (typeof note.link_reasons[i] === "string")
|
|
329
|
-
rawReasons[id] = note.link_reasons[i];
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
306
|
noteWrites.push({
|
|
333
307
|
type: noteType,
|
|
334
308
|
content: note.content,
|
|
@@ -337,70 +311,101 @@ export async function runIntelligentConsolidation(db, threadId, options) {
|
|
|
337
311
|
priority: Math.max(0, Math.min(2, note.priority ?? 0)),
|
|
338
312
|
qualityScore: typeof note.quality_score === "number" ? note.quality_score : null,
|
|
339
313
|
embedding: dedup.embedding,
|
|
340
|
-
linkedNotes: rawLinked,
|
|
341
|
-
linkReasons: rawReasons,
|
|
342
314
|
});
|
|
343
315
|
}
|
|
344
|
-
//
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
if (!
|
|
348
|
-
|
|
349
|
-
const
|
|
350
|
-
|
|
316
|
+
// ── Step 2: Supersede check (batched LLM calls) ───────────────────
|
|
317
|
+
const SUPERSEDE_BATCH_SIZE = 4;
|
|
318
|
+
const notesWithCandidates = noteWrites.map((nw) => {
|
|
319
|
+
if (!nw.embedding)
|
|
320
|
+
return { nw, candidates: [] };
|
|
321
|
+
const similar = searchByEmbedding(db, nw.embedding, {
|
|
322
|
+
maxResults: 5,
|
|
323
|
+
minSimilarity: 0.4,
|
|
324
|
+
skipAccessTracking: true,
|
|
325
|
+
threadId: knowledgeThreadId,
|
|
326
|
+
});
|
|
327
|
+
return { nw, candidates: similar };
|
|
328
|
+
});
|
|
329
|
+
const toCheck = notesWithCandidates.filter((x) => x.candidates.length > 0);
|
|
330
|
+
for (let i = 0; i < toCheck.length; i += SUPERSEDE_BATCH_SIZE) {
|
|
331
|
+
const chunk = toCheck.slice(i, i + SUPERSEDE_BATCH_SIZE);
|
|
332
|
+
const batch = chunk.map((item, idx) => ({
|
|
333
|
+
noteIndex: idx,
|
|
334
|
+
content: item.nw.content,
|
|
335
|
+
candidates: item.candidates.map((c) => ({
|
|
336
|
+
noteId: c.noteId,
|
|
337
|
+
type: c.type,
|
|
338
|
+
confidence: c.confidence,
|
|
339
|
+
content: c.content,
|
|
340
|
+
})),
|
|
341
|
+
}));
|
|
351
342
|
try {
|
|
352
|
-
|
|
343
|
+
const supersedeRaw = await chatCompletion([
|
|
344
|
+
{ role: "system", content: buildSupersedePrompt(batch) },
|
|
345
|
+
{ role: "user", content: "Check for contradictions." },
|
|
346
|
+
], apiKey, {
|
|
347
|
+
model: process.env.CONSOLIDATION_MODEL ?? "gpt-4o",
|
|
348
|
+
maxTokens: 1024,
|
|
349
|
+
responseFormat: { type: "json_object" },
|
|
350
|
+
timeoutMs: 30_000,
|
|
351
|
+
});
|
|
352
|
+
const supersedeParsed = repairAndParseJSON(supersedeRaw);
|
|
353
|
+
for (const result of supersedeParsed.results ?? []) {
|
|
354
|
+
if (result.supersede && result.targetNoteId && typeof result.noteIndex === "number") {
|
|
355
|
+
const item = chunk[result.noteIndex];
|
|
356
|
+
if (!item)
|
|
357
|
+
continue;
|
|
358
|
+
// Guard: only allow IDs the LLM was actually shown
|
|
359
|
+
const candidateIds = new Set(item.candidates.map((c) => c.noteId));
|
|
360
|
+
if (!candidateIds.has(result.targetNoteId)) {
|
|
361
|
+
log.warn(`[consolidation] Supersede rejected: ${result.targetNoteId} was not in candidate set`);
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
item.nw.supersede = { targetNoteId: result.targetNoteId, reason: result.reason ?? "" };
|
|
365
|
+
}
|
|
366
|
+
}
|
|
353
367
|
}
|
|
354
|
-
catch {
|
|
355
|
-
|
|
368
|
+
catch (err) {
|
|
369
|
+
log.warn(`[consolidation] Supersede batch failed: ${errorMessage(err)}`);
|
|
356
370
|
}
|
|
357
|
-
supersedeWrites.push({ action, embedding, noteType });
|
|
358
371
|
}
|
|
359
|
-
//
|
|
372
|
+
// ── Transaction: all DB writes ────────────────────────────────────
|
|
373
|
+
const savedNotes = [];
|
|
360
374
|
let supersededCount = 0;
|
|
361
375
|
db.transaction(() => {
|
|
362
|
-
for (const nw of
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
linkedNotes: nw.linkedNotes.length > 0 ? nw.linkedNotes : undefined,
|
|
373
|
-
linkReasons: Object.keys(nw.linkReasons).length > 0 ? nw.linkReasons : undefined,
|
|
374
|
-
});
|
|
375
|
-
if (nw.embedding) {
|
|
376
|
-
saveNoteEmbedding(db, noteId, nw.embedding);
|
|
377
|
-
}
|
|
378
|
-
notesCreated++;
|
|
379
|
-
details.push(`[${nw.type}] ${nw.content}`);
|
|
380
|
-
}
|
|
381
|
-
for (const { action, noteType, embedding } of supersedeWrites) {
|
|
382
|
-
if (!hasActiveNote(db, action.oldNoteId)) {
|
|
383
|
-
details.push(`[skip-supersede] ${action.oldNoteId} not found or already superseded`);
|
|
384
|
-
continue;
|
|
385
|
-
}
|
|
386
|
-
try {
|
|
387
|
-
const newId = supersedeNote(db, action.oldNoteId, {
|
|
388
|
-
type: noteType,
|
|
389
|
-
content: action.newContent,
|
|
390
|
-
keywords: Array.isArray(action.keywords) ? action.keywords : [],
|
|
391
|
-
confidence: Math.max(0, Math.min(1, action.confidence ?? 0.8)),
|
|
392
|
-
priority: Math.max(0, Math.min(2, action.priority ?? 0)),
|
|
376
|
+
for (const { nw } of notesWithCandidates) {
|
|
377
|
+
let noteId;
|
|
378
|
+
if (nw.supersede && hasActiveNote(db, nw.supersede.targetNoteId)) {
|
|
379
|
+
noteId = supersedeNote(db, nw.supersede.targetNoteId, {
|
|
380
|
+
type: nw.type,
|
|
381
|
+
content: nw.content,
|
|
382
|
+
keywords: nw.keywords,
|
|
383
|
+
confidence: nw.confidence,
|
|
384
|
+
priority: nw.priority,
|
|
385
|
+
qualityScore: nw.qualityScore,
|
|
393
386
|
sourceEpisodes: episodeIds,
|
|
394
387
|
});
|
|
395
|
-
if (embedding) {
|
|
396
|
-
saveNoteEmbedding(db, newId, embedding);
|
|
397
|
-
}
|
|
398
388
|
supersededCount++;
|
|
399
|
-
details.push(`[supersede] ${
|
|
389
|
+
details.push(`[supersede] ${nw.supersede.targetNoteId} → ${noteId}: ${nw.supersede.reason}`);
|
|
400
390
|
}
|
|
401
|
-
|
|
402
|
-
|
|
391
|
+
else {
|
|
392
|
+
noteId = saveSemanticNote(db, {
|
|
393
|
+
type: nw.type,
|
|
394
|
+
content: nw.content,
|
|
395
|
+
keywords: nw.keywords,
|
|
396
|
+
confidence: nw.confidence,
|
|
397
|
+
priority: nw.priority,
|
|
398
|
+
qualityScore: nw.qualityScore,
|
|
399
|
+
threadId: knowledgeThreadId,
|
|
400
|
+
sourceEpisodes: episodeIds,
|
|
401
|
+
});
|
|
402
|
+
notesCreated++;
|
|
403
|
+
details.push(`[${nw.type}] ${nw.content}`);
|
|
404
|
+
}
|
|
405
|
+
if (nw.embedding) {
|
|
406
|
+
saveNoteEmbedding(db, noteId, nw.embedding);
|
|
403
407
|
}
|
|
408
|
+
savedNotes.push({ noteId, embedding: nw.embedding, content: nw.content });
|
|
404
409
|
}
|
|
405
410
|
markConsolidated(db, episodeIds);
|
|
406
411
|
logConsolidation(db, {
|
|
@@ -412,15 +417,51 @@ export async function runIntelligentConsolidation(db, threadId, options) {
|
|
|
412
417
|
if (supersededCount > 0) {
|
|
413
418
|
log.info(`[memory] Contradiction resolution: superseded ${supersededCount} outdated note(s)`);
|
|
414
419
|
}
|
|
420
|
+
// ── Step 3: Linking enrichment (post-save, optional) ──────────────
|
|
421
|
+
for (const saved of savedNotes) {
|
|
422
|
+
if (!saved.embedding)
|
|
423
|
+
continue;
|
|
424
|
+
try {
|
|
425
|
+
const neighbors = searchByEmbedding(db, saved.embedding, {
|
|
426
|
+
maxResults: 6,
|
|
427
|
+
minSimilarity: 0.4,
|
|
428
|
+
skipAccessTracking: true,
|
|
429
|
+
threadId: knowledgeThreadId,
|
|
430
|
+
}).filter((n) => n.noteId !== saved.noteId).slice(0, 5);
|
|
431
|
+
if (neighbors.length === 0)
|
|
432
|
+
continue;
|
|
433
|
+
const linkRaw = await chatCompletion([
|
|
434
|
+
{
|
|
435
|
+
role: "system",
|
|
436
|
+
content: buildLinkingPrompt({ noteId: saved.noteId, content: saved.content }, neighbors.map((n) => ({ noteId: n.noteId, type: n.type, content: n.content }))),
|
|
437
|
+
},
|
|
438
|
+
{ role: "user", content: "Identify causal links." },
|
|
439
|
+
], apiKey, {
|
|
440
|
+
model: process.env.CONSOLIDATION_MODEL ?? "gpt-4o",
|
|
441
|
+
maxTokens: 512,
|
|
442
|
+
responseFormat: { type: "json_object" },
|
|
443
|
+
timeoutMs: 20_000,
|
|
444
|
+
});
|
|
445
|
+
const linkParsed = repairAndParseJSON(linkRaw);
|
|
446
|
+
const links = (linkParsed.links ?? []).filter((l) => typeof l.noteId === "string" && typeof l.reason === "string");
|
|
447
|
+
if (links.length > 0) {
|
|
448
|
+
const linkedNotes = links.map((l) => l.noteId);
|
|
449
|
+
const linkReasons = {};
|
|
450
|
+
for (const l of links)
|
|
451
|
+
linkReasons[l.noteId] = l.reason;
|
|
452
|
+
updateSemanticNote(db, saved.noteId, { linkedNotes, linkReasons });
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
log.warn(`[consolidation] Linking step failed for ${saved.noteId}: ${errorMessage(err)}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
415
459
|
}
|
|
416
460
|
else {
|
|
417
461
|
for (const note of extractedNotes) {
|
|
418
462
|
details.push(`[dry-run] [${note.type}] ${note.content}`);
|
|
419
463
|
notesCreated++;
|
|
420
464
|
}
|
|
421
|
-
for (const action of supersedeActions) {
|
|
422
|
-
details.push(`[dry-run] [supersede] ${action.oldNoteId} → ${action.reason}`);
|
|
423
|
-
}
|
|
424
465
|
}
|
|
425
466
|
}
|
|
426
467
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consolidation.service.js","sourceRoot":"","sources":["../../src/services/consolidation.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consolidation.service.js","sourceRoot":"","sources":["../../src/services/consolidation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-update service — polls npm registry for new versions of sensorium-mcp
|
|
3
|
+
* and performs a graceful self-spawn update when a newer version is found.
|
|
4
|
+
*
|
|
5
|
+
* Entry point: startSelfUpdatePoller({ pkgVersion, httpPort })
|
|
6
|
+
* Call once after the HTTP server is listening (HTTP mode only).
|
|
7
|
+
*
|
|
8
|
+
* Environment variables:
|
|
9
|
+
* SELF_UPDATE_ENABLED "false" to disable (default: enabled)
|
|
10
|
+
* SELF_UPDATE_POLL_INTERVAL_MS Registry check interval (default: 60000)
|
|
11
|
+
* SELF_UPDATE_MIN_UPTIME_MS Min uptime before first update (default: 600000)
|
|
12
|
+
* SELF_UPDATE_GRACE_MS Grace period for agents to observe flag (default: 30000)
|
|
13
|
+
* MCP_START_COMMAND Replacement spawn command (default: npx -y sensorium-mcp@latest --prefer-online)
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Fetch the latest published version of sensorium-mcp from the npm registry.
|
|
17
|
+
* Returns null on any error so the caller can silently skip this poll cycle.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getRemoteVersion(): Promise<string | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Run one check cycle: compare remote version to current and trigger update
|
|
22
|
+
* if a newer version is available.
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkForUpdate(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Start the self-update polling loop.
|
|
27
|
+
* Call once after the HTTP server is listening (HTTP mode only).
|
|
28
|
+
*
|
|
29
|
+
* @param config.pkgVersion Current package version string (e.g. "3.0.30").
|
|
30
|
+
* @param config.httpPort HTTP port the server is bound to (for health polling).
|
|
31
|
+
*/
|
|
32
|
+
export declare function startSelfUpdatePoller(config: {
|
|
33
|
+
pkgVersion: string;
|
|
34
|
+
httpPort: number;
|
|
35
|
+
}): void;
|
|
36
|
+
//# sourceMappingURL=self-update.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-update.service.d.ts","sourceRoot":"","sources":["../../src/services/self-update.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAkGH;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoB/D;AA8HD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BpD;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB5F"}
|