@londer/cortex 0.1.0 → 0.2.1

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 (103) hide show
  1. package/CHANGELOG.md +61 -1
  2. package/README.md +43 -14
  3. package/dist/cli.js +301 -29
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config-store.d.ts.map +1 -1
  6. package/dist/config-store.js +3 -0
  7. package/dist/config-store.js.map +1 -1
  8. package/dist/config.d.ts +5 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +6 -0
  11. package/dist/config.js.map +1 -1
  12. package/dist/extraction/extractor.d.ts +5 -2
  13. package/dist/extraction/extractor.d.ts.map +1 -1
  14. package/dist/extraction/extractor.js +38 -2
  15. package/dist/extraction/extractor.js.map +1 -1
  16. package/dist/extraction/tier25-ollama.d.ts +8 -0
  17. package/dist/extraction/tier25-ollama.d.ts.map +1 -0
  18. package/dist/extraction/tier25-ollama.js +56 -0
  19. package/dist/extraction/tier25-ollama.js.map +1 -0
  20. package/dist/index.js +164 -11
  21. package/dist/index.js.map +1 -1
  22. package/dist/llm/ollama-client.d.ts +39 -0
  23. package/dist/llm/ollama-client.d.ts.map +1 -0
  24. package/dist/llm/ollama-client.js +172 -0
  25. package/dist/llm/ollama-client.js.map +1 -0
  26. package/dist/orchestration/ranker.d.ts +2 -1
  27. package/dist/orchestration/ranker.d.ts.map +1 -1
  28. package/dist/orchestration/ranker.js +11 -1
  29. package/dist/orchestration/ranker.js.map +1 -1
  30. package/dist/orchestration/scope.d.ts +4 -3
  31. package/dist/orchestration/scope.d.ts.map +1 -1
  32. package/dist/orchestration/scope.js +16 -2
  33. package/dist/orchestration/scope.js.map +1 -1
  34. package/dist/portability/dump.d.ts +19 -0
  35. package/dist/portability/dump.d.ts.map +1 -0
  36. package/dist/portability/dump.js +225 -0
  37. package/dist/portability/dump.js.map +1 -0
  38. package/dist/portability/exporter.d.ts +5 -0
  39. package/dist/portability/exporter.d.ts.map +1 -0
  40. package/dist/portability/exporter.js +116 -0
  41. package/dist/portability/exporter.js.map +1 -0
  42. package/dist/portability/importer.d.ts +12 -0
  43. package/dist/portability/importer.d.ts.map +1 -0
  44. package/dist/portability/importer.js +164 -0
  45. package/dist/portability/importer.js.map +1 -0
  46. package/dist/sharing/cross-project.d.ts +15 -0
  47. package/dist/sharing/cross-project.d.ts.map +1 -0
  48. package/dist/sharing/cross-project.js +35 -0
  49. package/dist/sharing/cross-project.js.map +1 -0
  50. package/dist/storage/neo4j.d.ts +1 -0
  51. package/dist/storage/neo4j.d.ts.map +1 -1
  52. package/dist/storage/neo4j.js +10 -0
  53. package/dist/storage/neo4j.js.map +1 -1
  54. package/dist/storage/sqlite.d.ts +50 -1
  55. package/dist/storage/sqlite.d.ts.map +1 -1
  56. package/dist/storage/sqlite.js +276 -3
  57. package/dist/storage/sqlite.js.map +1 -1
  58. package/dist/templates/claude-instructions.d.ts +1 -1
  59. package/dist/templates/claude-instructions.d.ts.map +1 -1
  60. package/dist/templates/claude-instructions.js +6 -1
  61. package/dist/templates/claude-instructions.js.map +1 -1
  62. package/dist/tools/config.d.ts +2 -0
  63. package/dist/tools/config.d.ts.map +1 -1
  64. package/dist/tools/config.js +12 -1
  65. package/dist/tools/config.js.map +1 -1
  66. package/dist/tools/context.d.ts +2 -1
  67. package/dist/tools/context.d.ts.map +1 -1
  68. package/dist/tools/context.js +13 -4
  69. package/dist/tools/context.js.map +1 -1
  70. package/dist/tools/export.d.ts +5 -0
  71. package/dist/tools/export.d.ts.map +1 -0
  72. package/dist/tools/export.js +24 -0
  73. package/dist/tools/export.js.map +1 -0
  74. package/dist/tools/graph-query.d.ts +2 -1
  75. package/dist/tools/graph-query.d.ts.map +1 -1
  76. package/dist/tools/graph-query.js +5 -1
  77. package/dist/tools/graph-query.js.map +1 -1
  78. package/dist/tools/import.d.ts +7 -0
  79. package/dist/tools/import.d.ts.map +1 -0
  80. package/dist/tools/import.js +25 -0
  81. package/dist/tools/import.js.map +1 -0
  82. package/dist/tools/search.d.ts +2 -1
  83. package/dist/tools/search.d.ts.map +1 -1
  84. package/dist/tools/search.js +16 -3
  85. package/dist/tools/search.js.map +1 -1
  86. package/dist/tools/share.d.ts +4 -0
  87. package/dist/tools/share.d.ts.map +1 -0
  88. package/dist/tools/share.js +51 -0
  89. package/dist/tools/share.js.map +1 -0
  90. package/dist/tools/stats.d.ts +5 -0
  91. package/dist/tools/stats.d.ts.map +1 -0
  92. package/dist/tools/stats.js +30 -0
  93. package/dist/tools/stats.js.map +1 -0
  94. package/dist/tools/store.d.ts.map +1 -1
  95. package/dist/tools/store.js +2 -0
  96. package/dist/tools/store.js.map +1 -1
  97. package/dist/tracking/access-tracker.d.ts +36 -0
  98. package/dist/tracking/access-tracker.d.ts.map +1 -0
  99. package/dist/tracking/access-tracker.js +68 -0
  100. package/dist/tracking/access-tracker.js.map +1 -0
  101. package/dist/types/index.d.ts +161 -4
  102. package/dist/types/index.d.ts.map +1 -1
  103. package/package.json +73 -69
