stellavault 0.8.3 → 0.8.4

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Stellavault
2
2
 
3
- [![CI](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml/badge.svg)](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/stellavault)](https://www.npmjs.com/package/stellavault) [![tests](https://img.shields.io/badge/tests-223%20passing-brightgreen)]()
3
+ [![CI](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml/badge.svg)](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/stellavault)](https://www.npmjs.com/package/stellavault) [![tests](https://img.shields.io/badge/tests-245%20passing-brightgreen)]() [![node](https://img.shields.io/badge/node-%E2%89%A520-339933?logo=node.js&logoColor=white)]() [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
4
4
 
5
5
  > **Drop anything. It compiles itself into knowledge.** Claude remembers everything you know.
6
6
 
@@ -11,6 +11,10 @@ Self-compiling knowledge base with a full-featured editor, 3D neural graph, AI-p
11
11
  <br><em>Your vault as a neural network. Local-first, no cloud required.</em>
12
12
  </p>
13
13
 
14
+ ## Contents
15
+
16
+ [Install](#install) · [Editor](#editor) · [Pipeline](#the-pipeline) · [Intelligence](#intelligence-what-makes-stellavault-unique) · [Search & Ranking](#search--ranking) · [MCP Integration](#mcp-integration-21-tools) · [3D Visualization](#3d-visualization) · [Configuration](#configuration) · [Performance](#performance) · [Tech Stack](#tech-stack) · [Security](#security) · [Troubleshooting](#troubleshooting)
17
+
14
18
  ## Install
15
19
 
16
20
  ### Desktop App (Recommended — one click)
@@ -120,6 +124,24 @@ These features do **not exist** in Obsidian — even with plugins.
120
124
 
121
125
  ---
122
126
 
127
+ ## Search & Ranking
128
+
129
+ Hybrid retrieval that fuses multiple signals with **weighted Reciprocal Rank Fusion (RRF)** — tuned for a personal knowledge vault, fully local, zero API keys:
130
+
131
+ | Signal | What it captures | Default weight |
132
+ |--------|------------------|---------------:|
133
+ | **Semantic** (dense) | meaning; multilingual (50+ languages) | `1.0` |
134
+ | **BM25** (keyword) | exact terms, code, names | `1.0` |
135
+ | **Entity-linking** | your `[[wikilinks]]`, `#tags`, headings, titles — the curated graph | `1.5` |
136
+ | **FSRS recency** | gently surfaces notes you're actively using / forgetting | `±10%` |
137
+
138
+ - **Entity matching** resolves natural-language queries via fuzzy substring + punctuation-normalized matching (Korean / CJK friendly), with a **per-document diversity cap** so one large note can't flood the top results.
139
+ - **Recency** reuses the same FSRS memory model as the decay engine (not raw file mtime) — a note you're forgetting resurfaces; a mastered evergreen note isn't buried just for being old.
140
+ - **Adaptive rerank** (long-running MCP server) further boosts results by your current session context (recent tags / paths).
141
+ - Every weight is **tunable** per vault or via env vars — see [Configuration](#configuration).
142
+
143
+ ---
144
+
123
145
  ## MCP Integration (21 Tools)
124
146
 
125
147
  ```bash
@@ -128,13 +150,13 @@ stellavault setup # one command → Claude Code, Claude Desktop, Curs
128
150
  claude mcp add stellavault -- stellavault serve
129
151
  ```
130
152
 
131
- Claude can search, ask, draft, lint, and analyze your vault directly. Search
132
- fuses **semantic + BM25 + entity-linking** — your `[[wikilinks]]`, tags, and
133
- headings become retrieval signals — with session-adaptive reranking.
153
+ Claude can search, ask, draft, lint, and analyze your vault directly. Search runs
154
+ the full hybrid pipeline — **weighted RRF** over semantic + BM25 + entity-linking,
155
+ plus **FSRS recency** and session-adaptive reranking (see [Search & Ranking](#search--ranking)).
134
156
 
135
157
  | Tool | What it does |
136
158
  |------|-------------|
137
- | `search` | Hybrid semantic + BM25 + entity-linking, adaptive rerank |
159
+ | `search` | Weighted RRF (semantic + BM25 + entity) + FSRS recency + adaptive rerank |
138
160
  | `ask` | Vault-grounded Q&A |
139
161
  | `generate-draft` | AI drafts from your knowledge |
140
162
  | `get-decay-status` | Memory decay report (FSRS) |
@@ -218,6 +240,34 @@ stellavault decay # What are you forgetting?
218
240
 
219
241
  ---
220
242
 
243
+ ## Configuration
244
+
245
+ Stellavault reads `./.stellavault.json` (or `~/.stellavault.json`). Search ranking is fully tunable — sensible defaults work out of the box:
246
+
247
+ ```jsonc
248
+ {
249
+ "search": {
250
+ "rrfK": 60,
251
+ "weights": { "semantic": 1.0, "bm25": 1.0, "entity": 1.5 },
252
+ "recencyWeight": 0.2, // FSRS recency strength; 0 = off
253
+ "entityAliases": { "k8s": ["kubernetes"] } // synonym / cross-lingual groups (exact-only)
254
+ }
255
+ }
256
+ ```
257
+
258
+ Environment variables override config (parsed with guards):
259
+
260
+ | Env var | Effect |
261
+ |---------|--------|
262
+ | `STELLAVAULT_W_SEMANTIC` / `_BM25` / `_ENTITY` | per-signal RRF weight (e.g. `STELLAVAULT_W_ENTITY=2.0` for aggressive entity surfacing) |
263
+ | `STELLAVAULT_RECENCY_WEIGHT` | recency strength `0`–`1` (`0` disables) |
264
+ | `STELLAVAULT_DB_PATH` | override the index DB location |
265
+ | `STELLAVAULT_WATCH` | `0` to disable the auto-reindex file watcher while `serve` runs |
266
+
267
+ > Note: cross-lingual recall (e.g. a Korean query finding English notes) is handled automatically by the multilingual embedding model — `entityAliases` is an optional precision boost for the curated entity graph (tags / wikilinks) and abbreviations.
268
+
269
+ ---
270
+
221
271
  ## Performance
222
272
 
223
273
  Tested on synthetic vaults — all operations under 1 second for typical use cases:
@@ -253,7 +303,7 @@ Key optimizations:
253
303
  | Runtime | Node.js 20+ (ESM, TypeScript) |
254
304
  | Vector Store | SQLite-vec (local, zero config) |
255
305
  | Embedding | MiniLM-L12-v2 (local, 50+ languages, batch processing) |
256
- | Search | BM25 + Cosine + RRF Fusion |
306
+ | Search | Weighted RRF (semantic + BM25 + entity) + FSRS recency |
257
307
  | Math | KaTeX (inline + display) |
258
308
  | Code | lowlight / highlight.js (40+ languages) |
259
309
  | 3D | React Three Fiber + Three.js |
@@ -5795,7 +5795,7 @@ function createMcpServer(options) {
5795
5795
  const askTool = createAskTool(searchEngine, vaultPath);
5796
5796
  const generateDraftTool = createGenerateDraftTool(searchEngine, vaultPath);
5797
5797
  const agenticTools = embedder ? createAgenticGraphTools(store, embedder, vaultPath) : [];
5798
- const server = new Server({ name: "stellavault", version: "0.8.3" }, { capabilities: { tools: {} } });
5798
+ const server = new Server({ name: "stellavault", version: "0.8.4" }, { capabilities: { tools: {} } });
5799
5799
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
5800
5800
  tools: [
5801
5801
  searchToolDef,
@@ -10976,7 +10976,7 @@ if (nodeVersion < 20) {
10976
10976
  process.exit(1);
10977
10977
  }
10978
10978
  var program = new Command();
10979
- var SV_VERSION = true ? "0.8.3" : "0.0.0-dev";
10979
+ var SV_VERSION = true ? "0.8.4" : "0.0.0-dev";
10980
10980
  program.name("stellavault").description("Stellavault \u2014 Self-compiling knowledge base for your Obsidian vault").version(SV_VERSION).option("--json", "Output in JSON format (for scripting)").option("--quiet", "Suppress non-essential output");
10981
10981
  program.command("init").description("Interactive setup wizard \u2014 get started in 3 minutes").action(initCommand);
10982
10982
  program.command("doctor").description("Diagnose setup issues (config, vault, DB, model, Node version)").action(doctorCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stellavault",
3
- "version": "0.8.3",
3
+ "version": "0.8.4",
4
4
  "description": "Drop anything. It compiles itself into knowledge. Claude remembers everything you know. Local-first MCP server, vault files never modified.",
5
5
  "repository": {
6
6
  "type": "git",