fastrmemory 0.3.0 → 0.3.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 (63) hide show
  1. package/.claude-plugin/marketplace.json +14 -14
  2. package/.claude-plugin/plugin.json +18 -18
  3. package/.cursor/mcp.json +3 -1
  4. package/.cursor/skills/fastr-compress/SKILL.md +33 -33
  5. package/.cursor/skills/fastr-curate/SKILL.md +62 -62
  6. package/.cursor/skills/fastr-dag/SKILL.md +47 -47
  7. package/.cursor/skills/fastr-doctor/SKILL.md +39 -39
  8. package/.cursor/skills/fastr-memory/SKILL.md +51 -51
  9. package/.cursor/skills/fastr-plan-estimate/SKILL.md +45 -45
  10. package/.cursor/skills/fastr-session-commit/SKILL.md +49 -49
  11. package/.cursor/skills/fastr-setup/SKILL.md +45 -45
  12. package/.cursor/skills/fastr-trap-log/SKILL.md +39 -39
  13. package/.cursor/skills/fastr-vision/SKILL.md +35 -35
  14. package/.cursor/skills/skills.json +65 -65
  15. package/README.md +727 -729
  16. package/bin/fastr-guard.mjs +61 -0
  17. package/dist/bin/fastr.js +10 -9
  18. package/dist/bin/fastr.js.map +1 -1
  19. package/dist/src/bench/benchmark.js +13 -13
  20. package/dist/src/bench/harness.js +17 -17
  21. package/dist/src/bench/public-harness.js +5 -5
  22. package/dist/src/branch/manager.js +31 -31
  23. package/dist/src/ci/guardian.js +9 -9
  24. package/dist/src/db/doctor.js +25 -25
  25. package/dist/src/db/hygiene.js +23 -23
  26. package/dist/src/db/repository.js +283 -283
  27. package/dist/src/db/schema.js +268 -268
  28. package/dist/src/db/spool.js +4 -4
  29. package/dist/src/export/obsidian.js +15 -15
  30. package/dist/src/import/local.js +4 -4
  31. package/dist/src/installer/setup.d.ts +2 -0
  32. package/dist/src/installer/setup.d.ts.map +1 -1
  33. package/dist/src/installer/setup.js +24 -18
  34. package/dist/src/installer/setup.js.map +1 -1
  35. package/dist/src/mcp/server.js +25 -25
  36. package/dist/src/mirror/markdown-pages.js +22 -22
  37. package/dist/src/search/backfill.js +6 -6
  38. package/dist/src/search/hybrid-rrf.js +60 -60
  39. package/dist/src/ui/server.js +1259 -1259
  40. package/dist/src/vision/assets.js +6 -6
  41. package/dist-ui/assets/ActionsPage-B3quzFNF.js +11 -11
  42. package/dist-ui/assets/GraphPage-DetiATmC.js +1 -1
  43. package/dist-ui/assets/ObservatoryPage-QIGMwENf.js +16 -16
  44. package/dist-ui/assets/TreemapPage-C7uLZd37.js +2 -2
  45. package/dist-ui/assets/index-BJnPINTu.css +1 -1
  46. package/dist-ui/assets/index-DWAH--Fu.js +329 -329
  47. package/dist-ui/assets/maximize-2-BebkGbZA.js +6 -6
  48. package/dist-ui/build-manifest.json +95 -95
  49. package/dist-ui/index.html +26 -26
  50. package/llms-install.md +69 -69
  51. package/package.json +108 -107
  52. package/server.json +28 -28
  53. package/skills/fastr-compress/SKILL.md +33 -33
  54. package/skills/fastr-curate/SKILL.md +62 -62
  55. package/skills/fastr-dag/SKILL.md +47 -47
  56. package/skills/fastr-doctor/SKILL.md +39 -39
  57. package/skills/fastr-memory/SKILL.md +51 -51
  58. package/skills/fastr-plan-estimate/SKILL.md +45 -45
  59. package/skills/fastr-session-commit/SKILL.md +49 -49
  60. package/skills/fastr-setup/SKILL.md +45 -45
  61. package/skills/fastr-trap-log/SKILL.md +39 -39
  62. package/skills/fastr-vision/SKILL.md +35 -35
  63. package/skills/skills.json +65 -65
