sensorium-mcp 2.16.71 → 2.16.72

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.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * All memory_* tools are dispatched through `handleMemoryTool`.
5
5
  */
6
- import { findPotentialConflicts, forgetMemory, getMemoryStatus, getNotesWithoutEmbeddings, getRecentEpisodes, getTopicIndex, runIntelligentConsolidation, saveNoteEmbedding, saveSemanticNote, searchByEmbedding, searchProcedures, searchSemanticNotes, supersedeNote, updateProcedure, updateSemanticNote, } from "../memory.js";
6
+ import { findPotentialConflicts, forgetMemory, getMemoryStatus, getNotesWithoutEmbeddings, getRecentEpisodes, getSemanticNoteById, getTopicIndex, runIntelligentConsolidation, saveNoteEmbedding, saveSemanticNote, searchByEmbedding, searchProcedures, searchSemanticNotes, supersedeNote, updateProcedure, updateSemanticNote, } from "../memory.js";
7
7
  import { generateEmbedding } from "../openai.js";
8
8
  import { log } from "../logger.js";
9
9
  import { errorMessage } from "../utils.js";
@@ -31,280 +31,279 @@ export async function backfillEmbeddings(db) {
31
31
  }
32
32
  }
33
33
  // ---------------------------------------------------------------------------
34
- // Main dispatcher
34
+ // Named case handlers
35
35
  // ---------------------------------------------------------------------------