@@ -40,6 +40,10 @@ export class SQLiteStore {
40
40
  `);
41
41
  // Phase 2: Add new columns (safe to run multiple times)
42
42
  this.migratePhase2();
43
+ // Phase 3: Access tracking + staleness
44
+ this.migratePhase3();
45
+ // Phase 3: Cross-project sharing
46
+ this.migratePhase3Sharing();
43
47
  }
44
48
  migratePhase2() {
45
49
  // Add new columns if they don't exist
@@ -70,13 +74,278 @@ export class SQLiteStore {
70
74
  );
71
75
  `);
72
76
  }
77
+ migratePhase3() {
78
+ const columns = this.db.pragma('table_info(memories)');
79
+ const existingColumns = new Set(columns.map(c => c.name));
80
+ if (!existingColumns.has('access_count')) {
81
+ this.db.exec(`ALTER TABLE memories ADD COLUMN access_count INTEGER DEFAULT 0`);
82
+ }
83
+ if (!existingColumns.has('last_accessed_at')) {
84
+ this.db.exec(`ALTER TABLE memories ADD COLUMN last_accessed_at DATETIME DEFAULT NULL`);
85
+ }
86
+ if (!existingColumns.has('staleness_score')) {
87
+ this.db.exec(`ALTER TABLE memories ADD COLUMN staleness_score REAL DEFAULT 0.0`);
88
+ }
89
+ this.db.exec(`
90
+ CREATE TABLE IF NOT EXISTS memory_access_log (
91
+ id TEXT PRIMARY KEY,
92
+ memory_id TEXT NOT NULL,
93
+ tool TEXT NOT NULL,
94
+ project TEXT,
95
+ accessed_at DATETIME DEFAULT CURRENT_TIMESTAMP
96
+ );
97
+
98
+ CREATE INDEX IF NOT EXISTS idx_access_log_memory ON memory_access_log(memory_id);
99
+ CREATE INDEX IF NOT EXISTS idx_access_log_accessed ON memory_access_log(accessed_at);
100
+ `);
101
+ }
102
+ migratePhase3Sharing() {
103
+ const columns = this.db.pragma('table_info(memories)');
104
+ const existingColumns = new Set(columns.map(c => c.name));
105
+ if (!existingColumns.has('visibility')) {
106
+ this.db.exec(`ALTER TABLE memories ADD COLUMN visibility TEXT DEFAULT 'project-only'`);
107
+ }
108
+ this.db.exec(`
109
+ CREATE TABLE IF NOT EXISTS project_links (
110
+ project_a TEXT NOT NULL,
111
+ project_b TEXT NOT NULL,
112
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
113
+ PRIMARY KEY (project_a, project_b)
114
+ );
115
+ `);
116
+ }
117
+ linkProjects(projectA, projectB) {
118
+ // Store in alphabetical order for consistent lookups
119
+ const [a, b] = [projectA, projectB].sort();
120
+ const stmt = this.db.prepare(`
121
+ INSERT OR IGNORE INTO project_links (project_a, project_b, created_at)
122
+ VALUES (?, ?, CURRENT_TIMESTAMP)
123
+ `);
124
+ stmt.run(a, b);
125
+ }
126
+ unlinkProjects(projectA, projectB) {
127
+ const [a, b] = [projectA, projectB].sort();
128
+ const stmt = this.db.prepare('DELETE FROM project_links WHERE project_a = ? AND project_b = ?');
129
+ stmt.run(a, b);
130
+ }
131
+ getLinkedProjects(project) {
132
+ const rows = this.db.prepare(`
133
+ SELECT project_a, project_b FROM project_links
134
+ WHERE project_a = ? OR project_b = ?
135
+ `).all(project, project);
136
+ const linked = new Set();
137
+ for (const row of rows) {
138
+ if (row.project_a !== project)
139
+ linked.add(row.project_a);
140
+ if (row.project_b !== project)
141
+ linked.add(row.project_b);
142
+ }
143
+ return Array.from(linked);
144
+ }
145
+ getAllProjectLinks() {
146
+ return this.db.prepare('SELECT * FROM project_links ORDER BY created_at DESC')
147
+ .all();
148
+ }
149
+ updateVisibility(memoryId, visibility) {
150
+ const stmt = this.db.prepare('UPDATE memories SET visibility = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?');
151
+ stmt.run(visibility, memoryId);
152
+ }
153
+ getSharedMemories(project, linkedProjects) {
154
+ if (linkedProjects.length === 0)
155
+ return [];
156
+ const placeholders = linkedProjects.map(() => '?').join(',');
157
+ const stmt = this.db.prepare(`
158
+ SELECT * FROM memories
159
+ WHERE is_deleted = 0
160
+ AND project IN (${placeholders})
161
+ AND visibility IN ('cross-project', 'global')
162
+ ORDER BY created_at DESC LIMIT 20
163
+ `);
164
+ const rows = stmt.all(...linkedProjects);
165
+ return rows.map(row => this.rowToMemory(row));
166
+ }
167
+ getGlobalMemories(limit = 10) {
168
+ const stmt = this.db.prepare(`
169
+ SELECT * FROM memories
170
+ WHERE is_deleted = 0 AND visibility = 'global'
171
+ ORDER BY created_at DESC LIMIT ?
172
+ `);
173
+ return stmt.all(limit).map(row => this.rowToMemory(row));
174
+ }
175
+ getEntitiesAcrossProjects() {
176
+ const rows = this.db.prepare(`
177
+ SELECT entities, project FROM memories
178
+ WHERE is_deleted = 0 AND entities IS NOT NULL AND project IS NOT NULL
179
+ `).all();
180
+ const entityProjects = new Map();
181
+ for (const row of rows) {
182
+ try {
183
+ const entities = JSON.parse(row.entities);
184
+ for (const entity of entities) {
185
+ if (!entityProjects.has(entity)) {
186
+ entityProjects.set(entity, new Set());
187
+ }
188
+ entityProjects.get(entity).add(row.project);
189
+ }
190
+ }
191
+ catch { /* skip invalid */ }
192
+ }
193
+ // Return only entities that appear in 2+ projects
194
+ const results = [];
195
+ for (const [entity, projects] of entityProjects) {
196
+ if (projects.size >= 2) {
197
+ results.push({ entity, projects: Array.from(projects) });
198
+ }
199
+ }
200
+ return results;
201
+ }
202
+ insertAccessLog(entry) {
203
+ const stmt = this.db.prepare(`
204
+ INSERT INTO memory_access_log (id, memory_id, tool, project, accessed_at)
205
+ VALUES (?, ?, ?, ?, ?)
206
+ `);
207
+ stmt.run(entry.id, entry.memory_id, entry.tool, entry.project, entry.accessed_at);
208
+ }
209
+ incrementAccessCount(memoryId) {
210
+ const stmt = this.db.prepare(`
211
+ UPDATE memories
212
+ SET access_count = access_count + 1, last_accessed_at = CURRENT_TIMESTAMP
213
+ WHERE id = ?
214
+ `);
215
+ stmt.run(memoryId);
216
+ }
217
+ updateStalenessScore(memoryId, score) {
218
+ const stmt = this.db.prepare(`
219
+ UPDATE memories SET staleness_score = ? WHERE id = ?
220
+ `);
221
+ stmt.run(score, memoryId);
222
+ }
223
+ getAllMemoriesForStaleness() {
224
+ const rows = this.db.prepare(`
225
+ SELECT id, created_at, access_count, last_accessed_at, entities
226
+ FROM memories WHERE is_deleted = 0
227
+ `).all();
228
+ return rows.map(row => {
229
+ let entityCount = 0;
230
+ try {
231
+ const parsed = JSON.parse(row.entities ?? '[]');
232
+ entityCount = parsed.length;
233
+ }
234
+ catch { /* ignore */ }
235
+ return {
236
+ id: row.id,
237
+ created_at: row.created_at,
238
+ access_count: row.access_count ?? 0,
239
+ last_accessed_at: row.last_accessed_at,
240
+ has_graph_connections: entityCount > 0,
241
+ };
242
+ });
243
+ }
244
+ getMemoryAccessStats(limit = 5) {
245
+ const most = this.db.prepare(`
246
+ SELECT id, content, access_count FROM memories
247
+ WHERE is_deleted = 0
248
+ ORDER BY access_count DESC LIMIT ?
249
+ `).all(limit);
250
+ const least = this.db.prepare(`
251
+ SELECT id, content, access_count FROM memories
252
+ WHERE is_deleted = 0
253
+ ORDER BY access_count ASC LIMIT ?
254
+ `).all(limit);
255
+ return {
256
+ mostAccessed: most.map(r => ({ ...r, access_count: r.access_count ?? 0 })),
257
+ leastAccessed: least.map(r => ({ ...r, access_count: r.access_count ?? 0 })),
258
+ };
259
+ }
260
+ getStaleMemoryCount(threshold = 0.7) {
261
+ const row = this.db.prepare(`
262
+ SELECT COUNT(*) as count FROM memories
263
+ WHERE is_deleted = 0 AND staleness_score >= ?
264
+ `).get(threshold);
265
+ return row.count;
266
+ }
267
+ getAverageStaleness() {
268
+ const row = this.db.prepare(`
269
+ SELECT AVG(staleness_score) as avg FROM memories WHERE is_deleted = 0
270
+ `).get();
271
+ return row.avg ?? 0;
272
+ }
273
+ getMemoryCountByType() {
274
+ const rows = this.db.prepare(`
275
+ SELECT type, COUNT(*) as count FROM memories
276
+ WHERE is_deleted = 0 GROUP BY type
277
+ `).all();
278
+ const result = {};
279
+ for (const row of rows) {
280
+ result[row.type] = row.count;
281
+ }
282
+ return result;
283
+ }
284
+ getMemoryCountByProject() {
285
+ const rows = this.db.prepare(`
286
+ SELECT COALESCE(project, 'global') as project, COUNT(*) as count FROM memories
287
+ WHERE is_deleted = 0 GROUP BY project
288
+ `).all();
289
+ const result = {};
290
+ for (const row of rows) {
291
+ result[row.project] = row.count;
292
+ }
293
+ return result;
294
+ }
295
+ getAllActiveMemories(filters) {
296
+ let query = 'SELECT * FROM memories WHERE is_deleted = 0';
297
+ const params = [];
298
+ if (filters?.project) {
299
+ query += ' AND project = ?';
300
+ params.push(filters.project);
301
+ }
302
+ if (filters?.types && filters.types.length > 0) {
303
+ const placeholders = filters.types.map(() => '?').join(',');
304
+ query += ` AND type IN (${placeholders})`;
305
+ params.push(...filters.types);
306
+ }
307
+ if (filters?.since) {
308
+ query += ' AND created_at >= ?';
309
+ params.push(filters.since);
310
+ }
311
+ if (filters?.minAccess !== undefined) {
312
+ query += ' AND access_count >= ?';
313
+ params.push(filters.minAccess);
314
+ }
315
+ query += ' ORDER BY created_at DESC';
316
+ if (filters?.limit) {
317
+ query += ' LIMIT ?';
318
+ params.push(filters.limit);
319
+ }
320
+ const rows = this.db.prepare(query).all(...params);
321
+ return rows.map(row => this.rowToMemory(row));
322
+ }
323
+ getProjectLinksForProjects(projects) {
324
+ if (projects.length === 0)
325
+ return this.getAllProjectLinks();
326
+ const placeholders = projects.map(() => '?').join(',');
327
+ const stmt = this.db.prepare(`
328
+ SELECT * FROM project_links
329
+ WHERE project_a IN (${placeholders}) OR project_b IN (${placeholders})
330
+ ORDER BY created_at DESC
331
+ `);
332
+ return stmt.all(...projects, ...projects);
333
+ }
334
+ memoryExists(id) {
335
+ const row = this.db.prepare('SELECT 1 FROM memories WHERE id = ? AND is_deleted = 0').get(id);
336
+ return row !== undefined;
337
+ }
338
+ getStalenessScore(memoryId) {
339
+ const row = this.db.prepare('SELECT staleness_score FROM memories WHERE id = ?').get(memoryId);
340
+ return row?.staleness_score ?? 0;
341
+ }
73
342
  insertMemory(memory) {
74
343
  const stmt = this.db.prepare(`
75
344
  INSERT INTO memories (id, content, type, project, tags, entities, source, created_at, updated_at, is_deleted,
76
- source_type, consolidated_from, extraction_confidence, extraction_tier)
77
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
345
+ source_type, consolidated_from, extraction_confidence, extraction_tier, visibility)
346
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
78
347
  `);
79
- stmt.run(memory.id, memory.content, memory.type, memory.project, JSON.stringify(memory.tags), JSON.stringify(memory.entities), memory.source, memory.created_at, memory.updated_at, memory.is_deleted, memory.source_type ?? 'manual', memory.consolidated_from ?? null, memory.extraction_confidence ?? null, memory.extraction_tier ?? null);
348
+ stmt.run(memory.id, memory.content, memory.type, memory.project, JSON.stringify(memory.tags), JSON.stringify(memory.entities), memory.source, memory.created_at, memory.updated_at, memory.is_deleted, memory.source_type ?? 'manual', memory.consolidated_from ?? null, memory.extraction_confidence ?? null, memory.extraction_tier ?? null, memory.visibility ?? 'project-only');
80
349
  }