@@ -7,15 +7,15 @@ import { PACKAGE_VERSION } from '../version.js';
7
7
  import { updateJsonConfig, upsertMcpServer } from './json-config.js';
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
- export const AGENTS_DISCIPLINE_BLOCK = `
11
- <!-- fastrmemory:start -->
12
- ## ⚡ FastrMemory Autonomous Agent Discipline
13
-
14
- Every AI coding agent operating in this repository MUST follow these 3 cognitive rules:
15
- 1. **Pre-Edit Error Check**: Before editing or creating files, call \`fastr_trap_recall\` with your target file paths to check for active \`[TRAP]\` warnings.
16
- 2. **Immediate Trap Logging**: The moment you diagnose a test failure, syntax bug, or library incompatibility, call \`fastr_trap_log\` to save the lesson with a 2.0x recall boost.
17
- 3. **Session Verification**: When milestones are completed, call \`fastr_handoff\` with \`verifyStaging: true\` to graduate staging memories into verified rules.
18
- <!-- fastrmemory:end -->
10
+ export const AGENTS_DISCIPLINE_BLOCK = `
11
+ <!-- fastrmemory:start -->
12
+ ## ⚡ FastrMemory Autonomous Agent Discipline
13
+
14
+ Every AI coding agent operating in this repository MUST follow these 3 cognitive rules:
15
+ 1. **Pre-Edit Error Check**: Before editing or creating files, call \`fastr_trap_recall\` with your target file paths to check for active \`[TRAP]\` warnings.
16
+ 2. **Immediate Trap Logging**: The moment you diagnose a test failure, syntax bug, or library incompatibility, call \`fastr_trap_log\` to save the lesson with a 2.0x recall boost.
17
+ 3. **Session Verification**: When milestones are completed, call \`fastr_handoff\` with \`verifyStaging: true\` to graduate staging memories into verified rules.
18
+ <!-- fastrmemory:end -->
19
19
  `;
