@londer/cortex 0.1.0 → 0.2.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/CHANGELOG.md +30 -1
- package/README.md +43 -14
- package/dist/cli.js +139 -29
- package/dist/cli.js.map +1 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +3 -0
- package/dist/config-store.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/extraction/extractor.d.ts +5 -2
- package/dist/extraction/extractor.d.ts.map +1 -1
- package/dist/extraction/extractor.js +38 -2
- package/dist/extraction/extractor.js.map +1 -1
- package/dist/extraction/tier25-ollama.d.ts +8 -0
- package/dist/extraction/tier25-ollama.d.ts.map +1 -0
- package/dist/extraction/tier25-ollama.js +56 -0
- package/dist/extraction/tier25-ollama.js.map +1 -0
- package/dist/index.js +115 -10
- package/dist/index.js.map +1 -1
- package/dist/llm/ollama-client.d.ts +39 -0
- package/dist/llm/ollama-client.d.ts.map +1 -0
- package/dist/llm/ollama-client.js +172 -0
- package/dist/llm/ollama-client.js.map +1 -0
- package/dist/orchestration/ranker.d.ts +2 -1
- package/dist/orchestration/ranker.d.ts.map +1 -1
- package/dist/orchestration/ranker.js +11 -1
- package/dist/orchestration/ranker.js.map +1 -1
- package/dist/orchestration/scope.d.ts +4 -3
- package/dist/orchestration/scope.d.ts.map +1 -1
- package/dist/orchestration/scope.js +16 -2
- package/dist/orchestration/scope.js.map +1 -1
- package/dist/sharing/cross-project.d.ts +15 -0
- package/dist/sharing/cross-project.d.ts.map +1 -0
- package/dist/sharing/cross-project.js +35 -0
- package/dist/sharing/cross-project.js.map +1 -0
- package/dist/storage/neo4j.d.ts +1 -0
- package/dist/storage/neo4j.d.ts.map +1 -1
- package/dist/storage/neo4j.js +10 -0
- package/dist/storage/neo4j.js.map +1 -1
- package/dist/storage/sqlite.d.ts +41 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +233 -3
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/templates/claude-instructions.d.ts +1 -1
- package/dist/templates/claude-instructions.d.ts.map +1 -1
- package/dist/templates/claude-instructions.js +2 -1
- package/dist/templates/claude-instructions.js.map +1 -1
- package/dist/tools/config.d.ts +2 -0
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +12 -1
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/context.d.ts +2 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +13 -4
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/graph-query.d.ts +2 -1
- package/dist/tools/graph-query.d.ts.map +1 -1
- package/dist/tools/graph-query.js +5 -1
- package/dist/tools/graph-query.js.map +1 -1
- package/dist/tools/search.d.ts +2 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +16 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/share.d.ts +4 -0
- package/dist/tools/share.d.ts.map +1 -0
- package/dist/tools/share.js +51 -0
- package/dist/tools/share.js.map +1 -0
- package/dist/tools/stats.d.ts +5 -0
- package/dist/tools/stats.d.ts.map +1 -0
- package/dist/tools/stats.js +30 -0
- package/dist/tools/stats.js.map +1 -0
- package/dist/tools/store.d.ts.map +1 -1
- package/dist/tools/store.js +2 -0
- package/dist/tools/store.js.map +1 -1
- package/dist/tracking/access-tracker.d.ts +36 -0
- package/dist/tracking/access-tracker.d.ts.map +1 -0
- package/dist/tracking/access-tracker.js +68 -0
- package/dist/tracking/access-tracker.js.map +1 -0
- package/dist/types/index.d.ts +63 -4
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +73 -69
package/dist/storage/sqlite.js
CHANGED
|
@@ -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,235 @@ 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
|
+
getStalenessScore(memoryId) {
|
|
296
|
+
const row = this.db.prepare('SELECT staleness_score FROM memories WHERE id = ?').get(memoryId);
|
|
297
|
+
return row?.staleness_score ?? 0;
|
|
298
|
+
}
|
|
73
299
|
insertMemory(memory) {
|
|
74
300
|
const stmt = this.db.prepare(`
|
|
75
301
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
302
|
+
source_type, consolidated_from, extraction_confidence, extraction_tier, visibility)
|
|
303
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
78
304
|
`);
|
|
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);
|
|
305
|
+
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
306
|
}
|
|
81
307
|
getMemory(id) {
|
|
82
308
|
const stmt = this.db.prepare('SELECT * FROM memories WHERE id = ? AND is_deleted = 0');
|
|
@@ -156,6 +382,10 @@ export class SQLiteStore {
|
|
|
156
382
|
consolidated_from: row.consolidated_from ?? null,
|
|
157
383
|
extraction_confidence: row.extraction_confidence ?? null,
|
|
158
384
|
extraction_tier: row.extraction_tier ?? null,
|
|
385
|
+
access_count: row.access_count ?? 0,
|
|
386
|
+
last_accessed_at: row.last_accessed_at ?? null,
|
|
387
|
+
staleness_score: row.staleness_score ?? 0,
|
|
388
|
+
visibility: row.visibility ?? 'project-only',
|
|
159
389
|
};
|
|
160
390
|
}
|
|
161
391
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
|
|
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\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
|
|
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,uhIAiEnB,CAAC;AAEf,eAAO,MAAM,mBAAmB,65DAmClB,CAAC"}
|
|
@@ -49,9 +49,10 @@ Cortex extracts entities using a tiered system that adapts to available resource
|
|
|
49
49
|
|
|
50
50
|
- **Tier 1 (Regex):** Always available. Detects snake_case, camelCase, PascalCase identifiers and basic verb patterns.
|
|
51
51
|
- **Tier 2 (NLP):** Always available. Linguistic analysis with embedding similarity for smarter entity and relationship detection.
|
|
52
|
+
- **Tier 2.5 (Ollama):** Requires a local Ollama instance. Local LLM extraction with JSON repair — good balance of quality and privacy.
|
|
52
53
|
- **Tier 3 (LLM):** Requires Anthropic API key. Full semantic understanding of natural language entity names and complex relationships.
|
|
53
54
|
|
|
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-...' })\`.
|
|
55
|
+
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
56
|
|
|
56
57
|
### What NOT to store
|
|
57
58
|
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEjD,UAAU,EAAE,CAAC;AAEf,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmChD,UAAU,EAAE,CAAC"}
|
package/dist/tools/config.d.ts
CHANGED
|
@@ -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"}
|
package/dist/tools/config.js
CHANGED
|
@@ -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'];
|
package/dist/tools/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/context.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/tools/context.js
CHANGED
|
@@ -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
|
-
|
|
53
|
-
const
|
|
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":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export async function handleMemoryGraphQuery(args, neo4j, sqlite) {
|
|
1
|
+
export async function handleMemoryGraphQuery(args, neo4j, sqlite, accessTracker) {
|
|
2
2
|
const depth = Math.min(args.depth ?? 2, 4);
|
|
3
3
|
// 1. Traverse the graph from the starting entity
|
|
4
4
|
const graphResult = await neo4j.traverse(args.entity, depth, args.relation_types, args.project);
|
|
@@ -26,6 +26,10 @@ export async function handleMemoryGraphQuery(args, neo4j, sqlite) {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
// Log access for returned memories
|
|
30
|
+
if (accessTracker && relatedMemories.length > 0) {
|
|
31
|
+
accessTracker.logAccess(relatedMemories.map(m => m.id), 'memory_graph_query', args.project ?? null);
|
|
32
|
+
}
|
|
29
33
|
return {
|
|
30
34
|
entity: args.entity,
|
|
31
35
|
connections: graphResult.connections,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-query.js","sourceRoot":"","sources":["../../src/tools/graph-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-query.js","sourceRoot":"","sources":["../../src/tools/graph-query.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA2B,EAC3B,KAAiB,EACjB,MAAmB,EACnB,aAA6B;IAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3C,iDAAiD;IACjD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CACtC,IAAI,CAAC,MAAM,EACX,KAAK,EACL,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CACb,CAAC;IAEF,wDAAwD;IACxD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QAC3C,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,mDAAmD;IACnD,MAAM,eAAe,GAAoB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC/D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACvC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEzB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAG,EAAE,CAAC;gBACR,eAAe,CAAC,IAAI,CAAC;oBACnB,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,aAAa,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,gBAAgB,EAAE,eAAe;KAClC,CAAC;AACJ,CAAC"}
|
package/dist/tools/search.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ import type { MemorySearchInput, MemorySearchOutput } from '../types/index.js';
|
|
|
2
2
|
import type { Embedder } from '../embedding/embedder.js';
|
|
3
3
|
import type { SQLiteStore } from '../storage/sqlite.js';
|
|
4
4
|
import type { QdrantStore } from '../storage/qdrant.js';
|
|
5
|
-
|
|
5
|
+
import type { AccessTracker } from '../tracking/access-tracker.js';
|
|
6
|
+
export declare function handleMemorySearch(args: MemorySearchInput, embedder: Embedder, sqlite: SQLiteStore, qdrant: QdrantStore, currentProject?: string, accessTracker?: AccessTracker): Promise<MemorySearchOutput>;
|
|
6
7
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CA8D7B"}
|
package/dist/tools/search.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { inferScopeTier } from '../orchestration/scope.js';
|
|
2
|
-
export async function handleMemorySearch(args, embedder, sqlite, qdrant, currentProject) {
|
|
2
|
+
export async function handleMemorySearch(args, embedder, sqlite, qdrant, currentProject, accessTracker) {
|
|
3
3
|
const limit = args.limit ?? 10;
|
|
4
4
|
const project = args.project ?? currentProject ?? null;
|
|
5
5
|
// 1. Embed the query
|
|
@@ -17,13 +17,22 @@ export async function handleMemorySearch(args, embedder, sqlite, qdrant, current
|
|
|
17
17
|
const ids = qdrantResults.map(r => r.id);
|
|
18
18
|
const memories = sqlite.getMemoriesByIds(ids);
|
|
19
19
|
const memoryMap = new Map(memories.map(m => [m.id, m]));
|
|
20
|
-
// 5.
|
|
20
|
+
// 5. Get linked projects for cross-project scope boosting
|
|
21
|
+
const linkedProjects = project ? sqlite.getLinkedProjects(project) : [];
|
|
22
|
+
// 6. Apply scope boosting and merge (respecting visibility)
|
|
21
23
|
const results = qdrantResults
|
|
22
24
|
.map(r => {
|
|
23
25
|
const mem = memoryMap.get(r.id);
|
|
24
26
|
if (!mem)
|
|
25
27
|
return null;
|
|
26
|
-
|
|
28
|
+
// Filter: project-only memories should not appear outside their project
|
|
29
|
+
if (mem.visibility === 'project-only' &&
|
|
30
|
+
project &&
|
|
31
|
+
mem.project !== project &&
|
|
32
|
+
mem.project !== null) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const boost = inferScopeTier(mem.project, project, linkedProjects, mem.visibility);
|
|
27
36
|
return {
|
|
28
37
|
id: mem.id,
|
|
29
38
|
content: mem.content,
|
|
@@ -38,6 +47,10 @@ export async function handleMemorySearch(args, embedder, sqlite, qdrant, current
|
|
|
38
47
|
.filter((r) => r !== null)
|
|
39
48
|
.sort((a, b) => b.score - a.score)
|
|
40
49
|
.slice(0, limit);
|
|
50
|
+
// Log access for returned results
|
|
51
|
+
if (accessTracker && results.length > 0) {
|
|
52
|
+
accessTracker.logAccess(results.map(r => r.id), 'memory_search', project);
|
|
53
|
+
}
|
|
41
54
|
return { results };
|
|
42
55
|
}
|
|
43
56
|
//# sourceMappingURL=search.js.map
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|