81
350
  getMemory(id) {
82
351
  const stmt = this.db.prepare('SELECT * FROM memories WHERE id = ? AND is_deleted = 0');
@@ -156,6 +425,10 @@ export class SQLiteStore {
156
425
  consolidated_from: row.consolidated_from ?? null,
157
426
  extraction_confidence: row.extraction_confidence ?? null,
158
427
  extraction_tier: row.extraction_tier ?? null,
428
+ access_count: row.access_count ?? 0,
429
+ last_accessed_at: row.last_accessed_at ?? null,
430
+ staleness_score: row.staleness_score ?? 0,
431
+ visibility: row.visibility ?? 'project-only',
159
432
  };
160
433
  }
161
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,WAAW;IACd,EAAE,CAAoB;IAE9B,YAAY,MAAe;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,UAAU,CAAC;QAC/C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEpC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;KAyBZ,CAAC,CAAC;QAEH,wDAAwD;QACxD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,sCAAsC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAA4B,CAAC;QAClF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACvF,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;KAUZ,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC/B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,IAAI,QAAQ,EAC9B,MAAM,CAAC,iBAAiB,IAAI,IAAI,EAChC,MAAM,CAAC,qBAAqB,IAAI,IAAI,EACpC,MAAM,CAAC,eAAe,IAAI,IAAI,CAC/B,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,EAAU;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,wDAAwD,CACzD,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAwC,CAAC;QAChE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,GAAa;QAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,uCAAuC,YAAY,sBAAsB,CAC1E,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAA8B,CAAC;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,OAAsB,EAAE,KAAa;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,8FAA8F,CAC/F,CAAC;YACF,OAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,8EAA8E,CAC/E,CAAC;QACF,OAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,KAAa;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,8FAA8F,CAC/F,CAAC;QACF,OAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,iFAAiF,CAClF,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,MAAM,aAAa,GAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CACpC,6DAA6D,CAC9D,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAEpC,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC1B,6EAA6E,CAC9E,CAAC,GAAG,EAAiC,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAa,CAAC;gBACtD,KAAK,MAAM,CAAC,IAAI,QAAQ;oBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,kBAAkB,EAAE,CAAC,EAAE,yDAAyD;SACjF,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,KAA4B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;KAG5B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,MAAM,EACZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAChC,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,CACjB,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,GAA4B;QAC9C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,OAAO,EAAE,GAAG,CAAC,OAAiB;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAsB;YAChC,OAAO,EAAG,GAAG,CAAC,OAAkB,IAAI,IAAI;YACxC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,IAAe,IAAI,IAAI,CAAa;YAC1D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAE,GAAG,CAAC,QAAmB,IAAI,IAAI,CAAa;YAClE,MAAM,EAAG,GAAG,CAAC,MAAiB,IAAI,IAAI;YACtC,UAAU,EAAE,GAAG,CAAC,UAAoB;YACpC,UAAU,EAAE,GAAG,CAAC,UAAoB;YACpC,UAAU,EAAE,GAAG,CAAC,UAAoB;YACpC,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,IAAI;YAChD,iBAAiB,EAAG,GAAG,CAAC,iBAA4B,IAAI,IAAI;YAC5D,qBAAqB,EAAG,GAAG,CAAC,qBAAgC,IAAI,IAAI;YACpE,eAAe,EAAG,GAAG,CAAC,eAA0B,IAAI,IAAI;SACzD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,6 @@
6
6
  */