36
- export async function handleMemoryTool(name, args, ctx) {
37
- const { resolveThreadId, getShortReminder, getMemoryDb, errorResult } = ctx;
38
- switch (name) {
39
- // ── memory_search ─────────────────────────────────────────────────────
40
- case "memory_search": {
41
- const threadId = resolveThreadId(args);
42
- const query = String(args.query ?? "");
43
- if (!query) {
44
- return errorResult("Error: query is required." + getShortReminder(threadId));
45
- }
46
- try {
47
- const db = getMemoryDb();
48
- const layers = Array.isArray(args.layers) ? args.layers.map(String) : typeof args.layers === 'string' ? [args.layers] : ["episodic", "semantic", "procedural"];
49
- const types = Array.isArray(args.types) ? args.types.map(String) : typeof args.types === 'string' ? [args.types] : undefined;
50
- const results = [];
51
- if (layers.includes("semantic")) {
52
- // Try embedding-based search first, fall back to keyword search
53
- const apiKey = process.env.OPENAI_API_KEY;
54
- let embeddingSearchDone = false;
55
- if (apiKey) {
56
- try {
57
- const queryEmb = await generateEmbedding(query, apiKey);
58
- const embNotes = searchByEmbedding(db, queryEmb, { maxResults: 10, minSimilarity: 0.25 });
59
- if (embNotes.length > 0) {
60
- results.push("### Semantic Memory (embedding search)");
61
- for (const n of embNotes) {
62
- results.push(`- **[${n.type}]** ${n.content} _(conf: ${n.confidence}, sim: ${n.similarity.toFixed(2)}, id: ${n.noteId})_`);
63
- }
64
- embeddingSearchDone = true;
65
- }
66
- }
67
- catch (embErr) {
68
- log.warn(`[memory] Embedding search failed in memory_search, falling back to keyword: ${embErr instanceof Error ? embErr.message : String(embErr)}`);
69
- }
70
- }
71
- if (!embeddingSearchDone) {
72
- const notes = searchSemanticNotes(db, query, { types, maxResults: 10 });
73
- if (notes.length > 0) {
74
- results.push("### Semantic Memory");
75
- for (const n of notes) {
76
- results.push(`- **[${n.type}]** ${n.content} _(conf: ${n.confidence}, id: ${n.noteId})_`);
77
- }
36
+ async function handleMemorySearch(db, args, apiKey, threadId, reminder, errorResult) {
37
+ const query = String(args.query ?? "");
38
+ if (!query) {
39
+ return errorResult("Error: query is required." + reminder);
40
+ }
41
+ try {
42
+ const layers = Array.isArray(args.layers) ? args.layers.map(String) : typeof args.layers === 'string' ? [args.layers] : ["episodic", "semantic", "procedural"];
43
+ const types = Array.isArray(args.types) ? args.types.map(String) : typeof args.types === 'string' ? [args.types] : undefined;
44
+ const results = [];
45
+ if (layers.includes("semantic")) {
46
+ let embeddingSearchDone = false;
47
+ if (apiKey) {
48
+ try {
49
+ const queryEmb = await generateEmbedding(query, apiKey);
50
+ const embNotes = searchByEmbedding(db, queryEmb, { maxResults: 10, minSimilarity: 0.25 });
51
+ if (embNotes.length > 0) {
52
+ results.push("### Semantic Memory (embedding search)");
53
+ for (const n of embNotes) {
54
+ results.push(`- **[${n.type}]** ${n.content} _(conf: ${n.confidence}, sim: ${n.similarity.toFixed(2)}, id: ${n.noteId})_`);
78
55
  }
56
+ embeddingSearchDone = true;
79
57
  }
80
58
  }
81
- if (layers.includes("procedural")) {
82
- const procs = searchProcedures(db, query, 5);
83
- if (procs.length > 0) {
84
- results.push("### Procedural Memory");
85
- for (const p of procs) {
86
- results.push(`- **${p.name}** (${p.type}): ${p.description} _(success: ${Math.round(p.successRate * 100)}%, id: ${p.procedureId})_`);
87
- }
88
- }
59
+ catch (embErr) {
60
+ log.warn(`[memory] Embedding search failed in memory_search, falling back to keyword: ${embErr instanceof Error ? embErr.message : String(embErr)}`);
89
61
  }
90
- if (layers.includes("episodic") && threadId !== undefined) {
91
- const episodes = getRecentEpisodes(db, threadId, 10);
92
- const filtered = episodes.filter(ep => {
93
- const content = JSON.stringify(ep.content).toLowerCase();
94
- return query.toLowerCase().split(/\s+/).some(word => content.includes(word));
95
- });
96
- if (filtered.length > 0) {
97
- results.push("### Episodic Memory");
98
- for (const ep of filtered.slice(0, 5)) {
99
- const summary = typeof ep.content === "object" && ep.content !== null
100
- ? ep.content.text ?? JSON.stringify(ep.content).slice(0, 200)
101
- : String(ep.content).slice(0, 200);
102
- results.push(`- [${ep.modality}] ${summary} _(${ep.timestamp}, id: ${ep.episodeId})_`);
103
- }
62
+ }
63
+ if (!embeddingSearchDone) {
64
+ const notes = searchSemanticNotes(db, query, { types, maxResults: 10 });
65
+ if (notes.length > 0) {
66
+ results.push("### Semantic Memory");
67
+ for (const n of notes) {
68
+ results.push(`- **[${n.type}]** ${n.content} _(conf: ${n.confidence}, id: ${n.noteId})_`);
104
69
  }
105
70
  }
106
- const text = results.length > 0
107
- ? results.join("\n")
108
- : `No memories found for "${query}".`;
109
- return { content: [{ type: "text", text: text + getShortReminder(threadId) }] };
110
- }
111
- catch (err) {
112
- return errorResult(`Memory search error: ${errorMessage(err)}` + getShortReminder(threadId));
113
71
  }
114
72
  }
115
- // ── memory_save ───────────────────────────────────────────────────────
116
- case "memory_save": {
117
- const threadId = resolveThreadId(args);
118
- const VALID_TYPES = ["fact", "preference", "pattern", "entity", "relationship"];
119
- const noteType = String(args.type ?? "fact");
120
- if (!VALID_TYPES.includes(noteType)) {
121
- return errorResult(`Invalid type "${noteType}". Must be one of: ${VALID_TYPES.join(", ")}`);
122
- }
123
- try {
124
- const db = getMemoryDb();
125
- const content = String(args.content ?? "").trim();
126
- if (!content) {
127
- return errorResult("Error: 'content' is required and cannot be empty.");
128
- }
129
- const noteId = saveSemanticNote(db, {
130
- type: noteType,
131
- content,
132
- keywords: Array.isArray(args.keywords) ? args.keywords.map(String) : typeof args.keywords === 'string' ? [args.keywords] : [],
133
- confidence: typeof args.confidence === "number" ? args.confidence : 0.8,
134
- priority: typeof args.priority === "number" ? args.priority : 0,
135
- threadId: threadId ?? null,
136
- });
137
- // Fire-and-forget embedding generation
138
- const apiKey = process.env.OPENAI_API_KEY;
139
- if (apiKey) {
140
- void generateEmbedding(content, apiKey).then(emb => {
141
- saveNoteEmbedding(getMemoryDb(), noteId, emb);
142
- }).catch(err => {
143
- log.error(`[memory] Embedding failed for ${noteId}: ${err instanceof Error ? err.message : String(err)}`);
144
- });
145
- }
146
- // Check for potential conflicts with existing notes
147
- let conflictWarning = "";
148
- try {
149
- const conflicts = findPotentialConflicts(db, noteId);
150
- if (conflicts.length > 0) {
151
- const ids = conflicts.map(c => c.noteId).join(", ");
152
- conflictWarning = `\n⚠️ Potential conflicts detected with: ${ids}. Consider reviewing and superseding stale notes.`;
153
- }
73
+ if (layers.includes("procedural")) {
74
+ const procs = searchProcedures(db, query, 5);
75
+ if (procs.length > 0) {
76
+ results.push("### Procedural Memory");
77
+ for (const p of procs) {
78
+ results.push(`- **${p.name}** (${p.type}): ${p.description} _(success: ${Math.round(p.successRate * 100)}%, id: ${p.procedureId})_`);
154
79
  }
155
- catch (err) {
156
- log.warn(`[memory] Conflict detection failed: ${errorMessage(err)}`);
80
+ }
81
+ }
82
+ if (layers.includes("episodic") && threadId !== undefined) {
83
+ const episodes = getRecentEpisodes(db, threadId, 10);
84
+ const filtered = episodes.filter(ep => {
85
+ const content = JSON.stringify(ep.content).toLowerCase();
86
+ return query.toLowerCase().split(/\s+/).some(word => content.includes(word));
87
+ });
88
+ if (filtered.length > 0) {
89
+ results.push("### Episodic Memory");
90
+ for (const ep of filtered.slice(0, 5)) {
91
+ const summary = typeof ep.content === "object" && ep.content !== null
92
+ ? ep.content.text ?? JSON.stringify(ep.content).slice(0, 200)
93
+ : String(ep.content).slice(0, 200);
94
+ results.push(`- [${ep.modality}] ${summary} _(${ep.timestamp}, id: ${ep.episodeId})_`);
157
95
  }
158
- return {
159
- content: [{ type: "text", text: `Saved semantic note: ${noteId}${conflictWarning}` + getShortReminder(threadId) }],
160
- };
161
96
  }
162
- catch (err) {
163
- return errorResult(`Memory save error: ${errorMessage(err)}` + getShortReminder(threadId));
97
+ }
98
+ const text = results.length > 0
99
+ ? results.join("\n")
100
+ : `No memories found for "${query}".`;
101
+ return { content: [{ type: "text", text: text + reminder }] };
102
+ }
103
+ catch (err) {
104
+ return errorResult(`Memory search error: ${errorMessage(err)}` + reminder);
105
+ }
106
+ }
107
+ async function handleMemorySave(db, args, apiKey, threadId, getMemoryDb, reminder, errorResult) {
108
+ const VALID_TYPES = ["fact", "preference", "pattern", "entity", "relationship"];
109
+ const noteType = String(args.type ?? "fact");
110
+ if (!VALID_TYPES.includes(noteType)) {
111
+ return errorResult(`Invalid type "${noteType}". Must be one of: ${VALID_TYPES.join(", ")}`);
112
+ }
113
+ try {
114
+ const content = String(args.content ?? "").trim();
115
+ if (!content) {
116
+ return errorResult("Error: 'content' is required and cannot be empty.");
117
+ }
118
+ const noteId = saveSemanticNote(db, {
119
+ type: noteType,
120
+ content,
121
+ keywords: Array.isArray(args.keywords) ? args.keywords.map(String) : typeof args.keywords === 'string' ? [args.keywords] : [],
122
+ confidence: typeof args.confidence === "number" ? args.confidence : 0.8,
123
+ priority: typeof args.priority === "number" ? args.priority : 0,
124
+ threadId: threadId ?? null,
125
+ });
126
+ // Fire-and-forget embedding generation
127
+ if (apiKey) {
128
+ void generateEmbedding(content, apiKey).then(emb => {
129
+ saveNoteEmbedding(getMemoryDb(), noteId, emb);
130
+ }).catch(err => {
131
+ log.error(`[memory] Embedding failed for ${noteId}: ${err instanceof Error ? err.message : String(err)}`);
132
+ });
133
+ }
134
+ // Check for potential conflicts with existing notes
135
+ let conflictWarning = "";
136
+ try {
137
+ const conflicts = findPotentialConflicts(db, noteId);
138
+ if (conflicts.length > 0) {
139
+ const ids = conflicts.map(c => c.noteId).join(", ");
140
+ conflictWarning = `\n⚠️ Potential conflicts detected with: ${ids}. Consider reviewing and superseding stale notes.`;
164
141
  }
165
142
  }
166
- // ── memory_update ─────────────────────────────────────────────────────
167
- case "memory_update": {
168
- const threadId = resolveThreadId(args);
169
- try {
170
- const db = getMemoryDb();
171
- const memId = String(args.memoryId ?? "");
172
- const action = String(args.action ?? "update");
173
- const reason = String(args.reason ?? "");
174
- if (action === "supersede" && memId.startsWith("sn_")) {
175
- const origRow = db.prepare("SELECT type, keywords FROM semantic_notes WHERE note_id = ?").get(memId);
176
- if (!origRow) {
177
- return errorResult(`Note ${memId} not found cannot supersede a non-existent note.`);
178
- }
179
- const newContent = String(args.newContent ?? "");
180
- if (!newContent.trim())
181
- return errorResult("Error: 'newContent' is required when superseding a note. The original note would be destroyed with no replacement.");
182
- const newId = supersedeNote(db, memId, {
183
- type: origRow.type,
184
- content: newContent,
185
- keywords: origRow.keywords ? JSON.parse(origRow.keywords) : [],
186
- confidence: typeof args.newConfidence === "number" ? args.newConfidence : 0.8,
187
- priority: typeof args.newPriority === "number" ? args.newPriority : undefined,
188
- });
189
- return {
190
- content: [{ type: "text", text: `Superseded ${memId} → ${newId} (reason: ${reason})` + getShortReminder(threadId) }],
191
- };
192
- }
193
- if (memId.startsWith("sn_")) {
194
- const updates = {};
195
- if (args.newContent)
196
- updates.content = String(args.newContent);
197
- if (typeof args.newConfidence === "number")
198
- updates.confidence = args.newConfidence;
199
- if (typeof args.newPriority === "number")
200
- updates.priority = args.newPriority;
201
- updateSemanticNote(db, memId, updates);
202
- return {
203
- content: [{ type: "text", text: `Updated note ${memId} (reason: ${reason})` + getShortReminder(threadId) }],
204
- };
205
- }
206
- if (memId.startsWith("pr_")) {
207
- const updates = {};
208
- if (args.newContent)
209
- updates.description = String(args.newContent);
210
- if (typeof args.newConfidence === "number")
211
- updates.confidence = args.newConfidence;
212
- updateProcedure(db, memId, updates);
213
- return {
214
- content: [{ type: "text", text: `Updated procedure ${memId} (reason: ${reason})` + getShortReminder(threadId) }],
215
- };
216
- }
217
- return errorResult(`Unknown memory ID format: ${memId}` + getShortReminder(threadId));
143
+ catch (err) {
144
+ log.warn(`[memory] Conflict detection failed: ${errorMessage(err)}`);
145
+ }
146
+ return {
147
+ content: [{ type: "text", text: `Saved semantic note: ${noteId}${conflictWarning}` + reminder }],
148
+ };
149
+ }
150
+ catch (err) {
151
+ return errorResult(`Memory save error: ${errorMessage(err)}` + reminder);
152
+ }
153
+ }
154
+ function handleMemoryUpdate(db, args, threadId, reminder, errorResult) {
155
+ try {
156
+ const memId = String(args.memoryId ?? "");
157
+ const action = String(args.action ?? "update");
158
+ const reason = String(args.reason ?? "");
159
+ if (action === "supersede" && memId.startsWith("sn_")) {
160
+ const origNote = getSemanticNoteById(db, memId);
161
+ if (!origNote) {
162
+ return errorResult(`Note ${memId} not found — cannot supersede a non-existent note.`);
218
163
  }
219
- catch (err) {
220
- return errorResult(`Memory update error: ${errorMessage(err)}` + getShortReminder(threadId));
164
+ const newContent = String(args.newContent ?? "");
165
+ if (!newContent.trim())
166
+ return errorResult("Error: 'newContent' is required when superseding a note. The original note would be destroyed with no replacement.");
167
+ const newId = supersedeNote(db, memId, {
168
+ type: origNote.type,
169
+ content: newContent,
170
+ keywords: origNote.keywords,
171
+ confidence: typeof args.newConfidence === "number" ? args.newConfidence : 0.8,
172
+ priority: typeof args.newPriority === "number" ? args.newPriority : undefined,
173
+ });
174
+ return {
175
+ content: [{ type: "text", text: `Superseded ${memId} → ${newId} (reason: ${reason})` + reminder }],
176
+ };
177
+ }
178
+ if (memId.startsWith("sn_")) {
179
+ const updates = {};
180
+ if (args.newContent)
181
+ updates.content = String(args.newContent);
182
+ if (typeof args.newConfidence === "number")
183
+ updates.confidence = args.newConfidence;
184
+ if (typeof args.newPriority === "number")
185
+ updates.priority = args.newPriority;
186
+ updateSemanticNote(db, memId, updates);
187
+ return {
188
+ content: [{ type: "text", text: `Updated note ${memId} (reason: ${reason})` + reminder }],
189
+ };
190
+ }
191
+ if (memId.startsWith("pr_")) {
192
+ const updates = {};
193
+ if (args.newContent)
194
+ updates.description = String(args.newContent);
195
+ if (typeof args.newConfidence === "number")
196
+ updates.confidence = args.newConfidence;
197
+ updateProcedure(db, memId, updates);
198
+ return {
199
+ content: [{ type: "text", text: `Updated procedure ${memId} (reason: ${reason})` + reminder }],
200
+ };
201
+ }
202
+ return errorResult(`Unknown memory ID format: ${memId}` + reminder);
203
+ }
204
+ catch (err) {
205
+ return errorResult(`Memory update error: ${errorMessage(err)}` + reminder);
206
+ }
207
+ }
208
+ async function handleMemoryConsolidate(db, threadId, reminder, errorResult, onConsolidation) {
209
+ try {
210
+ const report = await runIntelligentConsolidation(db, threadId);
211
+ onConsolidation?.();
212
+ if (report.episodesProcessed === 0) {
213
+ return {
214
+ content: [{ type: "text", text: "No unconsolidated episodes. Memory is up to date." + reminder }],
215
+ };
216
+ }
217
+ const reportLines = [
218
+ "## Consolidation Report",
219
+ `- Episodes processed: ${report.episodesProcessed}`,
220
+ `- Notes created: ${report.notesCreated}`,
221
+ `- Duration: ${report.durationMs}ms`,
222
+ ];
223
+ if (report.details.length > 0) {
224
+ reportLines.push("", "### Extracted Knowledge");
225
+ for (const d of report.details) {
226
+ reportLines.push(`- ${d}`);
227
+ }
228
+ }
229
+ return { content: [{ type: "text", text: reportLines.join("\n") + reminder }] };
230
+ }
231
+ catch (err) {
232
+ return errorResult(`Consolidation error: ${errorMessage(err)}` + reminder);
233
+ }
234
+ }
235
+ function handleMemoryStatus(db, threadId, reminder, errorResult) {
236
+ try {
237
+ const status = getMemoryStatus(db, threadId);
238
+ const topics = getTopicIndex(db);
239
+ const lines = [
240
+ "## Memory Status",
241
+ `- Episodes: ${status.totalEpisodes} (${status.unconsolidatedEpisodes} unconsolidated)`,
242
+ `- Semantic notes: ${status.totalSemanticNotes}`,
243
+ `- Procedures: ${status.totalProcedures}`,
244
+ `- Voice signatures: ${status.totalVoiceSignatures}`,
245
+ `- Last consolidation: ${status.lastConsolidation ?? "never"}`,
246
+ `- DB size: ${(status.dbSizeBytes / 1024).toFixed(1)} KB`,
247
+ ];
248
+ if (topics.length > 0) {
249
+ lines.push("", "**Topics:**");
250
+ for (const t of topics.slice(0, 15)) {
251
+ lines.push(`- ${t.topic} (${t.semanticCount} notes, ${t.proceduralCount} procs, conf: ${t.avgConfidence.toFixed(2)})`);
221
252
  }
222
253
  }
223
- // ── memory_consolidate ────────────────────────────────────────────────
254
+ return { content: [{ type: "text", text: lines.join("\n") + reminder }] };
255
+ }
256
+ catch (err) {
257
+ return errorResult(`Memory status error: ${errorMessage(err)}` + reminder);
258
+ }
259
+ }
260
+ function handleMemoryForget(db, args, threadId, reminder, errorResult) {
261
+ try {
262
+ const memId = String(args.memoryId ?? "");
263
+ const reason = String(args.reason ?? "");
264
+ const result = forgetMemory(db, memId, reason);
265
+ if (!result.deleted) {
266
+ return {
267
+ content: [{ type: "text", text: `Memory ${memId} not found (layer: ${result.layer}). Nothing was deleted.` + reminder }],
268
+ };
269
+ }
270
+ return {
271
+ content: [{ type: "text", text: `Forgot ${result.layer} memory ${memId} (reason: ${reason})` + reminder }],
272
+ };
273
+ }
274
+ catch (err) {
275
+ return errorResult(`Memory forget error: ${errorMessage(err)}` + reminder);
276
+ }
277
+ }
278
+ // ---------------------------------------------------------------------------
279
+ // Main dispatcher
280
+ // ---------------------------------------------------------------------------
281
+ export async function handleMemoryTool(name, args, ctx) {
282
+ const { resolveThreadId, getShortReminder, getMemoryDb, errorResult } = ctx;
283
+ const threadId = resolveThreadId(args);
284
+ const reminder = getShortReminder(threadId);
285
+ const apiKey = process.env.OPENAI_API_KEY;
286
+ switch (name) {
287
+ case "memory_search":
288
+ return handleMemorySearch(getMemoryDb(), args, apiKey, threadId, reminder, errorResult);
289
+ case "memory_save":
290
+ return handleMemorySave(getMemoryDb(), args, apiKey, threadId, getMemoryDb, reminder, errorResult);
291
+ case "memory_update":
292
+ return handleMemoryUpdate(getMemoryDb(), args, threadId, reminder, errorResult);
224
293
  case "memory_consolidate": {
225
- const threadId = resolveThreadId(args);
226
294
  if (threadId === undefined) {
227
295
  return errorResult("Error: No active thread." + getShortReminder(undefined));
228
296
  }
229
- try {
230
- const db = getMemoryDb();
231
- const report = await runIntelligentConsolidation(db, threadId);
232
- ctx.onConsolidation?.(); // Prevent redundant auto-consolidation
233
- if (report.episodesProcessed === 0) {
234
- return {
235
- content: [{ type: "text", text: "No unconsolidated episodes. Memory is up to date." + getShortReminder(threadId) }],
236
- };
237
- }
238
- const reportLines = [
239
- "## Consolidation Report",
240
- `- Episodes processed: ${report.episodesProcessed}`,
241
- `- Notes created: ${report.notesCreated}`,
242
- `- Duration: ${report.durationMs}ms`,
243
- ];
244
- if (report.details.length > 0) {
245
- reportLines.push("", "### Extracted Knowledge");
246
- for (const d of report.details) {
247
- reportLines.push(`- ${d}`);
248
- }
249
- }
250
- return { content: [{ type: "text", text: reportLines.join("\n") + getShortReminder(threadId) }] };
251
- }
252
- catch (err) {
253
- return errorResult(`Consolidation error: ${errorMessage(err)}` + getShortReminder(threadId));
254
- }
297
+ return handleMemoryConsolidate(getMemoryDb(), threadId, reminder, errorResult, ctx.onConsolidation);
255
298
  }
256
- // ── memory_status ─────────────────────────────────────────────────────
257
299
  case "memory_status": {
258
- const threadId = resolveThreadId(args);
259
300
  if (threadId === undefined) {
260
301
  return errorResult("Error: No active thread." + getShortReminder(undefined));
261
302
  }
262
- try {
263
- const db = getMemoryDb();
264
- const status = getMemoryStatus(db, threadId);
265
- const topics = getTopicIndex(db);
266
- const lines = [
267
- "## Memory Status",
268
- `- Episodes: ${status.totalEpisodes} (${status.unconsolidatedEpisodes} unconsolidated)`,
269
- `- Semantic notes: ${status.totalSemanticNotes}`,
270
- `- Procedures: ${status.totalProcedures}`,
271
- `- Voice signatures: ${status.totalVoiceSignatures}`,
272
- `- Last consolidation: ${status.lastConsolidation ?? "never"}`,
273
- `- DB size: ${(status.dbSizeBytes / 1024).toFixed(1)} KB`,
274
- ];
275
- if (topics.length > 0) {
276
- lines.push("", "**Topics:**");
277
- for (const t of topics.slice(0, 15)) {
278
- lines.push(`- ${t.topic} (${t.semanticCount} notes, ${t.proceduralCount} procs, conf: ${t.avgConfidence.toFixed(2)})`);
279
- }
280
- }
281
- return { content: [{ type: "text", text: lines.join("\n") + getShortReminder(threadId) }] };
282
- }
283
- catch (err) {
284
- return errorResult(`Memory status error: ${errorMessage(err)}` + getShortReminder(threadId));
285
- }
286
- }
287
- // ── memory_forget ─────────────────────────────────────────────────────
288
- case "memory_forget": {
289
- const threadId = resolveThreadId(args);
290
- try {
291
- const db = getMemoryDb();
292
- const memId = String(args.memoryId ?? "");
293
- const reason = String(args.reason ?? "");
294
- const result = forgetMemory(db, memId, reason);
295
- if (!result.deleted) {
296
- return {
297
- content: [{ type: "text", text: `Memory ${memId} not found (layer: ${result.layer}). Nothing was deleted.` + getShortReminder(threadId) }],
298
- };
299
- }
300
- return {
301
- content: [{ type: "text", text: `Forgot ${result.layer} memory ${memId} (reason: ${reason})` + getShortReminder(threadId) }],
302
- };
303
- }
304
- catch (err) {
305
- return errorResult(`Memory forget error: ${errorMessage(err)}` + getShortReminder(threadId));
306
- }
303
+ return handleMemoryStatus(getMemoryDb(), threadId, reminder, errorResult);
307
304
  }
305
+ case "memory_forget":
306
+ return handleMemoryForget(getMemoryDb(), args, threadId, reminder, errorResult);
308
307
  default:
309
308
  return errorResult(`Unknown memory tool: ${name}`);
310
309
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/tools/memory-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/tools/memory-tools.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { TelegramClient } from "../telegram.js";
7
7
  import type { peekThreadMessages, readThreadMessages, appendToThread } from "../dispatcher.js";
8
- import type { checkMaintenanceFlag } from "../config.js";
8
+ import type { checkMaintenanceFlag } from "../data/file-storage.js";
9
9
  import type { checkDueTasks } from "../scheduler.js";
10
10
  import type { ToolResult } from "../types.js";
11
11
  /** Closure-bound helpers passed by the caller (index.ts createMcpServer). */
@@ -1 +1 @@
1
- {"version":3,"file":"session-tools.d.ts","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAC7D,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,UAAU,CAAC,CASrB"}
1
+ {"version":3,"file":"session-tools.d.ts","sourceRoot":"","sources":["../../src/tools/session-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,UAAU,GAAG;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAC7D,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAMD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,UAAU,CAAC,CASrB"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { readFile } from "fs/promises";
7
7
  import { basename } from "node:path";
8
- import { checkMaintenanceFlag } from "../config.js";
8
+ import { checkMaintenanceFlag } from "../data/file-storage.js";
9
9
  import { textToSpeech, TTS_VOICES } from "../openai.js";
10
10
  import { addSchedule, generateTaskId, listSchedules, removeSchedule } from "../scheduler.js";
11
11
  import { log } from "../logger.js";