claude-cortex 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +291 -0
  2. package/dist/api/events.d.ts +134 -0
  3. package/dist/api/events.d.ts.map +1 -0
  4. package/dist/api/events.js +73 -0
  5. package/dist/api/events.js.map +1 -0
  6. package/dist/api/visualization-server.d.ts +11 -0
  7. package/dist/api/visualization-server.d.ts.map +1 -0
  8. package/dist/api/visualization-server.js +653 -0
  9. package/dist/api/visualization-server.js.map +1 -0
  10. package/dist/context/project-context.d.ts +57 -0
  11. package/dist/context/project-context.d.ts.map +1 -0
  12. package/dist/context/project-context.js +135 -0
  13. package/dist/context/project-context.js.map +1 -0
  14. package/dist/database/init.d.ts +49 -0
  15. package/dist/database/init.d.ts.map +1 -0
  16. package/dist/database/init.js +336 -0
  17. package/dist/database/init.js.map +1 -0
  18. package/dist/embeddings/generator.d.ts +20 -0
  19. package/dist/embeddings/generator.d.ts.map +1 -0
  20. package/dist/embeddings/generator.js +77 -0
  21. package/dist/embeddings/generator.js.map +1 -0
  22. package/dist/embeddings/index.d.ts +2 -0
  23. package/dist/embeddings/index.d.ts.map +1 -0
  24. package/dist/embeddings/index.js +2 -0
  25. package/dist/embeddings/index.js.map +1 -0
  26. package/dist/errors.d.ts +74 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +131 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/index.d.ts +16 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +83 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/memory/activation.d.ts +69 -0
  35. package/dist/memory/activation.d.ts.map +1 -0
  36. package/dist/memory/activation.js +168 -0
  37. package/dist/memory/activation.js.map +1 -0
  38. package/dist/memory/consolidate.d.ts +96 -0
  39. package/dist/memory/consolidate.d.ts.map +1 -0
  40. package/dist/memory/consolidate.js +400 -0
  41. package/dist/memory/consolidate.js.map +1 -0
  42. package/dist/memory/contradiction.d.ts +69 -0
  43. package/dist/memory/contradiction.d.ts.map +1 -0
  44. package/dist/memory/contradiction.js +286 -0
  45. package/dist/memory/contradiction.js.map +1 -0
  46. package/dist/memory/decay.d.ts +62 -0
  47. package/dist/memory/decay.d.ts.map +1 -0
  48. package/dist/memory/decay.js +184 -0
  49. package/dist/memory/decay.js.map +1 -0
  50. package/dist/memory/salience.d.ts +36 -0
  51. package/dist/memory/salience.d.ts.map +1 -0
  52. package/dist/memory/salience.js +200 -0
  53. package/dist/memory/salience.js.map +1 -0
  54. package/dist/memory/similarity.d.ts +57 -0
  55. package/dist/memory/similarity.d.ts.map +1 -0
  56. package/dist/memory/similarity.js +114 -0
  57. package/dist/memory/similarity.js.map +1 -0
  58. package/dist/memory/store.d.ts +170 -0
  59. package/dist/memory/store.d.ts.map +1 -0
  60. package/dist/memory/store.js +973 -0
  61. package/dist/memory/store.js.map +1 -0
  62. package/dist/memory/types.d.ts +91 -0
  63. package/dist/memory/types.d.ts.map +1 -0
  64. package/dist/memory/types.js +30 -0
  65. package/dist/memory/types.js.map +1 -0
  66. package/dist/server.d.ts +12 -0
  67. package/dist/server.d.ts.map +1 -0
  68. package/dist/server.js +466 -0
  69. package/dist/server.js.map +1 -0
  70. package/dist/tools/context.d.ts +135 -0
  71. package/dist/tools/context.d.ts.map +1 -0
  72. package/dist/tools/context.js +273 -0
  73. package/dist/tools/context.js.map +1 -0
  74. package/dist/tools/forget.d.ts +53 -0
  75. package/dist/tools/forget.d.ts.map +1 -0
  76. package/dist/tools/forget.js +179 -0
  77. package/dist/tools/forget.js.map +1 -0
  78. package/dist/tools/recall.d.ts +74 -0
  79. package/dist/tools/recall.d.ts.map +1 -0
  80. package/dist/tools/recall.js +140 -0
  81. package/dist/tools/recall.js.map +1 -0
  82. package/dist/tools/remember.d.ts +65 -0
  83. package/dist/tools/remember.d.ts.map +1 -0
  84. package/dist/tools/remember.js +147 -0
  85. package/dist/tools/remember.js.map +1 -0
  86. package/dist/worker/brain-worker.d.ts +100 -0
  87. package/dist/worker/brain-worker.d.ts.map +1 -0
  88. package/dist/worker/brain-worker.js +261 -0
  89. package/dist/worker/brain-worker.js.map +1 -0
  90. package/dist/worker/link-discovery.d.ts +47 -0
  91. package/dist/worker/link-discovery.d.ts.map +1 -0
  92. package/dist/worker/link-discovery.js +103 -0
  93. package/dist/worker/link-discovery.js.map +1 -0
  94. package/dist/worker/predictive-consolidation.d.ts +46 -0
  95. package/dist/worker/predictive-consolidation.d.ts.map +1 -0
  96. package/dist/worker/predictive-consolidation.js +110 -0
  97. package/dist/worker/predictive-consolidation.js.map +1 -0
  98. package/dist/worker/types.d.ts +91 -0
  99. package/dist/worker/types.d.ts.map +1 -0
  100. package/dist/worker/types.js +22 -0
  101. package/dist/worker/types.js.map +1 -0
  102. package/package.json +59 -0
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Context Tool
3
+ *
4
+ * Manages context injection and session handling.
5
+ * This is the key tool for solving the compaction problem.
6
+ */
7
+ import { z } from 'zod';
8
+ import { generateContextSummary, formatContextSummary, startSession, endSession, getSuggestedContext, consolidate, previewConsolidation, exportMemories, importMemories, } from '../memory/consolidate.js';
9
+ import { getMemoryStats } from '../memory/store.js';
10
+ import { resolveProject } from '../context/project-context.js';
11
+ // Input schema for getting context
12
+ export const getContextSchema = z.object({
13
+ project: z.string().optional().describe('Project to get context for'),
14
+ query: z.string().optional().describe('Current query/task to find relevant context for'),
15
+ format: z.enum(['summary', 'detailed', 'raw']).optional().default('summary')
16
+ .describe('Output format'),
17
+ });
18
+ /**
19
+ * Execute the get_context tool
20
+ */
21
+ export async function executeGetContext(input) {
22
+ try {
23
+ // Resolve project (auto-detect if not provided)
24
+ const resolvedProject = resolveProject(input.project);
25
+ const projectFilter = resolvedProject ?? undefined;
26
+ // Generate context summary
27
+ const summary = await generateContextSummary(projectFilter);
28
+ // If there's a query, also get specifically relevant memories
29
+ let relevantMemories = [];
30
+ if (input.query) {
31
+ relevantMemories = await getSuggestedContext(input.query, projectFilter, 5);
32
+ }
33
+ // Format based on requested format
34
+ let context;
35
+ switch (input.format) {
36
+ case 'raw':
37
+ context = JSON.stringify({ summary, relevantMemories }, null, 2);
38
+ break;
39
+ case 'detailed':
40
+ context = formatDetailedContext(summary, relevantMemories);
41
+ break;
42
+ case 'summary':
43
+ default:
44
+ context = formatContextSummary(summary);
45
+ if (relevantMemories.length > 0) {
46
+ context += '\n\n### Relevant to Current Query\n';
47
+ context += relevantMemories.map(m => `- **${m.title}**: ${m.content.slice(0, 100)}...`).join('\n');
48
+ }
49
+ break;
50
+ }
51
+ return {
52
+ success: true,
53
+ context,
54
+ summary,
55
+ relevantMemories,
56
+ };
57
+ }
58
+ catch (error) {
59
+ return {
60
+ success: false,
61
+ error: error instanceof Error ? error.message : 'Unknown error',
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * Format detailed context output
67
+ */
68
+ function formatDetailedContext(summary, relevant) {
69
+ const lines = [];
70
+ if (summary.project) {
71
+ lines.push(`# Project Context: ${summary.project}\n`);
72
+ }
73
+ else {
74
+ lines.push('# Memory Context\n');
75
+ }
76
+ // Key decisions
77
+ if (summary.keyDecisions.length > 0) {
78
+ lines.push('## Architecture & Decisions\n');
79
+ for (const m of summary.keyDecisions) {
80
+ lines.push(`### ${m.title}`);
81
+ lines.push(m.content);
82
+ lines.push(`*Salience: ${(m.salience * 100).toFixed(0)}% | Category: ${m.category}*\n`);
83
+ }
84
+ }
85
+ // Patterns
86
+ if (summary.activePatterns.length > 0) {
87
+ lines.push('## Active Patterns\n');
88
+ for (const m of summary.activePatterns) {
89
+ lines.push(`### ${m.title}`);
90
+ lines.push(m.content);
91
+ lines.push('');
92
+ }
93
+ }
94
+ // Pending
95
+ if (summary.pendingItems.length > 0) {
96
+ lines.push('## Pending Items\n');
97
+ for (const m of summary.pendingItems) {
98
+ lines.push(`- [ ] **${m.title}**: ${m.content.slice(0, 100)}`);
99
+ }
100
+ lines.push('');
101
+ }
102
+ // Relevant to query
103
+ if (relevant.length > 0) {
104
+ lines.push('## Relevant to Current Context\n');
105
+ for (const m of relevant) {
106
+ lines.push(`### ${m.title}`);
107
+ lines.push(m.content);
108
+ lines.push(`*Type: ${m.type} | Tags: ${m.tags.join(', ') || 'none'}*\n`);
109
+ }
110
+ }
111
+ // Recent activity
112
+ if (summary.recentMemories.length > 0) {
113
+ lines.push('## Recent Activity\n');
114
+ for (const m of summary.recentMemories.slice(0, 5)) {
115
+ lines.push(`- **${m.title}** (${m.category})`);
116
+ }
117
+ }
118
+ return lines.join('\n');
119
+ }
120
+ // Session management
121
+ export const startSessionSchema = z.object({
122
+ project: z.string().optional().describe('Project for this session'),
123
+ });
124
+ export async function executeStartSession(input) {
125
+ try {
126
+ // Resolve project (auto-detect if not provided)
127
+ const resolvedProject = resolveProject(input.project);
128
+ const projectFilter = resolvedProject ?? undefined;
129
+ const { sessionId, context } = await startSession(projectFilter);
130
+ const formattedContext = formatContextSummary(context);
131
+ return {
132
+ success: true,
133
+ sessionId,
134
+ context: formattedContext,
135
+ };
136
+ }
137
+ catch (error) {
138
+ return {
139
+ success: false,
140
+ error: error instanceof Error ? error.message : 'Unknown error',
141
+ };
142
+ }
143
+ }
144
+ export const endSessionSchema = z.object({
145
+ sessionId: z.number().describe('Session ID to end'),
146
+ summary: z.string().optional().describe('Summary of what was accomplished'),
147
+ });
148
+ export function executeEndSession(input) {
149
+ try {
150
+ endSession(input.sessionId, input.summary);
151
+ // Run consolidation
152
+ const consolidationResult = consolidate();
153
+ return {
154
+ success: true,
155
+ consolidationResult,
156
+ };
157
+ }
158
+ catch (error) {
159
+ return {
160
+ success: false,
161
+ error: error instanceof Error ? error.message : 'Unknown error',
162
+ };
163
+ }
164
+ }
165
+ // Consolidation
166
+ export const consolidateSchema = z.object({
167
+ force: z.boolean().optional().default(false)
168
+ .describe('Force consolidation even if not due'),
169
+ dryRun: z.boolean().optional().default(false)
170
+ .describe('Preview what would happen without actually doing it'),
171
+ });
172
+ export function executeConsolidate(input) {
173
+ try {
174
+ if (input.dryRun) {
175
+ // Preview mode - don't actually do anything
176
+ const preview = previewConsolidation();
177
+ return {
178
+ success: true,
179
+ preview: {
180
+ toPromote: preview.toPromote.length,
181
+ toDelete: preview.toDelete.length,
182
+ promoteList: preview.toPromote.slice(0, 10).map(m => m.title),
183
+ deleteList: preview.toDelete.slice(0, 10).map(m => `${m.title} (${m.category})`),
184
+ },
185
+ };
186
+ }
187
+ const result = consolidate();
188
+ return { success: true, result };
189
+ }
190
+ catch (error) {
191
+ return {
192
+ success: false,
193
+ error: error instanceof Error ? error.message : 'Unknown error',
194
+ };
195
+ }
196
+ }
197
+ // Stats
198
+ export const statsSchema = z.object({
199
+ project: z.string().optional().describe('Get stats for specific project'),
200
+ });
201
+ export function executeStats(input) {
202
+ try {
203
+ // Resolve project (auto-detect if not provided)
204
+ const resolvedProject = resolveProject(input.project);
205
+ const projectFilter = resolvedProject ?? undefined;
206
+ const stats = getMemoryStats(projectFilter);
207
+ return { success: true, stats };
208
+ }
209
+ catch (error) {
210
+ return {
211
+ success: false,
212
+ error: error instanceof Error ? error.message : 'Unknown error',
213
+ };
214
+ }
215
+ }
216
+ export function formatStats(stats) {
217
+ const lines = [
218
+ '## Memory Statistics',
219
+ '',
220
+ `Total memories: ${stats.total}`,
221
+ ` - Short-term: ${stats.shortTerm}`,
222
+ ` - Long-term: ${stats.longTerm}`,
223
+ ` - Episodic: ${stats.episodic}`,
224
+ '',
225
+ `Average salience: ${(stats.averageSalience * 100).toFixed(1)}%`,
226
+ '',
227
+ '### By Category',
228
+ ];
229
+ for (const [category, count] of Object.entries(stats.byCategory)) {
230
+ lines.push(` - ${category}: ${count}`);
231
+ }
232
+ return lines.join('\n');
233
+ }
234
+ // Export/Import
235
+ export const exportSchema = z.object({
236
+ project: z.string().optional().describe('Export only memories for this project'),
237
+ });
238
+ export function executeExport(input) {
239
+ try {
240
+ // Resolve project (auto-detect if not provided)
241
+ const resolvedProject = resolveProject(input.project);
242
+ const projectFilter = resolvedProject ?? undefined;
243
+ const data = exportMemories(projectFilter);
244
+ const memories = JSON.parse(data);
245
+ return {
246
+ success: true,
247
+ data,
248
+ count: memories.length,
249
+ };
250
+ }
251
+ catch (error) {
252
+ return {
253
+ success: false,
254
+ error: error instanceof Error ? error.message : 'Unknown error',
255
+ };
256
+ }
257
+ }
258
+ export const importSchema = z.object({
259
+ data: z.string().describe('JSON data to import'),
260
+ });
261
+ export function executeImport(input) {
262
+ try {
263
+ const imported = importMemories(input.data);
264
+ return { success: true, imported };
265
+ }
266
+ catch (error) {
267
+ return {
268
+ success: false,
269
+ error: error instanceof Error ? error.message : 'Unknown error',
270
+ };
271
+ }
272
+ }
273
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Forget Tool
3
+ *
4
+ * Delete memories - either individually or in bulk.
5
+ */
6
+ import { z } from 'zod';
7
+ export declare const forgetSchema: z.ZodObject<{
8
+ id: z.ZodOptional<z.ZodNumber>;
9
+ query: z.ZodOptional<z.ZodString>;
10
+ category: z.ZodOptional<z.ZodEnum<["architecture", "pattern", "preference", "error", "context", "learning", "todo", "note", "relationship", "custom"]>>;
11
+ project: z.ZodOptional<z.ZodString>;
12
+ olderThan: z.ZodOptional<z.ZodNumber>;
13
+ belowSalience: z.ZodOptional<z.ZodNumber>;
14
+ dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
15
+ confirm: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ dryRun: boolean;
18
+ confirm: boolean;
19
+ project?: string | undefined;
20
+ category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
21
+ id?: number | undefined;
22
+ query?: string | undefined;
23
+ olderThan?: number | undefined;
24
+ belowSalience?: number | undefined;
25
+ }, {
26
+ project?: string | undefined;
27
+ category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
28
+ id?: number | undefined;
29
+ query?: string | undefined;
30
+ olderThan?: number | undefined;
31
+ belowSalience?: number | undefined;
32
+ dryRun?: boolean | undefined;
33
+ confirm?: boolean | undefined;
34
+ }>;
35
+ export type ForgetInput = z.infer<typeof forgetSchema>;
36
+ /**
37
+ * Execute the forget tool
38
+ */
39
+ export declare function executeForget(input: ForgetInput): Promise<{
40
+ success: boolean;
41
+ deleted?: number;
42
+ wouldDelete?: number;
43
+ memories?: {
44
+ id: number;
45
+ title: string;
46
+ }[];
47
+ error?: string;
48
+ }>;
49
+ /**
50
+ * Format the forget result for MCP response
51
+ */
52
+ export declare function formatForgetResult(result: Awaited<ReturnType<typeof executeForget>>): string;
53
+ //# sourceMappingURL=forget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/tools/forget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;EAevB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA+HD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,GAAG,MAAM,CAsC5F"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Forget Tool
3
+ *
4
+ * Delete memories - either individually or in bulk.
5
+ */
6
+ import { z } from 'zod';
7
+ import { deleteMemory, searchMemories, getMemoryById } from '../memory/store.js';
8
+ import { getDatabase, withTransaction } from '../database/init.js';
9
+ import { MemoryNotFoundError, BulkDeleteSafetyError, formatErrorForMcp, } from '../errors.js';
10
+ import { resolveProject } from '../context/project-context.js';
11
+ // Input schema for the forget tool
12
+ export const forgetSchema = z.object({
13
+ id: z.number().optional().describe('Specific memory ID to delete'),
14
+ query: z.string().optional().describe('Delete memories matching this query'),
15
+ category: z.enum([
16
+ 'architecture', 'pattern', 'preference', 'error',
17
+ 'context', 'learning', 'todo', 'note', 'relationship', 'custom'
18
+ ]).optional().describe('Delete all memories in this category'),
19
+ project: z.string().optional().describe('Delete all memories for this project'),
20
+ olderThan: z.number().optional().describe('Delete memories older than N days'),
21
+ belowSalience: z.number().min(0).max(1).optional()
22
+ .describe('Delete memories with salience below this threshold'),
23
+ dryRun: z.boolean().optional().default(false)
24
+ .describe('Preview what would be deleted without actually deleting'),
25
+ confirm: z.boolean().optional().default(false)
26
+ .describe('Confirm bulk deletion (required for operations affecting multiple memories)'),
27
+ });
28
+ /**
29
+ * Execute the forget tool
30
+ */
31
+ export async function executeForget(input) {
32
+ try {
33
+ const db = getDatabase();
34
+ // Resolve project (auto-detect if not provided)
35
+ const resolvedProject = resolveProject(input.project);
36
+ // Single ID deletion
37
+ if (input.id !== undefined) {
38
+ const memory = getMemoryById(input.id);
39
+ if (!memory) {
40
+ const error = new MemoryNotFoundError(input.id);
41
+ return {
42
+ success: false,
43
+ error: error.toUserMessage(),
44
+ };
45
+ }
46
+ if (input.dryRun) {
47
+ return {
48
+ success: true,
49
+ wouldDelete: 1,
50
+ memories: [{ id: memory.id, title: memory.title }],
51
+ };
52
+ }
53
+ deleteMemory(input.id);
54
+ return {
55
+ success: true,
56
+ deleted: 1,
57
+ memories: [{ id: memory.id, title: memory.title }],
58
+ };
59
+ }
60
+ // Build bulk delete query
61
+ const conditions = [];
62
+ const params = [];
63
+ if (input.query) {
64
+ // Get IDs from FTS search
65
+ const results = await searchMemories({
66
+ query: input.query,
67
+ limit: 100,
68
+ includeDecayed: true,
69
+ });
70
+ if (results.length === 0) {
71
+ return { success: true, deleted: 0, memories: [] };
72
+ }
73
+ const ids = results.map(r => r.memory.id);
74
+ conditions.push(`id IN (${ids.map(() => '?').join(',')})`);
75
+ params.push(...ids);
76
+ }
77
+ if (input.category) {
78
+ conditions.push('category = ?');
79
+ params.push(input.category);
80
+ }
81
+ if (resolvedProject) {
82
+ conditions.push('project = ?');
83
+ params.push(resolvedProject);
84
+ }
85
+ if (input.olderThan !== undefined) {
86
+ conditions.push("created_at < datetime('now', ? || ' days')");
87
+ params.push(-input.olderThan);
88
+ }
89
+ if (input.belowSalience !== undefined) {
90
+ conditions.push('salience < ?');
91
+ params.push(input.belowSalience);
92
+ }
93
+ if (conditions.length === 0) {
94
+ return {
95
+ success: false,
96
+ error: 'No deletion criteria specified. Provide id, query, category, project, olderThan, or belowSalience.',
97
+ };
98
+ }
99
+ const whereClause = conditions.join(' AND ');
100
+ // Get affected memories
101
+ const affected = db.prepare(`SELECT id, title FROM memories WHERE ${whereClause}`).all(...params);
102
+ if (affected.length === 0) {
103
+ return { success: true, deleted: 0, memories: [] };
104
+ }
105
+ // Dry run - just show what would be deleted
106
+ if (input.dryRun) {
107
+ return {
108
+ success: true,
109
+ wouldDelete: affected.length,
110
+ memories: affected.slice(0, 20), // Limit preview
111
+ };
112
+ }
113
+ // Require confirmation for bulk deletes
114
+ if (affected.length > 1 && !input.confirm) {
115
+ const error = new BulkDeleteSafetyError(affected.length);
116
+ return {
117
+ success: false,
118
+ wouldDelete: affected.length,
119
+ memories: affected.slice(0, 10),
120
+ error: error.toUserMessage(),
121
+ };
122
+ }
123
+ // Execute deletion within a transaction for atomicity
124
+ withTransaction(() => {
125
+ db.prepare(`DELETE FROM memories WHERE ${whereClause}`).run(...params);
126
+ });
127
+ return {
128
+ success: true,
129
+ deleted: affected.length,
130
+ memories: affected,
131
+ };
132
+ }
133
+ catch (error) {
134
+ return {
135
+ success: false,
136
+ error: formatErrorForMcp(error),
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * Format the forget result for MCP response
142
+ */
143
+ export function formatForgetResult(result) {
144
+ if (!result.success) {
145
+ if (result.wouldDelete !== undefined) {
146
+ const preview = result.memories?.map(m => ` - [${m.id}] ${m.title}`).join('\n') || '';
147
+ return [
148
+ `⚠️ ${result.error}`,
149
+ '',
150
+ 'Preview of memories to delete:',
151
+ preview,
152
+ result.memories && result.memories.length < (result.wouldDelete || 0)
153
+ ? ` ... and ${(result.wouldDelete || 0) - result.memories.length} more`
154
+ : '',
155
+ ].join('\n');
156
+ }
157
+ return `Failed to forget: ${result.error}`;
158
+ }
159
+ if (result.wouldDelete !== undefined) {
160
+ // Dry run result
161
+ const preview = result.memories?.map(m => ` - [${m.id}] ${m.title}`).join('\n') || '';
162
+ return [
163
+ `🔍 Dry run: Would delete ${result.wouldDelete} ${result.wouldDelete === 1 ? 'memory' : 'memories'}:`,
164
+ preview,
165
+ result.memories && result.memories.length < result.wouldDelete
166
+ ? ` ... and ${result.wouldDelete - result.memories.length} more`
167
+ : '',
168
+ ].join('\n');
169
+ }
170
+ if (result.deleted === 0) {
171
+ return 'No memories matched the deletion criteria.';
172
+ }
173
+ const deleted = result.memories?.map(m => ` - [${m.id}] ${m.title}`).join('\n') || '';
174
+ return [
175
+ `✓ Deleted ${result.deleted} ${result.deleted === 1 ? 'memory' : 'memories'}:`,
176
+ deleted,
177
+ ].join('\n');
178
+ }
179
+ //# sourceMappingURL=forget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/tools/forget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,mCAAmC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAClE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC5E,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;QACf,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO;QAChD,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ;KAChE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC9D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC/C,QAAQ,CAAC,oDAAoD,CAAC;IACjE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC1C,QAAQ,CAAC,yDAAyD,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC3C,QAAQ,CAAC,6EAA6E,CAAC;CAC3F,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAkB;IAOpD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzB,gDAAgD;QAChD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtD,qBAAqB;QACrB,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE;iBAC7B,CAAC;YACJ,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,CAAC;oBACd,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;iBACnD,CAAC;YACJ,CAAC;YAED,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAc,EAAE,CAAC;QAE7B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,0BAA0B;YAC1B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;gBACnC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,GAAG;gBACV,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YACrD,CAAC;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oGAAoG;aAC5G,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7C,wBAAwB;QACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,wCAAwC,WAAW,EAAE,CACtD,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoC,CAAC;QAEpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrD,CAAC;QAED,4CAA4C;QAC5C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,QAAQ,CAAC,MAAM;gBAC5B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,gBAAgB;aAClD,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,QAAQ,CAAC,MAAM;gBAC5B,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC/B,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE;aAC7B,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,eAAe,CAAC,GAAG,EAAE;YACnB,EAAE,CAAC,OAAO,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ,CAAC,MAAM;YACxB,QAAQ,EAAE,QAAQ;SACnB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC;SAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAiD;IAClF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvF,OAAO;gBACL,OAAO,MAAM,CAAC,KAAK,EAAE;gBACrB,EAAE;gBACF,gCAAgC;gBAChC,OAAO;gBACP,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;oBACnE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO;oBACxE,CAAC,CAAC,EAAE;aACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;QACD,OAAO,qBAAqB,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvF,OAAO;YACL,4BAA4B,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG;YACrG,OAAO;YACP,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW;gBAC5D,CAAC,CAAC,aAAa,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO;gBACjE,CAAC,CAAC,EAAE;SACP,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,4CAA4C,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACvF,OAAO;QACL,aAAa,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG;QAC9E,OAAO;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Recall Tool
3
+ *
4
+ * Search and retrieve memories using semantic search and filters.
5
+ */
6
+ import { z } from 'zod';
7
+ import { Memory } from '../memory/types.js';
8
+ export declare const recallSchema: z.ZodObject<{
9
+ query: z.ZodOptional<z.ZodString>;
10
+ category: z.ZodOptional<z.ZodEnum<["architecture", "pattern", "preference", "error", "context", "learning", "todo", "note", "relationship", "custom"]>>;
11
+ type: z.ZodOptional<z.ZodEnum<["short_term", "long_term", "episodic"]>>;
12
+ project: z.ZodOptional<z.ZodString>;
13
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
14
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ includeDecayed: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
+ includeGlobal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["search", "recent", "important"]>>>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ limit: number;
20
+ includeDecayed: boolean;
21
+ includeGlobal: boolean;
22
+ mode: "search" | "important" | "recent";
23
+ project?: string | undefined;
24
+ category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
25
+ type?: "short_term" | "long_term" | "episodic" | undefined;
26
+ tags?: string[] | undefined;
27
+ query?: string | undefined;
28
+ }, {
29
+ project?: string | undefined;
30
+ category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
31
+ limit?: number | undefined;
32
+ type?: "short_term" | "long_term" | "episodic" | undefined;
33
+ tags?: string[] | undefined;
34
+ query?: string | undefined;
35
+ includeDecayed?: boolean | undefined;
36
+ includeGlobal?: boolean | undefined;
37
+ mode?: "search" | "important" | "recent" | undefined;
38
+ }>;
39
+ export type RecallInput = z.infer<typeof recallSchema>;
40
+ /**
41
+ * Execute the recall tool
42
+ */
43
+ export declare function executeRecall(input: RecallInput): Promise<{
44
+ success: boolean;
45
+ memories?: Memory[];
46
+ count?: number;
47
+ error?: string;
48
+ }>;
49
+ /**
50
+ * Format a single memory for display
51
+ */
52
+ export declare function formatMemory(memory: Memory, verbose?: boolean): string;
53
+ /**
54
+ * Format the recall result for MCP response
55
+ */
56
+ export declare function formatRecallResult(result: Awaited<ReturnType<typeof executeRecall>>, verbose?: boolean): string;
57
+ /**
58
+ * Get a single memory by ID
59
+ */
60
+ export declare const getMemorySchema: z.ZodObject<{
61
+ id: z.ZodNumber;
62
+ }, "strip", z.ZodTypeAny, {
63
+ id: number;
64
+ }, {
65
+ id: number;
66
+ }>;
67
+ export declare function executeGetMemory(input: {
68
+ id: number;
69
+ }): {
70
+ success: boolean;
71
+ memory?: Memory;
72
+ error?: string;
73
+ };
74
+ //# sourceMappingURL=recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/tools/recall.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAK1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBvB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA+CD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,MAAM,CAqB7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,EACjD,OAAO,GAAE,OAAe,GACvB,MAAM,CAaR;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAiBA"}