7
7
  export declare const START_MARKER = "<!-- cortex-instructions-start -->";
8
8
  export declare const END_MARKER = "<!-- cortex-instructions-end -->";
9
- export declare const PROJECT_INSTRUCTIONS = "<!-- cortex-instructions-start -->\n## Memory System (Cortex MCP)\n\nYou have access to a persistent memory system called Cortex, connected via MCP. It stores knowledge across sessions and projects. **Use it proactively without being asked.**\n\n### Automatic behaviours\n\n**At the start of every non-trivial task:**\n1. Call `memory_context` with a description of what you're about to do and the current project name.\n2. Read the returned context. Let it inform your approach \u2014 don't ignore it.\n\n**During work, store memories when you encounter:**\n- An architectural or design decision (type: `decision`) \u2014 include the reasoning, not just the outcome.\n- A bug and its root cause (type: `insight`) \u2014 future you will thank past you.\n- A pattern or convention being used in the project (type: `pattern`).\n- A useful code snippet worth reusing (type: `snippet`).\n- A factual piece of project knowledge (type: `fact`).\n- A gotcha, caveat, or non-obvious behaviour (type: `note`).\n\n**When you discover relationships between components:**\n- Call `memory_relate` to connect entities in the knowledge graph.\n- Use meaningful relation types: `DEPENDS_ON`, `USES`, `PART_OF`, `RELATED_TO`, `IMPLEMENTS`, `CALLS`.\n\n### Available tools\n\n| Tool | When to use |\n|------|-------------|\n| `memory_store` | Store a specific piece of knowledge with type, tags, and entities. |\n| `memory_search` | Find memories by semantic similarity. Use when you need specific past knowledge. |\n| `memory_relate` | Connect two entities with a typed relationship. |\n| `memory_graph_query` | Explore what's connected to an entity in the knowledge graph. |\n| `memory_context` | Get the best available context for a task. Call this at the start of work. |\n| `memory_forget` | Remove outdated or incorrect memories. Requires `confirm: true`. |\n| `memory_ingest` | Process a large block of text (meeting notes, docs) into memories. |\n| `memory_consolidate` | Merge redundant memories. Use `dry_run: true` to preview first. |\n| `memory_config` | Check config, storage health, stats. Set API key at runtime. |\n\n### Extraction tiers\n\nCortex extracts entities using a tiered system that adapts to available resources:\n\n- **Tier 1 (Regex):** Always available. Detects snake_case, camelCase, PascalCase identifiers and basic verb patterns.\n- **Tier 2 (NLP):** Always available. Linguistic analysis with embedding similarity for smarter entity and relationship detection.\n- **Tier 3 (LLM):** Requires Anthropic API key. Full semantic understanding of natural language entity names and complex relationships.\n\nThe active tier is selected automatically. Check it with `memory_config({ action: 'get' })`. To unlock Tier 3, set an API key: `memory_config({ action: 'set', key: 'anthropic_api_key', value: 'sk-ant-...' })`.\n\n### What NOT to store\n\n- Code patterns, conventions, architecture, file paths, or project structure \u2014 these can be derived by reading the current project state.\n- Git history, recent changes, or who-changed-what \u2014 `git log` / `git blame` are authoritative.\n- Debugging solutions or fix recipes \u2014 the fix is in the code; the commit message has the context.\n- Anything already documented in CLAUDE.md files.\n- Ephemeral task details: in-progress work, temporary state, current conversation context.\n\n### Memory search before assumptions\n\nIf you're unsure about a project's conventions, past decisions, or how something works \u2014 search Cortex first (`memory_search`), then check the codebase, then ask the user. In that order.\n\n### Always include\n\n- The `project` parameter \u2014 infer it from the current working directory or ask if unclear.\n- Relevant `entities` as snake_case identifiers when storing memories.\n- Meaningful `tags` for discoverability.\n<!-- cortex-instructions-end -->";
9
+ export declare const PROJECT_INSTRUCTIONS = "<!-- cortex-instructions-start -->\n## Memory System (Cortex MCP)\n\nYou have access to a persistent memory system called Cortex, connected via MCP. It stores knowledge across sessions and projects. **Use it proactively without being asked.**\n\n### Automatic behaviours\n\n**At the start of every non-trivial task:**\n1. Call `memory_context` with a description of what you're about to do and the current project name.\n2. Read the returned context. Let it inform your approach \u2014 don't ignore it.\n\n**During work, store memories when you encounter:**\n- An architectural or design decision (type: `decision`) \u2014 include the reasoning, not just the outcome.\n- A bug and its root cause (type: `insight`) \u2014 future you will thank past you.\n- A pattern or convention being used in the project (type: `pattern`).\n- A useful code snippet worth reusing (type: `snippet`).\n- A factual piece of project knowledge (type: `fact`).\n- A gotcha, caveat, or non-obvious behaviour (type: `note`).\n\n**When you discover relationships between components:**\n- Call `memory_relate` to connect entities in the knowledge graph.\n- Use meaningful relation types: `DEPENDS_ON`, `USES`, `PART_OF`, `RELATED_TO`, `IMPLEMENTS`, `CALLS`.\n\n### Available tools\n\n| Tool | When to use |\n|------|-------------|\n| `memory_store` | Store a specific piece of knowledge with type, tags, and entities. |\n| `memory_search` | Find memories by semantic similarity. Use when you need specific past knowledge. |\n| `memory_relate` | Connect two entities with a typed relationship. |\n| `memory_graph_query` | Explore what's connected to an entity in the knowledge graph. |\n| `memory_context` | Get the best available context for a task. Call this at the start of work. |\n| `memory_forget` | Remove outdated or incorrect memories. Requires `confirm: true`. |\n| `memory_ingest` | Process a large block of text (meeting notes, docs) into memories. |\n| `memory_consolidate` | Merge redundant memories. Use `dry_run: true` to preview first. |\n| `memory_config` | Check config, storage health, stats. Set API key at runtime. |\n| `memory_stats` | View aggregate stats: counts by type/project, access patterns, staleness, graph stats. |\n| `memory_share` | Promote memory visibility across projects and link related projects. |\n| `memory_export` | Export memories to portable JSON. Supports filters (project, type, date, access count). |\n| `memory_import` | Import memories from Cortex JSON. Defaults to dry_run. Supports merge mode for dedup. |\n\n### Extraction tiers\n\nCortex extracts entities using a tiered system that adapts to available resources:\n\n- **Tier 1 (Regex):** Always available. Detects snake_case, camelCase, PascalCase identifiers and basic verb patterns.\n- **Tier 2 (NLP):** Always available. Linguistic analysis with embedding similarity for smarter entity and relationship detection.\n- **Tier 2.5 (Ollama):** Requires a local Ollama instance. Local LLM extraction with JSON repair \u2014 good balance of quality and privacy.\n- **Tier 3 (LLM):** Requires Anthropic API key. Full semantic understanding of natural language entity names and complex relationships.\n\nThe active tier is selected automatically (3 \u2192 2.5 \u2192 2 \u2192 1). Check it with `memory_config({ action: 'get' })`. To unlock Tier 3, set an API key: `memory_config({ action: 'set', key: 'anthropic_api_key', value: 'sk-ant-...' })`. To use Ollama: `memory_config({ action: 'set', key: 'ollama_enabled', value: 'true' })`.\n\n### What NOT to store\n\n- Code patterns, conventions, architecture, file paths, or project structure \u2014 these can be derived by reading the current project state.\n- Git history, recent changes, or who-changed-what \u2014 `git log` / `git blame` are authoritative.\n- Debugging solutions or fix recipes \u2014 the fix is in the code; the commit message has the context.\n- Anything already documented in CLAUDE.md files.\n- Ephemeral task details: in-progress work, temporary state, current conversation context.\n\n### Memory search before assumptions\n\nIf you're unsure about a project's conventions, past decisions, or how something works \u2014 search Cortex first (`memory_search`), then check the codebase, then ask the user. In that order.\n\n### Always include\n\n- The `project` parameter \u2014 infer it from the current working directory or ask if unclear.\n- Relevant `entities` as snake_case identifiers when storing memories.\n- Meaningful `tags` for discoverability.\n<!-- cortex-instructions-end -->";
10
10
  export declare const GLOBAL_INSTRUCTIONS = "<!-- cortex-instructions-start -->\n## Memory System (Cortex)\n\nYou have access to a persistent memory system called Cortex, connected via MCP. It stores knowledge across sessions and projects. **Use it proactively without being asked.**\n\n### Automatic behaviours\n\n**At the start of every non-trivial task:**\n1. Call `memory_context` with a description of what you're about to do and the current project name.\n2. Read the returned context. Let it inform your approach \u2014 don't ignore it.\n\n**During work, store memories when you encounter:**\n- An architectural or design decision (type: `decision`) \u2014 include the reasoning, not just the outcome.\n- A bug and its root cause (type: `insight`) \u2014 future you will thank past you.\n- A pattern or convention being used in the project (type: `pattern`).\n- A useful code snippet worth reusing (type: `snippet`).\n- A factual piece of project knowledge (type: `fact`).\n- A gotcha, caveat, or non-obvious behaviour (type: `note`).\n\n**When you discover relationships between components:**\n- Call `memory_relate` to connect entities in the knowledge graph.\n- Use meaningful relation types: `DEPENDS_ON`, `USES`, `PART_OF`, `RELATED_TO`, `IMPLEMENTS`, `CALLS`.\n\n### What NOT to store\n- Trivial information (file listed, routine shell commands).\n- Information already in the codebase (don't duplicate what's in README, package.json, etc.).\n- Temporary debugging steps that won't matter tomorrow.\n\n### Always include\n- The `project` parameter \u2014 infer it from the current working directory or ask if unclear.\n- Relevant `entities` as snake_case identifiers.\n- Meaningful `tags` for discoverability.\n\n### Memory search before assumptions\nIf you're unsure about a project's conventions, past decisions, or how something works \u2014 search Cortex first (`memory_search`), then check the codebase, then ask the user. In that order.\n<!-- cortex-instructions-end -->";