20
20
  export function getAntigravityConfigPath(homeDir = os.homedir()) {
21
21
  return path.join(homeDir, '.gemini', 'antigravity', 'mcp_config.json');
@@ -60,6 +60,10 @@ export function resolveMcpCommand(platform = process.platform, cliPath = findOwn
60
60
  ? { command: 'cmd', args: ['/c', 'npx', ...npxArgs] }
61
61
  : { command: 'npx', args: npxArgs };
62
62
  }
63
+ /** Pin a user-scoped MCP entry to a project root so the client's launch directory cannot change the database. */
64
+ export function withProjectRoot(entry, projectRoot) {
65
+ return { ...entry, args: [...entry.args, '--project', path.resolve(projectRoot)] };
66
+ }
63
67
  function wireMcpClient(target, entry) {
64
68
  if (target.requireDir && !fs.existsSync(target.requireDir)) {
65
69
  return 'Skipped (not installed)';
@@ -85,7 +89,7 @@ export function ensureAgentsDiscipline(projectRoot) {
85
89
  }
86
90
  export function runInteractiveSetup(options = {}) {
87
91
  const homeDir = options.homeDir ?? os.homedir();
88
- const projectRoot = options.projectRoot ?? process.cwd();
92
+ const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
89
93
  console.log('\n=================================================');
90
94
  console.log('⚡ FastrMemory: Interactive Agent Setup Wizard');
91
95
  console.log(' High-Performance Cognitive Agent Memory Engine');
@@ -101,20 +105,22 @@ export function runInteractiveSetup(options = {}) {
101
105
  catch (err) {
102
106
  console.log(`[1/8] Project init note: ${err.message}\n`);
103
107
  }
104
- const mcpTarget = resolveMcpCommand();
108
+ const projectMcpTarget = resolveMcpCommand();
109
+ const globalMcpTarget = withProjectRoot(projectMcpTarget, projectRoot);
105
110
  const antigravityPath = getAntigravityConfigPath(homeDir);
106
111
  const claudeDesktopPath = getClaudeDesktopConfigPath(homeDir);
107
112
  // 2-6. Wire MCP clients. Existing configs are merged (never replaced), backed up once, and written atomically.
113
+ // User-scoped clients get an explicit --project so their launch directory cannot select the wrong database.
108
114
  const clients = [
109
- ['[2/8] Antigravity IDE:', { label: 'Antigravity', filePath: antigravityPath, requireDir: path.dirname(path.dirname(antigravityPath)) }],
110
- ['[3/8] Claude Desktop: ', { label: 'Claude Desktop', filePath: claudeDesktopPath, requireDir: path.dirname(claudeDesktopPath) }],
111
- ['[4/8] Cursor IDE: ', { label: 'Cursor', filePath: path.join(projectRoot, '.cursor', 'mcp.json') }],
115
+ ['[2/8] Antigravity IDE:', { label: 'Antigravity', filePath: antigravityPath, requireDir: path.dirname(path.dirname(antigravityPath)) }, globalMcpTarget],
116
+ ['[3/8] Claude Desktop: ', { label: 'Claude Desktop', filePath: claudeDesktopPath, requireDir: path.dirname(claudeDesktopPath) }, globalMcpTarget],
117
+ ['[4/8] Cursor IDE: ', { label: 'Cursor', filePath: path.join(projectRoot, '.cursor', 'mcp.json') }, projectMcpTarget],
112
118
  // Claude Code reads user-scoped MCP servers from ~/.claude.json (it ignores mcpServers in settings.json).
113
- ['[5/8] Claude Code: ', { label: 'Claude Code', filePath: path.join(homeDir, '.claude.json'), requireDir: path.join(homeDir, '.claude') }],
114
- ['[6/8] Windsurf: ', { label: 'Windsurf', filePath: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'), requireDir: path.join(homeDir, '.codeium', 'windsurf') }],
119
+ ['[5/8] Claude Code: ', { label: 'Claude Code', filePath: path.join(homeDir, '.claude.json'), requireDir: path.join(homeDir, '.claude') }, globalMcpTarget],
120
+ ['[6/8] Windsurf: ', { label: 'Windsurf', filePath: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'), requireDir: path.join(homeDir, '.codeium', 'windsurf') }, globalMcpTarget],
115
121
  ];
116
- for (const [prefix, target] of clients) {
117
- console.log(`${prefix} ${wireMcpClient(target, mcpTarget)}`);
122
+ for (const [prefix, target, entry] of clients) {
123
+ console.log(`${prefix} ${wireMcpClient(target, entry)}`);
118
124
  }
119
125
  // 7. Wire Autonomous Agent Discipline in AGENTS.md
120
126
  let agentStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/installer/setup.ts"],"names":[],"mappings":"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"}
@@ -1345,17 +1345,17 @@ export function createFastrMcpServer(context, options = {}) {
1345
1345
  const graphTable = mem.project_id === 'global' && repo.hasGlobalDb()
1346
1346
  ? 'global_db.graph_edges'
1347
1347
  : 'graph_edges';
1348
- const graphEdges = db.prepare(`
1349
- SELECT id, source_id, target_id, edge_type, weight, created_at
1350
- FROM ${graphTable}
1351
- WHERE project_id = ? AND (source_id = ? OR target_id = ?)
1352
- ORDER BY created_at ASC
1348
+ const graphEdges = db.prepare(`
1349
+ SELECT id, source_id, target_id, edge_type, weight, created_at
1350
+ FROM ${graphTable}
1351
+ WHERE project_id = ? AND (source_id = ? OR target_id = ?)
1352
+ ORDER BY created_at ASC
1353
1353
  `).all(mem.project_id, mem.id, mem.id);
1354
- const conflictRows = db.prepare(`
1355
- SELECT *
1356
- FROM memory_conflicts
1357
- WHERE project_id = ? AND (memory_a_id = ? OR memory_b_id = ?)
1358
- ORDER BY CASE status WHEN 'open' THEN 0 ELSE 1 END, id DESC
1354
+ const conflictRows = db.prepare(`
1355
+ SELECT *
1356
+ FROM memory_conflicts
1357
+ WHERE project_id = ? AND (memory_a_id = ? OR memory_b_id = ?)
1358
+ ORDER BY CASE status WHEN 'open' THEN 0 ELSE 1 END, id DESC
1359
1359
  `).all(mem.project_id, mem.id, mem.id);
1360
1360
  const conflicts = conflictRows.map((conflict) => {
1361
1361
  const otherId = conflict.memory_a_id === mem.id ? conflict.memory_b_id : conflict.memory_a_id;
@@ -1478,12 +1478,12 @@ export function createFastrMcpServer(context, options = {}) {
1478
1478
  where.push('(created_at < ? OR (created_at = ? AND id < ?))');
1479
1479
  params.push(c.createdAt, c.createdAt, c.id);
1480
1480
  }
1481
- const rows = db.prepare(`
1482
- SELECT id, title, kind, module, status, reward_score, created_at
1483
- FROM memories
1484
- WHERE ${where.join(' AND ')}
1485
- ORDER BY created_at DESC, id DESC
1486
- LIMIT ?
1481
+ const rows = db.prepare(`
1482
+ SELECT id, title, kind, module, status, reward_score, created_at
1483
+ FROM memories
1484
+ WHERE ${where.join(' AND ')}
1485
+ ORDER BY created_at DESC, id DESC
1486
+ LIMIT ?
1487
1487
  `).all(...params, limit + 1);
1488
1488
  const page = rows.slice(0, limit);
1489
1489
  const last = page[page.length - 1];
@@ -1677,15 +1677,15 @@ export function createFastrMcpServer(context, options = {}) {
1677
1677
  // RESOURCE 2: fastr://project/traps
1678
1678
  // ==========================================
1679
1679
  server.registerResource('traps', 'fastr://project/traps', { description: 'All active [TRAP] warnings for this project', mimeType: 'text/markdown' }, async (uri) => {
1680
- const rows = db.prepare(`
1681
- SELECT id, module, title, content
1682
- FROM memories
1683
- WHERE project_id = ?
1684
- AND kind = 'error_trap'
1685
- AND valid_to IS NULL
1686
- AND status != 'superseded'
1687
- AND status != 'dormant'
1688
- ORDER BY reward_score DESC, created_at DESC
1680
+ const rows = db.prepare(`
1681
+ SELECT id, module, title, content
1682
+ FROM memories
1683
+ WHERE project_id = ?
1684
+ AND kind = 'error_trap'
1685
+ AND valid_to IS NULL
1686
+ AND status != 'superseded'
1687
+ AND status != 'dormant'
1688
+ ORDER BY reward_score DESC, created_at DESC
1689
1689
  `).all(config.projectId);
1690
1690
  const text = rows.length > 0
1691
1691
  ? rows.map((r) => `### [${r.id}] [TRAP] ${r.title} (${r.module})\n${r.content}`).join('\n\n---\n\n')
@@ -45,28 +45,28 @@ export function modulePageFileName(moduleName) {
45
45
  export function renderModuleMarkdown(db, projectId, moduleName) {
46
46
  const normModule = moduleName.trim().toLowerCase();
47
47
  // 1. Fetch active memories
48
- const activeRows = db.prepare(`
49
- SELECT m.*, GROUP_CONCAT(DISTINCT fl.file_path) as linked_files
50
- FROM memories m
51
- LEFT JOIN file_links fl ON fl.memory_id = m.id
52
- WHERE m.project_id = ?
53
- AND m.module = ?
54
- AND m.valid_to IS NULL
55
- AND m.status != 'superseded'
56
- AND m.status != 'dormant'
57
- GROUP BY m.id
58
- ORDER BY m.pinned DESC, (m.kind = 'error_trap') DESC, m.reward_score DESC, m.created_at DESC
48
+ const activeRows = db.prepare(`
49
+ SELECT m.*, GROUP_CONCAT(DISTINCT fl.file_path) as linked_files
50
+ FROM memories m
51
+ LEFT JOIN file_links fl ON fl.memory_id = m.id
52
+ WHERE m.project_id = ?
53
+ AND m.module = ?
54
+ AND m.valid_to IS NULL
55
+ AND m.status != 'superseded'
56
+ AND m.status != 'dormant'
57
+ GROUP BY m.id
58
+ ORDER BY m.pinned DESC, (m.kind = 'error_trap') DESC, m.reward_score DESC, m.created_at DESC
59
59
  `).all(projectId, normModule);
60
60
  // 2. Fetch superseded/historical memories
61
- const supersededRows = db.prepare(`
62
- SELECT m.*, GROUP_CONCAT(DISTINCT fl.file_path) as linked_files
63
- FROM memories m
64
- LEFT JOIN file_links fl ON fl.memory_id = m.id
65
- WHERE m.project_id = ?
66
- AND m.module = ?
67
- AND (m.valid_to IS NOT NULL OR m.status = 'superseded')
68
- GROUP BY m.id
69
- ORDER BY COALESCE(m.valid_to, m.created_at) DESC
61
+ const supersededRows = db.prepare(`
62
+ SELECT m.*, GROUP_CONCAT(DISTINCT fl.file_path) as linked_files
63
+ FROM memories m
64
+ LEFT JOIN file_links fl ON fl.memory_id = m.id
65
+ WHERE m.project_id = ?
66
+ AND m.module = ?
67
+ AND (m.valid_to IS NOT NULL OR m.status = 'superseded')
68
+ GROUP BY m.id
69
+ ORDER BY COALESCE(m.valid_to, m.created_at) DESC
70
70
  `).all(projectId, normModule);
71
71
  const lines = [
72
72
  `# Module: ${normModule}`,
@@ -129,8 +129,8 @@ export function syncModulePage(db, projectRoot, projectId, moduleName) {
129
129
  return targetFile;
130
130
  }
131
131
  export function syncAllModulePages(db, projectRoot, projectId) {
132
- const rows = db.prepare(`
133
- SELECT DISTINCT module FROM memories WHERE project_id = ?
132
+ const rows = db.prepare(`
133
+ SELECT DISTINCT module FROM memories WHERE project_id = ?
134
134
  `).all(projectId);
135
135
  const syncedFiles = [];
136
136
  for (const row of rows) {
@@ -13,12 +13,12 @@ export async function backfillEmbeddings(db, repo, projectId, opts = {}) {
13
13
  return 0;
14
14
  const provider = getAvailableEmbeddingProvider();
15
15
  const header = embeddingHeader(provider.modelId);
16
- const rows = db.prepare(`
17
- SELECT id, title, content, module FROM memories
18
- WHERE project_id IN (?, 'global')
19
- AND (embedded = 0 OR embedding IS NULL OR substr(embedding, 1, 4) != ?)
20
- ORDER BY embedded ASC, created_at DESC
21
- LIMIT ?
16
+ const rows = db.prepare(`
17
+ SELECT id, title, content, module FROM memories
18
+ WHERE project_id IN (?, 'global')
19
+ AND (embedded = 0 OR embedding IS NULL OR substr(embedding, 1, 4) != ?)
20
+ ORDER BY embedded ASC, created_at DESC
21
+ LIMIT ?
22
22
  `).all(projectId, header, limit);
23
23
  let count = 0;
24
24
  for (const row of rows) {
@@ -17,15 +17,15 @@ function attachConflictMarkers(db, projectId, scored) {
17
17
  const placeholders = chunk.map(() => '?').join(',');
18
18
  let rows;
19
19
  try {
20
- rows = db.prepare(`
21
- SELECT c.id, c.memory_a_id, c.memory_b_id, c.reason, c.score,
22
- ma.title AS a_title, mb.title AS b_title
23
- FROM memory_conflicts c
24
- LEFT JOIN memories ma ON ma.id = c.memory_a_id
25
- LEFT JOIN memories mb ON mb.id = c.memory_b_id
26
- WHERE c.project_id = ? AND c.status = 'open'
27
- AND (c.memory_a_id IN (${placeholders}) OR c.memory_b_id IN (${placeholders}))
28
- ORDER BY c.id DESC
20
+ rows = db.prepare(`
21
+ SELECT c.id, c.memory_a_id, c.memory_b_id, c.reason, c.score,
22
+ ma.title AS a_title, mb.title AS b_title
23
+ FROM memory_conflicts c
24
+ LEFT JOIN memories ma ON ma.id = c.memory_a_id
25
+ LEFT JOIN memories mb ON mb.id = c.memory_b_id
26
+ WHERE c.project_id = ? AND c.status = 'open'
27
+ AND (c.memory_a_id IN (${placeholders}) OR c.memory_b_id IN (${placeholders}))
28
+ ORDER BY c.id DESC
29
29
  `).all(projectId, ...chunk, ...chunk);
30
30
  }
31
31
  catch {
@@ -141,16 +141,16 @@ export async function searchMemories(db, params) {
141
141
  // Column order is id (UNINDEXED), title, module, content. The leading 0.0 weight
142
142
  // keeps the unindexed id column out of the score while boosting title and module.
143
143
  const bm25Expr = 'bm25(memories_fts, 0.0, 10.0, 5.0, 1.0)';
144
- let querySql = `
145
- SELECT * FROM (
146
- SELECT m.*, ${bm25Expr} AS rank
147
- FROM memories_fts f
148
- JOIN memories m ON m.id = f.id
149
- WHERE (m.project_id = ? OR m.project_id = 'global')
150
- AND memories_fts MATCH ?
151
- ORDER BY rank ASC
152
- LIMIT 50
153
- )
144
+ let querySql = `
145
+ SELECT * FROM (
146
+ SELECT m.*, ${bm25Expr} AS rank
147
+ FROM memories_fts f
148
+ JOIN memories m ON m.id = f.id
149
+ WHERE (m.project_id = ? OR m.project_id = 'global')
150
+ AND memories_fts MATCH ?
151
+ ORDER BY rank ASC
152
+ LIMIT 50
153
+ )
154
154
  `;
155
155
  const ftsParams = [projectId, ftsQuery];
156
156
  if (isGlobalAttached) {
@@ -158,16 +158,16 @@ export async function searchMemories(db, params) {
158
158
  // name or an alias. Keeping the FTS table unaliased makes the unqualified
159
159
  // `memories_fts` resolve to the attached table in this subquery.
160
160
  const globalBm25Expr = 'bm25(memories_fts, 0.0, 10.0, 5.0, 1.0)';
161
- querySql += `
162
- UNION ALL
163
- SELECT * FROM (
164
- SELECT gm.*, ${globalBm25Expr} AS rank
165
- FROM global_db.memories_fts
166
- JOIN global_db.memories gm ON gm.id = memories_fts.id
167
- WHERE memories_fts MATCH ?
168
- ORDER BY rank ASC
169
- LIMIT 50
170
- )
161
+ querySql += `
162
+ UNION ALL
163
+ SELECT * FROM (
164
+ SELECT gm.*, ${globalBm25Expr} AS rank
165
+ FROM global_db.memories_fts
166
+ JOIN global_db.memories gm ON gm.id = memories_fts.id
167
+ WHERE memories_fts MATCH ?
168
+ ORDER BY rank ASC
169
+ LIMIT 50
170
+ )
171
171
  `;
172
172
  ftsParams.push(ftsQuery);
173
173
  }
@@ -202,18 +202,18 @@ export async function searchMemories(db, params) {
202
202
  }
203
203
  if (enableVector && query.trim().length > 0) {
204
204
  const isGlobalAttached = hasGlobalDb(db);
205
- let vecSql = `
206
- SELECT * FROM memories
207
- WHERE (project_id = ? OR project_id = 'global')
208
- AND embedded = 1
209
- AND embedding IS NOT NULL
205
+ let vecSql = `
206
+ SELECT * FROM memories
207
+ WHERE (project_id = ? OR project_id = 'global')
208
+ AND embedded = 1
209
+ AND embedding IS NOT NULL
210
210
  `;
211
211
  if (isGlobalAttached) {
212
- vecSql += `
213
- UNION ALL
214
- SELECT * FROM global_db.memories
215
- WHERE embedded = 1
216
- AND embedding IS NOT NULL
212
+ vecSql += `
213
+ UNION ALL
214
+ SELECT * FROM global_db.memories
215
+ WHERE embedded = 1
216
+ AND embedding IS NOT NULL
217
217
  `;
218
218
  }
219
219
  let embeddedRows = [];
@@ -279,12 +279,12 @@ export async function searchMemories(db, params) {
279
279
  // Round 1: Direct file link matches
280
280
  if (seedFiles.size > 0) {
281
281
  const placeholders = Array.from(seedFiles).map(() => '?').join(',');
282
- const fileRows = db.prepare(`
283
- SELECT DISTINCT m.id
284
- FROM file_links fl
285
- JOIN memories m ON m.id = fl.memory_id
286
- WHERE m.project_id = ?
287
- AND fl.file_path IN (${placeholders})
282
+ const fileRows = db.prepare(`
283
+ SELECT DISTINCT m.id
284
+ FROM file_links fl
285
+ JOIN memories m ON m.id = fl.memory_id
286
+ WHERE m.project_id = ?
287
+ AND fl.file_path IN (${placeholders})
288
288
  `).all(projectId, ...Array.from(seedFiles));
289
289
  for (const r of fileRows) {
290
290
  activationScores.set(r.id, (activationScores.get(r.id) || 0) + 1.0);
@@ -293,12 +293,12 @@ export async function searchMemories(db, params) {
293
293
  // Round 1: Direct entity link matches
294
294
  if (seedEntityNames.length > 0) {
295
295
  const placeholders = seedEntityNames.map(() => '?').join(',');
296
- const entityRows = db.prepare(`
297
- SELECT DISTINCT ge.source_id AS memory_id, ge.weight
298
- FROM entities e
299
- JOIN graph_edges ge ON ge.target_id = e.id AND ge.edge_type = 'entity_link'
300
- WHERE e.project_id = ?
301
- AND LOWER(e.name) IN (${placeholders})
296
+ const entityRows = db.prepare(`
297
+ SELECT DISTINCT ge.source_id AS memory_id, ge.weight
298
+ FROM entities e
299
+ JOIN graph_edges ge ON ge.target_id = e.id AND ge.edge_type = 'entity_link'
300
+ WHERE e.project_id = ?
301
+ AND LOWER(e.name) IN (${placeholders})
302
302
  `).all(projectId, ...seedEntityNames);
303
303
  for (const r of entityRows) {
304
304
  activationScores.set(r.memory_id, (activationScores.get(r.memory_id) || 0) + (r.weight * 1.8));
@@ -328,11 +328,11 @@ export async function searchMemories(db, params) {
328
328
  if (activeKeys.length === 0)
329
329
  break;
330
330
  const placeholders = activeKeys.map(() => '?').join(',');
331
- const edgeRows = db.prepare(`
332
- SELECT ge.source_id, ge.target_id, ge.edge_type, ge.weight
333
- FROM graph_edges ge
334
- WHERE ge.project_id = ?
335
- AND (ge.source_id IN (${placeholders}) OR ge.target_id IN (${placeholders}))
331
+ const edgeRows = db.prepare(`
332
+ SELECT ge.source_id, ge.target_id, ge.edge_type, ge.weight
333
+ FROM graph_edges ge
334
+ WHERE ge.project_id = ?
335
+ AND (ge.source_id IN (${placeholders}) OR ge.target_id IN (${placeholders}))
336
336
  `).all(projectId, ...activeKeys, ...activeKeys);
337
337
  for (const edge of edgeRows) {
338
338
  const isOutward = activationScores.has(edge.source_id);
@@ -394,14 +394,14 @@ export async function searchMemories(db, params) {
394
394
  if (files.length > 0) {
395
395
  const placeholders = files.map(() => '?').join(',');
396
396
  try {
397
- const rows = db.prepare(`
398
- SELECT DISTINCT memory_id FROM file_links WHERE file_path IN (${placeholders})
397
+ const rows = db.prepare(`
398
+ SELECT DISTINCT memory_id FROM file_links WHERE file_path IN (${placeholders})
399
399
  `).all(...files);
400
400
  for (const row of rows)
401
401
  fileLinkedMemoryIds.add(row.memory_id);
402
402
  if (hasGlobalDb(db)) {
403
- const globalRows = db.prepare(`
404
- SELECT DISTINCT memory_id FROM global_db.file_links WHERE file_path IN (${placeholders})
403
+ const globalRows = db.prepare(`
404
+ SELECT DISTINCT memory_id FROM global_db.file_links WHERE file_path IN (${placeholders})
405
405
  `).all(...files);
406
406
  for (const row of globalRows)
407
407
  fileLinkedMemoryIds.add(row.memory_id);