@aitytech/agentkits-memory 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.
- package/README.md +250 -0
- package/dist/cache-manager.d.ts +134 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-manager.js +407 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/cli/save.d.ts +20 -0
- package/dist/cli/save.d.ts.map +1 -0
- package/dist/cli/save.js +94 -0
- package/dist/cli/save.js.map +1 -0
- package/dist/cli/setup.d.ts +18 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +163 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/viewer.d.ts +21 -0
- package/dist/cli/viewer.d.ts.map +1 -0
- package/dist/cli/viewer.js +182 -0
- package/dist/cli/viewer.js.map +1 -0
- package/dist/hnsw-index.d.ts +111 -0
- package/dist/hnsw-index.d.ts.map +1 -0
- package/dist/hnsw-index.js +781 -0
- package/dist/hnsw-index.js.map +1 -0
- package/dist/hooks/cli.d.ts +20 -0
- package/dist/hooks/cli.d.ts.map +1 -0
- package/dist/hooks/cli.js +102 -0
- package/dist/hooks/cli.js.map +1 -0
- package/dist/hooks/context.d.ts +31 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +64 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/index.d.ts +16 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +20 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/observation.d.ts +30 -0
- package/dist/hooks/observation.d.ts.map +1 -0
- package/dist/hooks/observation.js +79 -0
- package/dist/hooks/observation.js.map +1 -0
- package/dist/hooks/service.d.ts +102 -0
- package/dist/hooks/service.d.ts.map +1 -0
- package/dist/hooks/service.js +454 -0
- package/dist/hooks/service.js.map +1 -0
- package/dist/hooks/session-init.d.ts +30 -0
- package/dist/hooks/session-init.d.ts.map +1 -0
- package/dist/hooks/session-init.js +54 -0
- package/dist/hooks/session-init.js.map +1 -0
- package/dist/hooks/summarize.d.ts +30 -0
- package/dist/hooks/summarize.d.ts.map +1 -0
- package/dist/hooks/summarize.js +74 -0
- package/dist/hooks/summarize.js.map +1 -0
- package/dist/hooks/types.d.ts +193 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +137 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +173 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +564 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +9 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +22 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +368 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +14 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +110 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +100 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +9 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/migration.d.ts +77 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +457 -0
- package/dist/migration.js.map +1 -0
- package/dist/sqljs-backend.d.ts +128 -0
- package/dist/sqljs-backend.d.ts.map +1 -0
- package/dist/sqljs-backend.js +623 -0
- package/dist/sqljs-backend.js.map +1 -0
- package/dist/types.d.ts +481 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +73 -0
- package/dist/types.js.map +1 -0
- package/hooks.json +46 -0
- package/package.json +67 -0
- package/src/__tests__/index.test.ts +407 -0
- package/src/__tests__/sqljs-backend.test.ts +410 -0
- package/src/cache-manager.ts +515 -0
- package/src/cli/save.ts +109 -0
- package/src/cli/setup.ts +203 -0
- package/src/cli/viewer.ts +218 -0
- package/src/hnsw-index.ts +1013 -0
- package/src/hooks/__tests__/handlers.test.ts +298 -0
- package/src/hooks/__tests__/integration.test.ts +431 -0
- package/src/hooks/__tests__/service.test.ts +487 -0
- package/src/hooks/__tests__/types.test.ts +341 -0
- package/src/hooks/cli.ts +121 -0
- package/src/hooks/context.ts +77 -0
- package/src/hooks/index.ts +23 -0
- package/src/hooks/observation.ts +102 -0
- package/src/hooks/service.ts +582 -0
- package/src/hooks/session-init.ts +70 -0
- package/src/hooks/summarize.ts +89 -0
- package/src/hooks/types.ts +365 -0
- package/src/index.ts +755 -0
- package/src/mcp/__tests__/server.test.ts +181 -0
- package/src/mcp/index.ts +9 -0
- package/src/mcp/server.ts +441 -0
- package/src/mcp/tools.ts +113 -0
- package/src/mcp/types.ts +109 -0
- package/src/migration.ts +574 -0
- package/src/sql.js.d.ts +70 -0
- package/src/sqljs-backend.ts +789 -0
- package/src/types.ts +715 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @agentkits/memory - Project-Scoped Memory System
|
|
3
|
+
*
|
|
4
|
+
* Provides persistent memory for Claude Code sessions within a project.
|
|
5
|
+
* Stores data in .claude/memory/memory.db using SQLite with optional
|
|
6
|
+
* HNSW vector indexing for semantic search.
|
|
7
|
+
*
|
|
8
|
+
* @module @agentkits/memory
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { ProjectMemoryService } from '@agentkits/memory';
|
|
13
|
+
*
|
|
14
|
+
* // Initialize memory for current project
|
|
15
|
+
* const memory = new ProjectMemoryService('.claude/memory');
|
|
16
|
+
* await memory.initialize();
|
|
17
|
+
*
|
|
18
|
+
* // Store an entry
|
|
19
|
+
* await memory.store({
|
|
20
|
+
* key: 'auth-pattern',
|
|
21
|
+
* content: 'Use JWT with refresh tokens for authentication',
|
|
22
|
+
* namespace: 'patterns',
|
|
23
|
+
* tags: ['auth', 'security'],
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Query entries
|
|
27
|
+
* const patterns = await memory.query({
|
|
28
|
+
* type: 'hybrid',
|
|
29
|
+
* namespace: 'patterns',
|
|
30
|
+
* tags: ['auth'],
|
|
31
|
+
* limit: 10,
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Semantic search (if embeddings enabled)
|
|
35
|
+
* const similar = await memory.semanticSearch('how to authenticate users', 5);
|
|
36
|
+
*
|
|
37
|
+
* // Session management
|
|
38
|
+
* await memory.startSession();
|
|
39
|
+
* await memory.checkpoint('Completed authentication setup');
|
|
40
|
+
* await memory.endSession('Successfully implemented auth');
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
import { EventEmitter } from 'node:events';
|
|
44
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
45
|
+
import * as path from 'node:path';
|
|
46
|
+
import { createDefaultEntry, generateSessionId, DEFAULT_NAMESPACES, } from './types.js';
|
|
47
|
+
import { SqlJsBackend } from './sqljs-backend.js';
|
|
48
|
+
import { CacheManager } from './cache-manager.js';
|
|
49
|
+
import { HNSWIndex } from './hnsw-index.js';
|
|
50
|
+
import { migrateMarkdownMemory } from './migration.js';
|
|
51
|
+
// Re-export types
|
|
52
|
+
export * from './types.js';
|
|
53
|
+
export { SqlJsBackend } from './sqljs-backend.js';
|
|
54
|
+
export { CacheManager, TieredCacheManager } from './cache-manager.js';
|
|
55
|
+
export { HNSWIndex } from './hnsw-index.js';
|
|
56
|
+
export { MemoryMigrator, migrateMarkdownMemory } from './migration.js';
|
|
57
|
+
/**
|
|
58
|
+
* Default configuration
|
|
59
|
+
*/
|
|
60
|
+
const DEFAULT_CONFIG = {
|
|
61
|
+
baseDir: '.claude/memory',
|
|
62
|
+
dbFilename: 'memory.db',
|
|
63
|
+
enableVectorIndex: false, // Disabled by default for performance
|
|
64
|
+
dimensions: 384, // Local model dimensions (e.g., all-MiniLM-L6-v2)
|
|
65
|
+
cacheEnabled: true,
|
|
66
|
+
cacheSize: 1000,
|
|
67
|
+
cacheTtl: 300000, // 5 minutes
|
|
68
|
+
autoPersistInterval: 10000, // 10 seconds
|
|
69
|
+
maxEntries: 100000,
|
|
70
|
+
verbose: false,
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Project-Scoped Memory Service
|
|
74
|
+
*
|
|
75
|
+
* High-level interface for project memory that provides:
|
|
76
|
+
* - Persistent storage in .claude/memory/memory.db
|
|
77
|
+
* - Session tracking and checkpoints
|
|
78
|
+
* - Optional semantic search with HNSW indexing
|
|
79
|
+
* - Migration from existing markdown files
|
|
80
|
+
* - Backward-compatible markdown exports
|
|
81
|
+
*/
|
|
82
|
+
export class ProjectMemoryService extends EventEmitter {
|
|
83
|
+
config;
|
|
84
|
+
backend;
|
|
85
|
+
cache = null;
|
|
86
|
+
vectorIndex = null;
|
|
87
|
+
initialized = false;
|
|
88
|
+
currentSession = null;
|
|
89
|
+
constructor(baseDirOrConfig = {}) {
|
|
90
|
+
super();
|
|
91
|
+
// Handle string (baseDir) or config object
|
|
92
|
+
const configInput = typeof baseDirOrConfig === 'string'
|
|
93
|
+
? { baseDir: baseDirOrConfig }
|
|
94
|
+
: baseDirOrConfig;
|
|
95
|
+
this.config = { ...DEFAULT_CONFIG, ...configInput };
|
|
96
|
+
// Ensure directory exists
|
|
97
|
+
if (!existsSync(this.config.baseDir)) {
|
|
98
|
+
mkdirSync(this.config.baseDir, { recursive: true });
|
|
99
|
+
}
|
|
100
|
+
// Initialize backend
|
|
101
|
+
const dbPath = path.join(this.config.baseDir, this.config.dbFilename);
|
|
102
|
+
this.backend = new SqlJsBackend({
|
|
103
|
+
databasePath: dbPath,
|
|
104
|
+
autoPersistInterval: this.config.autoPersistInterval,
|
|
105
|
+
maxEntries: this.config.maxEntries,
|
|
106
|
+
verbose: this.config.verbose,
|
|
107
|
+
});
|
|
108
|
+
// Initialize cache if enabled
|
|
109
|
+
if (this.config.cacheEnabled) {
|
|
110
|
+
this.cache = new CacheManager({
|
|
111
|
+
maxSize: this.config.cacheSize,
|
|
112
|
+
ttl: this.config.cacheTtl,
|
|
113
|
+
lruEnabled: true,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
// Initialize vector index if enabled
|
|
117
|
+
if (this.config.enableVectorIndex) {
|
|
118
|
+
this.vectorIndex = new HNSWIndex({
|
|
119
|
+
dimensions: this.config.dimensions,
|
|
120
|
+
M: 16,
|
|
121
|
+
efConstruction: 200,
|
|
122
|
+
maxElements: this.config.maxEntries,
|
|
123
|
+
metric: 'cosine',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// Forward backend events
|
|
127
|
+
this.backend.on('entry:stored', (data) => this.emit('entry:stored', data));
|
|
128
|
+
this.backend.on('entry:updated', (data) => this.emit('entry:updated', data));
|
|
129
|
+
this.backend.on('entry:deleted', (data) => this.emit('entry:deleted', data));
|
|
130
|
+
this.backend.on('persisted', (data) => this.emit('persisted', data));
|
|
131
|
+
}
|
|
132
|
+
// ===== Lifecycle =====
|
|
133
|
+
async initialize() {
|
|
134
|
+
if (this.initialized)
|
|
135
|
+
return;
|
|
136
|
+
await this.backend.initialize();
|
|
137
|
+
// Rebuild vector index from existing embeddings
|
|
138
|
+
if (this.vectorIndex) {
|
|
139
|
+
await this.rebuildVectorIndex();
|
|
140
|
+
}
|
|
141
|
+
this.initialized = true;
|
|
142
|
+
this.emit('initialized', { dbPath: path.join(this.config.baseDir, this.config.dbFilename) });
|
|
143
|
+
}
|
|
144
|
+
async shutdown() {
|
|
145
|
+
if (!this.initialized)
|
|
146
|
+
return;
|
|
147
|
+
// End session if active
|
|
148
|
+
if (this.currentSession) {
|
|
149
|
+
await this.endSession('Session ended by shutdown');
|
|
150
|
+
}
|
|
151
|
+
// Shutdown components
|
|
152
|
+
if (this.cache) {
|
|
153
|
+
this.cache.shutdown();
|
|
154
|
+
}
|
|
155
|
+
await this.backend.shutdown();
|
|
156
|
+
this.initialized = false;
|
|
157
|
+
this.emit('shutdown');
|
|
158
|
+
}
|
|
159
|
+
// ===== IMemoryBackend Implementation =====
|
|
160
|
+
async store(entry) {
|
|
161
|
+
this.ensureInitialized();
|
|
162
|
+
// Generate embedding if enabled and not present
|
|
163
|
+
if (this.config.embeddingGenerator && !entry.embedding) {
|
|
164
|
+
try {
|
|
165
|
+
entry.embedding = await this.config.embeddingGenerator(entry.content);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
if (this.config.verbose) {
|
|
169
|
+
console.warn(`Failed to generate embedding: ${error.message}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Add session ID if session active
|
|
174
|
+
if (this.currentSession && !entry.sessionId) {
|
|
175
|
+
entry.sessionId = this.currentSession.id;
|
|
176
|
+
}
|
|
177
|
+
// Store in backend
|
|
178
|
+
await this.backend.store(entry);
|
|
179
|
+
// Update cache
|
|
180
|
+
if (this.cache) {
|
|
181
|
+
this.cache.set(entry.id, entry);
|
|
182
|
+
this.cache.set(`${entry.namespace}:${entry.key}`, entry);
|
|
183
|
+
}
|
|
184
|
+
// Add to vector index
|
|
185
|
+
if (this.vectorIndex && entry.embedding) {
|
|
186
|
+
await this.vectorIndex.addPoint(entry.id, entry.embedding);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async get(id) {
|
|
190
|
+
this.ensureInitialized();
|
|
191
|
+
// Check cache first
|
|
192
|
+
if (this.cache) {
|
|
193
|
+
const cached = this.cache.get(id);
|
|
194
|
+
if (cached)
|
|
195
|
+
return cached;
|
|
196
|
+
}
|
|
197
|
+
const entry = await this.backend.get(id);
|
|
198
|
+
// Update cache
|
|
199
|
+
if (entry && this.cache) {
|
|
200
|
+
this.cache.set(id, entry);
|
|
201
|
+
}
|
|
202
|
+
return entry;
|
|
203
|
+
}
|
|
204
|
+
async getByKey(namespace, key) {
|
|
205
|
+
this.ensureInitialized();
|
|
206
|
+
const cacheKey = `${namespace}:${key}`;
|
|
207
|
+
// Check cache first
|
|
208
|
+
if (this.cache) {
|
|
209
|
+
const cached = this.cache.get(cacheKey);
|
|
210
|
+
if (cached)
|
|
211
|
+
return cached;
|
|
212
|
+
}
|
|
213
|
+
const entry = await this.backend.getByKey(namespace, key);
|
|
214
|
+
// Update cache
|
|
215
|
+
if (entry && this.cache) {
|
|
216
|
+
this.cache.set(cacheKey, entry);
|
|
217
|
+
this.cache.set(entry.id, entry);
|
|
218
|
+
}
|
|
219
|
+
return entry;
|
|
220
|
+
}
|
|
221
|
+
async update(id, update) {
|
|
222
|
+
this.ensureInitialized();
|
|
223
|
+
const updated = await this.backend.update(id, update);
|
|
224
|
+
if (updated) {
|
|
225
|
+
// Regenerate embedding if content changed
|
|
226
|
+
if (update.content && this.config.embeddingGenerator) {
|
|
227
|
+
try {
|
|
228
|
+
updated.embedding = await this.config.embeddingGenerator(updated.content);
|
|
229
|
+
await this.backend.store(updated);
|
|
230
|
+
// Update vector index
|
|
231
|
+
if (this.vectorIndex && updated.embedding) {
|
|
232
|
+
await this.vectorIndex.removePoint(id);
|
|
233
|
+
await this.vectorIndex.addPoint(id, updated.embedding);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Ignore embedding errors
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Update cache
|
|
241
|
+
if (this.cache) {
|
|
242
|
+
this.cache.set(id, updated);
|
|
243
|
+
this.cache.set(`${updated.namespace}:${updated.key}`, updated);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return updated;
|
|
247
|
+
}
|
|
248
|
+
async delete(id) {
|
|
249
|
+
this.ensureInitialized();
|
|
250
|
+
const entry = await this.get(id);
|
|
251
|
+
if (!entry)
|
|
252
|
+
return false;
|
|
253
|
+
const result = await this.backend.delete(id);
|
|
254
|
+
if (result) {
|
|
255
|
+
// Remove from cache
|
|
256
|
+
if (this.cache) {
|
|
257
|
+
this.cache.delete(id);
|
|
258
|
+
this.cache.delete(`${entry.namespace}:${entry.key}`);
|
|
259
|
+
}
|
|
260
|
+
// Remove from vector index
|
|
261
|
+
if (this.vectorIndex) {
|
|
262
|
+
await this.vectorIndex.removePoint(id);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
async query(query) {
|
|
268
|
+
this.ensureInitialized();
|
|
269
|
+
return this.backend.query(query);
|
|
270
|
+
}
|
|
271
|
+
async search(embedding, options) {
|
|
272
|
+
this.ensureInitialized();
|
|
273
|
+
if (this.vectorIndex) {
|
|
274
|
+
// Use HNSW index for fast search
|
|
275
|
+
const results = await this.vectorIndex.search(embedding, options.k);
|
|
276
|
+
// Fetch full entries and apply threshold
|
|
277
|
+
const searchResults = [];
|
|
278
|
+
for (const { id, distance } of results) {
|
|
279
|
+
const entry = await this.get(id);
|
|
280
|
+
if (entry) {
|
|
281
|
+
const score = 1 - distance; // Convert distance to similarity
|
|
282
|
+
if (!options.threshold || score >= options.threshold) {
|
|
283
|
+
searchResults.push({ entry, score, distance });
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return searchResults;
|
|
288
|
+
}
|
|
289
|
+
// Fallback to brute-force search in backend
|
|
290
|
+
return this.backend.search(embedding, options);
|
|
291
|
+
}
|
|
292
|
+
async bulkInsert(entries) {
|
|
293
|
+
this.ensureInitialized();
|
|
294
|
+
for (const entry of entries) {
|
|
295
|
+
await this.store(entry);
|
|
296
|
+
}
|
|
297
|
+
this.emit('bulk:inserted', { count: entries.length });
|
|
298
|
+
}
|
|
299
|
+
async bulkDelete(ids) {
|
|
300
|
+
this.ensureInitialized();
|
|
301
|
+
let count = 0;
|
|
302
|
+
for (const id of ids) {
|
|
303
|
+
const success = await this.delete(id);
|
|
304
|
+
if (success)
|
|
305
|
+
count++;
|
|
306
|
+
}
|
|
307
|
+
return count;
|
|
308
|
+
}
|
|
309
|
+
async count(namespace) {
|
|
310
|
+
this.ensureInitialized();
|
|
311
|
+
return this.backend.count(namespace);
|
|
312
|
+
}
|
|
313
|
+
async listNamespaces() {
|
|
314
|
+
this.ensureInitialized();
|
|
315
|
+
return this.backend.listNamespaces();
|
|
316
|
+
}
|
|
317
|
+
async clearNamespace(namespace) {
|
|
318
|
+
this.ensureInitialized();
|
|
319
|
+
// Clear from cache
|
|
320
|
+
if (this.cache) {
|
|
321
|
+
this.cache.invalidatePattern(new RegExp(`^${namespace}:`));
|
|
322
|
+
}
|
|
323
|
+
return this.backend.clearNamespace(namespace);
|
|
324
|
+
}
|
|
325
|
+
async getStats() {
|
|
326
|
+
this.ensureInitialized();
|
|
327
|
+
const stats = await this.backend.getStats();
|
|
328
|
+
// Add HNSW stats if available
|
|
329
|
+
if (this.vectorIndex) {
|
|
330
|
+
stats.hnswStats = this.vectorIndex.getStats();
|
|
331
|
+
}
|
|
332
|
+
// Add cache stats if available
|
|
333
|
+
if (this.cache) {
|
|
334
|
+
stats.cacheStats = this.cache.getStats();
|
|
335
|
+
}
|
|
336
|
+
return stats;
|
|
337
|
+
}
|
|
338
|
+
async healthCheck() {
|
|
339
|
+
this.ensureInitialized();
|
|
340
|
+
return this.backend.healthCheck();
|
|
341
|
+
}
|
|
342
|
+
// ===== Convenience Methods =====
|
|
343
|
+
/**
|
|
344
|
+
* Store an entry from simple input
|
|
345
|
+
*/
|
|
346
|
+
async storeEntry(input) {
|
|
347
|
+
const entry = createDefaultEntry(input);
|
|
348
|
+
await this.store(entry);
|
|
349
|
+
return entry;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Semantic search by content string
|
|
353
|
+
*/
|
|
354
|
+
async semanticSearch(content, k = 10, threshold) {
|
|
355
|
+
if (!this.config.embeddingGenerator) {
|
|
356
|
+
throw new Error('Embedding generator not configured. Cannot perform semantic search.');
|
|
357
|
+
}
|
|
358
|
+
const embedding = await this.config.embeddingGenerator(content);
|
|
359
|
+
return this.search(embedding, { k, threshold });
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get entries by namespace (convenience method)
|
|
363
|
+
*/
|
|
364
|
+
async getByNamespace(namespace, limit = 100) {
|
|
365
|
+
return this.query({
|
|
366
|
+
type: 'hybrid',
|
|
367
|
+
namespace,
|
|
368
|
+
limit,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Get or create an entry
|
|
373
|
+
*/
|
|
374
|
+
async getOrCreate(namespace, key, creator) {
|
|
375
|
+
const existing = await this.getByKey(namespace, key);
|
|
376
|
+
if (existing)
|
|
377
|
+
return existing;
|
|
378
|
+
const input = await creator();
|
|
379
|
+
return this.storeEntry({ ...input, namespace, key });
|
|
380
|
+
}
|
|
381
|
+
// ===== Session Management =====
|
|
382
|
+
/**
|
|
383
|
+
* Start a new session
|
|
384
|
+
*/
|
|
385
|
+
async startSession() {
|
|
386
|
+
const session = {
|
|
387
|
+
id: generateSessionId(),
|
|
388
|
+
startedAt: Date.now(),
|
|
389
|
+
status: 'active',
|
|
390
|
+
};
|
|
391
|
+
this.currentSession = session;
|
|
392
|
+
// Store session info
|
|
393
|
+
await this.storeEntry({
|
|
394
|
+
key: `session:${session.id}`,
|
|
395
|
+
content: JSON.stringify(session),
|
|
396
|
+
type: 'episodic',
|
|
397
|
+
namespace: DEFAULT_NAMESPACES.SESSION,
|
|
398
|
+
tags: ['session', 'active'],
|
|
399
|
+
metadata: { sessionId: session.id },
|
|
400
|
+
});
|
|
401
|
+
this.emit('session:started', session);
|
|
402
|
+
return session;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Get current session
|
|
406
|
+
*/
|
|
407
|
+
getCurrentSession() {
|
|
408
|
+
return this.currentSession;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Create a checkpoint in current session
|
|
412
|
+
*/
|
|
413
|
+
async checkpoint(description) {
|
|
414
|
+
if (!this.currentSession) {
|
|
415
|
+
throw new Error('No active session. Call startSession() first.');
|
|
416
|
+
}
|
|
417
|
+
this.currentSession.lastCheckpoint = description;
|
|
418
|
+
await this.storeEntry({
|
|
419
|
+
key: `checkpoint:${this.currentSession.id}:${Date.now()}`,
|
|
420
|
+
content: description,
|
|
421
|
+
type: 'episodic',
|
|
422
|
+
namespace: DEFAULT_NAMESPACES.SESSION,
|
|
423
|
+
tags: ['checkpoint'],
|
|
424
|
+
metadata: {
|
|
425
|
+
sessionId: this.currentSession.id,
|
|
426
|
+
timestamp: Date.now(),
|
|
427
|
+
},
|
|
428
|
+
});
|
|
429
|
+
this.emit('session:checkpoint', { session: this.currentSession, description });
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* End current session
|
|
433
|
+
*/
|
|
434
|
+
async endSession(summary) {
|
|
435
|
+
if (!this.currentSession)
|
|
436
|
+
return null;
|
|
437
|
+
this.currentSession.endedAt = Date.now();
|
|
438
|
+
this.currentSession.summary = summary;
|
|
439
|
+
this.currentSession.status = 'completed';
|
|
440
|
+
// Update session entry
|
|
441
|
+
const sessionEntry = await this.getByKey(DEFAULT_NAMESPACES.SESSION, `session:${this.currentSession.id}`);
|
|
442
|
+
if (sessionEntry) {
|
|
443
|
+
await this.update(sessionEntry.id, {
|
|
444
|
+
content: JSON.stringify(this.currentSession),
|
|
445
|
+
tags: ['session', 'completed'],
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
const endedSession = { ...this.currentSession };
|
|
449
|
+
this.currentSession = null;
|
|
450
|
+
this.emit('session:ended', endedSession);
|
|
451
|
+
return endedSession;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Get recent sessions
|
|
455
|
+
*/
|
|
456
|
+
async getRecentSessions(limit = 10) {
|
|
457
|
+
const entries = await this.query({
|
|
458
|
+
type: 'hybrid',
|
|
459
|
+
namespace: DEFAULT_NAMESPACES.SESSION,
|
|
460
|
+
tags: ['session'],
|
|
461
|
+
limit,
|
|
462
|
+
});
|
|
463
|
+
return entries
|
|
464
|
+
.map((e) => {
|
|
465
|
+
try {
|
|
466
|
+
return JSON.parse(e.content);
|
|
467
|
+
}
|
|
468
|
+
catch {
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
})
|
|
472
|
+
.filter((s) => s !== null);
|
|
473
|
+
}
|
|
474
|
+
// ===== Migration =====
|
|
475
|
+
/**
|
|
476
|
+
* Migrate from existing markdown memory files
|
|
477
|
+
*/
|
|
478
|
+
async migrateFromMarkdown(options = {}) {
|
|
479
|
+
this.ensureInitialized();
|
|
480
|
+
const result = await migrateMarkdownMemory(this.config.baseDir, async (entry) => this.store(entry), {
|
|
481
|
+
generateEmbeddings: options.generateEmbeddings ?? false,
|
|
482
|
+
});
|
|
483
|
+
this.emit('migration:completed', result);
|
|
484
|
+
return result;
|
|
485
|
+
}
|
|
486
|
+
// ===== Export =====
|
|
487
|
+
/**
|
|
488
|
+
* Export namespace to markdown (for git-friendly backup)
|
|
489
|
+
*/
|
|
490
|
+
async exportToMarkdown(namespace, outputPath) {
|
|
491
|
+
const entries = await this.getByNamespace(namespace);
|
|
492
|
+
const filePath = outputPath || path.join(this.config.baseDir, `${namespace}.md`);
|
|
493
|
+
let markdown = `---\nnamespace: ${namespace}\nexported: ${new Date().toISOString()}\nentries: ${entries.length}\n---\n\n`;
|
|
494
|
+
for (const entry of entries) {
|
|
495
|
+
markdown += `## ${entry.key}\n\n`;
|
|
496
|
+
markdown += entry.content;
|
|
497
|
+
markdown += '\n\n';
|
|
498
|
+
if (entry.tags.length > 0) {
|
|
499
|
+
markdown += `*Tags: ${entry.tags.join(', ')}*\n\n`;
|
|
500
|
+
}
|
|
501
|
+
markdown += '---\n\n';
|
|
502
|
+
}
|
|
503
|
+
writeFileSync(filePath, markdown, 'utf-8');
|
|
504
|
+
return filePath;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Export all namespaces to markdown
|
|
508
|
+
*/
|
|
509
|
+
async exportAllToMarkdown() {
|
|
510
|
+
const namespaces = await this.listNamespaces();
|
|
511
|
+
const files = [];
|
|
512
|
+
for (const namespace of namespaces) {
|
|
513
|
+
const file = await this.exportToMarkdown(namespace);
|
|
514
|
+
files.push(file);
|
|
515
|
+
}
|
|
516
|
+
return files;
|
|
517
|
+
}
|
|
518
|
+
// ===== Private Methods =====
|
|
519
|
+
ensureInitialized() {
|
|
520
|
+
if (!this.initialized) {
|
|
521
|
+
throw new Error('ProjectMemoryService not initialized. Call initialize() first.');
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
async rebuildVectorIndex() {
|
|
525
|
+
if (!this.vectorIndex)
|
|
526
|
+
return;
|
|
527
|
+
// Get all entries with embeddings
|
|
528
|
+
const entries = await this.query({
|
|
529
|
+
type: 'hybrid',
|
|
530
|
+
limit: this.config.maxEntries,
|
|
531
|
+
});
|
|
532
|
+
const entriesWithEmbeddings = entries.filter((e) => e.embedding);
|
|
533
|
+
if (entriesWithEmbeddings.length > 0) {
|
|
534
|
+
await this.vectorIndex.rebuild(entriesWithEmbeddings.map((e) => ({
|
|
535
|
+
id: e.id,
|
|
536
|
+
vector: e.embedding,
|
|
537
|
+
})));
|
|
538
|
+
if (this.config.verbose) {
|
|
539
|
+
console.log(`Rebuilt vector index with ${entriesWithEmbeddings.length} entries`);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
// ===== Factory Functions =====
|
|
545
|
+
/**
|
|
546
|
+
* Create a memory service for the current project
|
|
547
|
+
*/
|
|
548
|
+
export function createProjectMemory(baseDir = '.claude/memory', options = {}) {
|
|
549
|
+
return new ProjectMemoryService({ baseDir, ...options });
|
|
550
|
+
}
|
|
551
|
+
/**
|
|
552
|
+
* Create a memory service with embedding support
|
|
553
|
+
*/
|
|
554
|
+
export function createEmbeddingMemory(baseDir, embeddingGenerator, dimensions = 384) {
|
|
555
|
+
return new ProjectMemoryService({
|
|
556
|
+
baseDir,
|
|
557
|
+
embeddingGenerator,
|
|
558
|
+
dimensions,
|
|
559
|
+
enableVectorIndex: true,
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
// Default export
|
|
563
|
+
export default ProjectMemoryService;
|
|
564
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* AgentKits Memory MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Model Context Protocol server for Claude Code memory access.
|
|
6
|
+
* Provides tools for saving, searching, and recalling memories.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* Add to .mcp.json:
|
|
10
|
+
* {
|
|
11
|
+
* "mcpServers": {
|
|
12
|
+
* "memory": {
|
|
13
|
+
* "command": "npx",
|
|
14
|
+
* "args": ["agentkits-memory-server"]
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* @module @agentkits/memory/mcp/server
|
|
20
|
+
*/
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG"}
|