11
11
  //# sourceMappingURL=claude-instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-instructions.d.ts","sourceRoot":"","sources":["../../src/templates/claude-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,uCAAuC,CAAC;AACjE,eAAO,MAAM,UAAU,qCAAqC,CAAC;AAE7D,eAAO,MAAM,oBAAoB,+wHAgEnB,CAAC;AAEf,eAAO,MAAM,mBAAmB,65DAmClB,CAAC"}
1
+ {"version":3,"file":"claude-instructions.d.ts","sourceRoot":"","sources":["../../src/templates/claude-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY,uCAAuC,CAAC;AACjE,eAAO,MAAM,UAAU,qCAAqC,CAAC;AAE7D,eAAO,MAAM,oBAAoB,27IAqEnB,CAAC;AAEf,eAAO,MAAM,mBAAmB,65DAmClB,CAAC"}
@@ -42,6 +42,10 @@ You have access to a persistent memory system called Cortex, connected via MCP.
42
42
  | \`memory_ingest\` | Process a large block of text (meeting notes, docs) into memories. |
43
43
  | \`memory_consolidate\` | Merge redundant memories. Use \`dry_run: true\` to preview first. |
44
44
  | \`memory_config\` | Check config, storage health, stats. Set API key at runtime. |
45
+ | \`memory_stats\` | View aggregate stats: counts by type/project, access patterns, staleness, graph stats. |
46
+ | \`memory_share\` | Promote memory visibility across projects and link related projects. |
47
+ | \`memory_export\` | Export memories to portable JSON. Supports filters (project, type, date, access count). |
48
+ | \`memory_import\` | Import memories from Cortex JSON. Defaults to dry_run. Supports merge mode for dedup. |
45
49
 
46
50
  ### Extraction tiers
47
51
 
@@ -49,9 +53,10 @@ Cortex extracts entities using a tiered system that adapts to available resource
49
53
 
50
54
  - **Tier 1 (Regex):** Always available. Detects snake_case, camelCase, PascalCase identifiers and basic verb patterns.
51
55
  - **Tier 2 (NLP):** Always available. Linguistic analysis with embedding similarity for smarter entity and relationship detection.
56
+ - **Tier 2.5 (Ollama):** Requires a local Ollama instance. Local LLM extraction with JSON repair — good balance of quality and privacy.
52
57
  - **Tier 3 (LLM):** Requires Anthropic API key. Full semantic understanding of natural language entity names and complex relationships.
53
58
 
54
- The active tier is selected automatically. Check it with \`memory_config({ action: 'get' })\`. To unlock Tier 3, set an API key: \`memory_config({ action: 'set', key: 'anthropic_api_key', value: 'sk-ant-...' })\`.
59
+ The active tier is selected automatically (3 → 2.5 → 2 → 1). Check it with \`memory_config({ action: 'get' })\`. To unlock Tier 3, set an API key: \`memory_config({ action: 'set', key: 'anthropic_api_key', value: 'sk-ant-...' })\`. To use Ollama: \`memory_config({ action: 'set', key: 'ollama_enabled', value: 'true' })\`.
55
60
 
56
61
  ### What NOT to store
57
62
 
@@ -1 +1 @@
1
- {"version":3,"file":"claude-instructions.js","sourceRoot":"","sources":["../../src/templates/claude-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,oCAAoC,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,kCAAkC,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgEjD,UAAU,EAAE,CAAC;AAEf,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmChD,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"claude-instructions.js","sourceRoot":"","sources":["../../src/templates/claude-instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,oCAAoC,CAAC;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,kCAAkC,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEjD,UAAU,EAAE,CAAC;AAEf,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmChD,UAAU,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { MemoryConfigInput, MemoryConfigOutput } from '../types/index.js';
2
2
  import type { RuntimeConfigStore } from '../config-store.js';
3
3
  import type { AnthropicClient } from '../llm/anthropic-client.js';
4
+ import type { OllamaClient } from '../llm/ollama-client.js';
4
5
  import type { EntityExtractor } from '../extraction/extractor.js';
5
6
  import type { SQLiteStore } from '../storage/sqlite.js';
6
7
  import type { QdrantStore } from '../storage/qdrant.js';
@@ -10,6 +11,7 @@ import type { CortexConfig } from '../config.js';
10
11
  export interface ConfigToolDeps {
11
12
  configStore: RuntimeConfigStore;
12
13
  llmClient: AnthropicClient;
14
+ ollamaClient: OllamaClient;
13
15
  extractor: EntityExtractor;
14
16
  sqlite: SQLiteStore;
15
17
  qdrant: QdrantStore;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAkB,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAgB7B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAkB,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAgB7B"}
@@ -14,7 +14,7 @@ export async function handleMemoryConfig(args, deps) {
14
14
  return { config: null, error: `Unknown action: ${args.action}` };
15
15
  }
16
16
  async function getConfig(deps) {
17
- const { llmClient, extractor, sqlite, qdrant, neo4j, baseConfig } = deps;
17
+ const { llmClient, ollamaClient, extractor, sqlite, qdrant, neo4j, baseConfig } = deps;
18
18
  // Check storage connectivity
19
19
  let qdrantStatus = 'disconnected';
20
20
  let neo4jStatus = 'disconnected';
@@ -35,6 +35,10 @@ async function getConfig(deps) {
35
35
  config: {
36
36
  llm_available: llmClient.isAvailable(),
37
37
  llm_model: llmClient.isAvailable() ? llmClient.getModel() : null,
38
+ ollama_available: ollamaClient.isAvailable(),
39
+ ollama_enabled: ollamaClient.isEnabled(),
40
+ ollama_model: ollamaClient.isEnabled() ? ollamaClient.getModel() : null,
41
+ ollama_url: ollamaClient.isEnabled() ? ollamaClient.getUrl() : null,
38
42
  extraction_tier: baseConfig.extractionTier,
39
43
  active_extraction_tier: extractor.getActiveTier(),
40
44
  auto_extract: baseConfig.autoExtract,
@@ -72,6 +76,13 @@ async function setConfig(key, value, deps) {
72
76
  };
73
77
  }
74
78
  }
79
+ // Special handling for Ollama config
80
+ if (key === 'ollama_enabled') {
81
+ deps.ollamaClient.setEnabled(value !== 'false');
82
+ }
83
+ if (key === 'ollama_model') {
84
+ deps.ollamaClient.setModel(value);
85
+ }
75
86
  // Special handling for extraction tier
76
87
  if (key === 'extraction_tier') {
77
88
  const validTiers = ['auto', 'local-only', 'llm-preferred'];
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ import type { SQLiteStore } from '../storage/sqlite.js';
4
4
  import type { QdrantStore } from '../storage/qdrant.js';
5
5
  import type { Neo4jStore } from '../storage/neo4j.js';
6
6
  import type { EntityExtractor } from '../extraction/extractor.js';
7
- export declare function handleMemoryContext(args: MemoryContextInput, embedder: Embedder, sqlite: SQLiteStore, qdrant: QdrantStore, neo4j: Neo4jStore, currentProject?: string, extractor?: EntityExtractor): Promise<MemoryContextOutput>;
7
+ import type { AccessTracker } from '../tracking/access-tracker.js';
8
+ export declare function handleMemoryContext(args: MemoryContextInput, embedder: Embedder, sqlite: SQLiteStore, qdrant: QdrantStore, neo4j: Neo4jStore, currentProject?: string, extractor?: EntityExtractor, accessTracker?: AccessTracker): Promise<MemoryContextOutput>;
8
9
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA4E9B"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,eAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAwF9B"}
@@ -1,5 +1,5 @@
1
1
  import { mergeAndRank, formatContext } from '../orchestration/ranker.js';
2
- export async function handleMemoryContext(args, embedder, sqlite, qdrant, neo4j, currentProject, extractor) {
2
+ export async function handleMemoryContext(args, embedder, sqlite, qdrant, neo4j, currentProject, extractor, accessTracker) {
3
3
  const project = args.project ?? currentProject ?? null;
4
4
  const maxTokens = args.max_tokens ?? 2000;
5
5
  // 1. Semantic search (Tier 1)
@@ -47,10 +47,15 @@ export async function handleMemoryContext(args, embedder, sqlite, qdrant, neo4j,
47
47
  // Entity doesn't exist in graph — that's fine
48
48
  }
49
49
  }
50
- // 3. Recent memories (Tier 3)
50
+ // 3. Recent memories (Tier 3) — include shared memories from linked projects
51
51
  const recentMemories = sqlite.getRecentMemories(project, 10);
52
- // 4. Merge, rank, deduplicate
53
- const { ranked } = mergeAndRank(semanticResults, graphMemories, recentMemories, project, undefined, maxTokens);
52
+ const linkedProjects = project ? sqlite.getLinkedProjects(project) : [];
53
+ const sharedMemories = project ? sqlite.getSharedMemories(project, linkedProjects) : [];
54
+ const globalMemories = sqlite.getGlobalMemories(5);
55
+ // Combine recent with shared/global (dedup happens in mergeAndRank)
56
+ const allRecent = [...recentMemories, ...sharedMemories, ...globalMemories];
57
+ // 4. Merge, rank, deduplicate (pass sqlite for staleness penalty)
58
+ const { ranked } = mergeAndRank(semanticResults, graphMemories, allRecent, project, linkedProjects.length > 0 ? linkedProjects : undefined, maxTokens, sqlite);
54
59
  // 5. Format as context block
55
60
  const context = formatContext(ranked);
56
61
  // 6. Build sources list
@@ -59,6 +64,10 @@ export async function handleMemoryContext(args, embedder, sqlite, qdrant, neo4j,
59
64
  type: r.sourceType,
60
65
  score: r.score,
61
66
  }));
67
+ // Log access for all returned sources
68
+ if (accessTracker && sources.length > 0) {
69
+ accessTracker.logAccess(sources.map(s => s.id), 'memory_context', project);
70
+ }
62
71
  return { context, sources };
63
72
  }
64
73
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAwB,EACxB,QAAkB,EAClB,MAAmB,EACnB,MAAmB,EACnB,KAAiB,EACjB,cAAuB,EACvB,SAA2B,EAC3B,aAA6B;IAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,IAAI,IAAI,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAE1C,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAEnE,mDAAmD;IACnD,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,uFAAuF;IACvF,IAAI,WAAqB,CAAC;IAC1B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;QACnF,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,aAAa,GAA0D,EAAE,CAAC;IAChF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEzF,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACtC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACxB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,GAAG,EAAE,CAAC;wBACR,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAEnD,oEAAoE;IACpE,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;IAE5E,kEAAkE;IAClE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAC7B,eAAe,EACf,aAAa,EACb,SAAS,EACT,OAAO,EACP,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EACtD,SAAS,EACT,MAAM,CACP,CAAC;IAEF,6BAA6B;IAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtC,wBAAwB;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,UAAU;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CAAC,CAAC;IAEJ,sCAAsC;IACtC,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAG;QACf,gCAAgC;QAChC,4BAA4B;QAC5B,oCAAoC;KACrC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SQLiteStore } from '../storage/sqlite.js';
2
+ import type { Neo4jStore } from '../storage/neo4j.js';
3
+ import type { MemoryExportInput, MemoryExportOutput } from '../types/index.js';
4
+ export declare function handleMemoryExport(args: MemoryExportInput, sqlite: SQLiteStore, neo4j: Neo4jStore): Promise<MemoryExportOutput>;
5
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAc,MAAM,mBAAmB,CAAC;AAK3F,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAuB7B"}
@@ -0,0 +1,24 @@
1
+ import { exportMemories } from '../portability/exporter.js';
2
+ const DEFAULT_LIMIT = 100;
3
+ export async function handleMemoryExport(args, sqlite, neo4j) {
4
+ const limit = args.limit ?? DEFAULT_LIMIT;
5
+ const exportData = await exportMemories(sqlite, neo4j, {
6
+ project: args.project,
7
+ types: args.types,
8
+ since: args.since,
9
+ min_access: args.min_access,
10
+ });
11
+ // Check if we need to truncate
12
+ let truncated = false;
13
+ if (exportData.data.memories.length > limit) {
14
+ exportData.data.memories = exportData.data.memories.slice(0, limit);
15
+ exportData.stats.memories = limit;
16
+ truncated = true;
17
+ }
18
+ return {
19
+ data: JSON.stringify(exportData),
20
+ stats: exportData.stats,
21
+ truncated,
22
+ };
23
+ }
24
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/tools/export.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAuB,EACvB,MAAmB,EACnB,KAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;IAE1C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;QACrD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAiC;QAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC;IAEH,+BAA+B;IAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QAC5C,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpE,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAClC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAChC,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { MemoryGraphQueryInput, MemoryGraphQueryOutput } from '../types/index.js';
2
2
  import type { Neo4jStore } from '../storage/neo4j.js';
3
3
  import type { SQLiteStore } from '../storage/sqlite.js';
4
- export declare function handleMemoryGraphQuery(args: MemoryGraphQueryInput, neo4j: Neo4jStore, sqlite: SQLiteStore): Promise<MemoryGraphQueryOutput>;
4
+ import type { AccessTracker } from '../tracking/access-tracker.js';
5
+ export declare function handleMemoryGraphQuery(args: MemoryGraphQueryInput, neo4j: Neo4jStore, sqlite: SQLiteStore, accessTracker?: AccessTracker): Promise<MemoryGraphQueryOutput>;
5
6
  //# sourceMappingURL=graph-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/tools/graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAiB,MAAM,mBAAmB,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA2CjC"}
1
+ {"version":3,"file":"graph-query.d.ts","sourceRoot":"","sources":["../../src/tools/graph-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAiB,MAAM,mBAAmB,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAgDjC"}