@velvetmonkey/flywheel-memory 2.0.140 → 2.0.141

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 (2) hide show
  1. package/dist/index.js +22 -9
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -14347,15 +14347,22 @@ function registerQueryTools(server2, getIndex, getVaultPath, getStateDb3) {
14347
14347
  const fts5Map = new Map(fts5Results.map((r) => [normalizePath2(r.path), r]));
14348
14348
  const semanticMap = new Map(semanticResults.map((r) => [normalizePath2(r.path), r]));
14349
14349
  const entityMap = new Map(entityResults.map((r) => [normalizePath2(r.path), r]));
14350
- const scored = Array.from(allPaths).map((p) => ({
14351
- path: p,
14352
- title: fts5Map.get(p)?.title || semanticMap.get(p)?.title || entityMap.get(p)?.name || p.replace(/\.md$/, "").split("/").pop() || p,
14353
- snippet: fts5Map.get(p)?.snippet,
14354
- rrf_score: rrfScores.get(p) || 0,
14355
- in_fts5: fts5Map.has(p),
14356
- in_semantic: semanticMap.has(p),
14357
- in_entity: entityMap.has(p)
14358
- }));
14350
+ const queryLower = query.toLowerCase().trim();
14351
+ const scored = Array.from(allPaths).map((p) => {
14352
+ const title = fts5Map.get(p)?.title || semanticMap.get(p)?.title || entityMap.get(p)?.name || p.replace(/\.md$/, "").split("/").pop() || p;
14353
+ let rrf_score = rrfScores.get(p) || 0;
14354
+ if (title.toLowerCase() === queryLower) rrf_score += 0.5;
14355
+ else if (title.toLowerCase().startsWith(queryLower)) rrf_score += 0.2;
14356
+ return {
14357
+ path: p,
14358
+ title,
14359
+ snippet: fts5Map.get(p)?.snippet,
14360
+ rrf_score,
14361
+ in_fts5: fts5Map.has(p),
14362
+ in_semantic: semanticMap.has(p),
14363
+ in_entity: entityMap.has(p)
14364
+ };
14365
+ });
14359
14366
  scored.sort((a, b) => b.rrf_score - a.rrf_score);
14360
14367
  const filtered = applyFolderFilter(scored);
14361
14368
  const stateDb2 = getStateDb3();
@@ -14386,10 +14393,16 @@ function registerQueryTools(server2, getIndex, getVaultPath, getStateDb3) {
14386
14393
  const normalizePath2 = (p) => p.replace(/\\/g, "/").replace(/\/+/g, "/");
14387
14394
  const fts5Map = new Map(fts5Results.map((r) => [normalizePath2(r.path), r]));
14388
14395
  const entityRanked = entityResults.filter((r) => !fts5Map.has(normalizePath2(r.path)));
14396
+ const queryLower = query.toLowerCase().trim();
14389
14397
  const mergedItems = [
14390
14398
  ...fts5Results.map((r) => ({ path: r.path, title: r.title, snippet: r.snippet, in_fts5: true })),
14391
14399
  ...entityRanked.map((r) => ({ path: r.path, title: r.name, snippet: void 0, in_entity: true }))
14392
14400
  ];
14401
+ mergedItems.sort((a, b) => {
14402
+ const aExact = a.title.toLowerCase() === queryLower ? 2 : a.title.toLowerCase().startsWith(queryLower) ? 1 : 0;
14403
+ const bExact = b.title.toLowerCase() === queryLower ? 2 : b.title.toLowerCase().startsWith(queryLower) ? 1 : 0;
14404
+ return bExact - aExact;
14405
+ });
14393
14406
  const filtered = applyFolderFilter(mergedItems);
14394
14407
  const stateDb2 = getStateDb3();
14395
14408
  const sliced = filtered.slice(0, limit);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velvetmonkey/flywheel-memory",
3
- "version": "2.0.140",
3
+ "version": "2.0.141",
4
4
  "description": "MCP server that gives Claude full read/write access to your Obsidian vault. Select from 74 tools for search, backlinks, graph queries, mutations, agent memory, and hybrid semantic search.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,7 +54,7 @@
54
54
  "dependencies": {
55
55
  "@huggingface/transformers": "^3.8.1",
56
56
  "@modelcontextprotocol/sdk": "^1.25.1",
57
- "@velvetmonkey/vault-core": "^2.0.140",
57
+ "@velvetmonkey/vault-core": "^2.0.141",
58
58
  "better-sqlite3": "^12.0.0",
59
59
  "chokidar": "^4.0.0",
60
60
  "gray-matter": "^4.0.3",