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.
- package/.claude-plugin/marketplace.json +14 -14
- package/.claude-plugin/plugin.json +18 -18
- package/.cursor/mcp.json +3 -1
- package/.cursor/skills/fastr-compress/SKILL.md +33 -33
- package/.cursor/skills/fastr-curate/SKILL.md +62 -62
- package/.cursor/skills/fastr-dag/SKILL.md +47 -47
- package/.cursor/skills/fastr-doctor/SKILL.md +39 -39
- package/.cursor/skills/fastr-memory/SKILL.md +51 -51
- package/.cursor/skills/fastr-plan-estimate/SKILL.md +45 -45
- package/.cursor/skills/fastr-session-commit/SKILL.md +49 -49
- package/.cursor/skills/fastr-setup/SKILL.md +45 -45
- package/.cursor/skills/fastr-trap-log/SKILL.md +39 -39
- package/.cursor/skills/fastr-vision/SKILL.md +35 -35
- package/.cursor/skills/skills.json +65 -65
- package/README.md +727 -729
- package/bin/fastr-guard.mjs +61 -0
- package/dist/bin/fastr.js +10 -9
- package/dist/bin/fastr.js.map +1 -1
- package/dist/src/bench/benchmark.js +13 -13
- package/dist/src/bench/harness.js +17 -17
- package/dist/src/bench/public-harness.js +5 -5
- package/dist/src/branch/manager.js +31 -31
- package/dist/src/ci/guardian.js +9 -9
- package/dist/src/db/doctor.js +25 -25
- package/dist/src/db/hygiene.js +23 -23
- package/dist/src/db/repository.js +283 -283
- package/dist/src/db/schema.js +268 -268
- package/dist/src/db/spool.js +4 -4
- package/dist/src/export/obsidian.js +15 -15
- package/dist/src/import/local.js +4 -4
- package/dist/src/installer/setup.d.ts +2 -0
- package/dist/src/installer/setup.d.ts.map +1 -1
- package/dist/src/installer/setup.js +24 -18
- package/dist/src/installer/setup.js.map +1 -1
- package/dist/src/mcp/server.js +25 -25
- package/dist/src/mirror/markdown-pages.js +22 -22
- package/dist/src/search/backfill.js +6 -6
- package/dist/src/search/hybrid-rrf.js +60 -60
- package/dist/src/ui/server.js +1259 -1259
- package/dist/src/vision/assets.js +6 -6
- package/dist-ui/assets/ActionsPage-B3quzFNF.js +11 -11
- package/dist-ui/assets/GraphPage-DetiATmC.js +1 -1
- package/dist-ui/assets/ObservatoryPage-QIGMwENf.js +16 -16
- package/dist-ui/assets/TreemapPage-C7uLZd37.js +2 -2
- package/dist-ui/assets/index-BJnPINTu.css +1 -1
- package/dist-ui/assets/index-DWAH--Fu.js +329 -329
- package/dist-ui/assets/maximize-2-BebkGbZA.js +6 -6
- package/dist-ui/build-manifest.json +95 -95
- package/dist-ui/index.html +26 -26
- package/llms-install.md +69 -69
- package/package.json +108 -107
- package/server.json +28 -28
- package/skills/fastr-compress/SKILL.md +33 -33
- package/skills/fastr-curate/SKILL.md +62 -62
- package/skills/fastr-dag/SKILL.md +47 -47
- package/skills/fastr-doctor/SKILL.md +39 -39
- package/skills/fastr-memory/SKILL.md +51 -51
- package/skills/fastr-plan-estimate/SKILL.md +45 -45
- package/skills/fastr-session-commit/SKILL.md +49 -49
- package/skills/fastr-setup/SKILL.md +45 -45
- package/skills/fastr-trap-log/SKILL.md +39 -39
- package/skills/fastr-vision/SKILL.md +35 -35
- 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
|
|
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,
|
|
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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"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -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);
|