@robthepcguy/rag-vault 1.7.2 → 1.9.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/README.md +92 -40
- package/dist/chunker/semantic-chunker.d.ts +0 -1
- package/dist/chunker/semantic-chunker.d.ts.map +1 -1
- package/dist/chunker/semantic-chunker.js +1 -1
- package/dist/chunker/semantic-chunker.js.map +1 -1
- package/dist/embedder/index.d.ts +5 -0
- package/dist/embedder/index.d.ts.map +1 -1
- package/dist/embedder/index.js +40 -5
- package/dist/embedder/index.js.map +1 -1
- package/dist/errors/index.d.ts +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/flywheel/feedback.d.ts +1 -1
- package/dist/flywheel/feedback.d.ts.map +1 -1
- package/dist/flywheel/feedback.js +1 -1
- package/dist/flywheel/feedback.js.map +1 -1
- package/dist/hyde/index.d.ts +47 -0
- package/dist/hyde/index.d.ts.map +1 -0
- package/dist/hyde/index.js +203 -0
- package/dist/hyde/index.js.map +1 -0
- package/dist/parser/pdf-filter.d.ts +3 -5
- package/dist/parser/pdf-filter.d.ts.map +1 -1
- package/dist/parser/pdf-filter.js +1 -1
- package/dist/parser/pdf-filter.js.map +1 -1
- package/dist/query/parser.d.ts +2 -6
- package/dist/query/parser.d.ts.map +1 -1
- package/dist/query/parser.js +14 -22
- package/dist/query/parser.js.map +1 -1
- package/dist/reranker/index.d.ts +76 -0
- package/dist/reranker/index.d.ts.map +1 -0
- package/dist/reranker/index.js +199 -0
- package/dist/reranker/index.js.map +1 -0
- package/dist/server/index.d.ts +25 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +140 -48
- package/dist/server/index.js.map +1 -1
- package/dist/server/raw-data-utils.d.ts +0 -40
- package/dist/server/raw-data-utils.d.ts.map +1 -1
- package/dist/server/raw-data-utils.js +9 -8
- package/dist/server/raw-data-utils.js.map +1 -1
- package/dist/server/remote-transport.d.ts +2 -1
- package/dist/server/remote-transport.d.ts.map +1 -1
- package/dist/server/remote-transport.js +26 -6
- package/dist/server/remote-transport.js.map +1 -1
- package/dist/server/schemas.d.ts +26 -129
- package/dist/server/schemas.d.ts.map +1 -1
- package/dist/server/schemas.js +9 -9
- package/dist/server/schemas.js.map +1 -1
- package/dist/utils/config-parsers.d.ts +14 -0
- package/dist/utils/config-parsers.d.ts.map +1 -1
- package/dist/utils/config-parsers.js +26 -0
- package/dist/utils/config-parsers.js.map +1 -1
- package/dist/utils/config.d.ts +23 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +39 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +17 -1
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/vectordb/index.d.ts +45 -16
- package/dist/vectordb/index.d.ts.map +1 -1
- package/dist/vectordb/index.js +363 -170
- package/dist/vectordb/index.js.map +1 -1
- package/dist/web/api-routes.d.ts.map +1 -1
- package/dist/web/api-routes.js +23 -10
- package/dist/web/api-routes.js.map +1 -1
- package/dist/web/database-manager.d.ts.map +1 -1
- package/dist/web/database-manager.js +32 -25
- package/dist/web/database-manager.js.map +1 -1
- package/dist/web/http-server.d.ts +0 -5
- package/dist/web/http-server.d.ts.map +1 -1
- package/dist/web/http-server.js +3 -7
- package/dist/web/http-server.js.map +1 -1
- package/dist/web/middleware/async-handler.d.ts +2 -1
- package/dist/web/middleware/async-handler.d.ts.map +1 -1
- package/dist/web/middleware/rate-limit.d.ts +2 -1
- package/dist/web/middleware/rate-limit.d.ts.map +1 -1
- package/dist/web/middleware/request-logger.d.ts +1 -1
- package/dist/web/middleware/request-logger.d.ts.map +1 -1
- package/package.json +8 -7
- package/skills/rag-vault/SKILL.md +3 -3
- package/skills/rag-vault/references/html-ingestion.md +1 -1
- package/web-ui/dist/assets/{CollectionsPage-BDmEfv3V.js → CollectionsPage-wbfgYFTw.js} +1 -1
- package/web-ui/dist/assets/{FilesPage-pG9HmpgQ.js → FilesPage-D6TlldaR.js} +1 -1
- package/web-ui/dist/assets/ReaderPage-Sgy0vMZ6.js +28 -0
- package/web-ui/dist/assets/{ReaderSettingsContext-CkSjqsRh.js → ReaderSettingsContext-DsvLXuaf.js} +1 -1
- package/web-ui/dist/assets/{SearchPage-DAltjnLL.js → SearchPage-mPKXZEyq.js} +1 -1
- package/web-ui/dist/assets/{SettingsPage-C6J5BITP.js → SettingsPage-DXeWwfvd.js} +1 -1
- package/web-ui/dist/assets/{StatusPage-powRGmW3.js → StatusPage-AirpfsGF.js} +1 -1
- package/web-ui/dist/assets/{UploadPage-eyfSjL4u.js → UploadPage-Cob25kDa.js} +5 -5
- package/web-ui/dist/assets/index-BZMzEssr.js +6 -0
- package/web-ui/dist/assets/index-DovQIIL4.css +1 -0
- package/web-ui/dist/assets/motion-DdHBXDWx.js +9 -0
- package/web-ui/dist/assets/query-DbAD_nLW.js +1 -0
- package/web-ui/dist/assets/vendor-DNJ-hWNb.js +10 -0
- package/web-ui/dist/index.html +4 -4
- package/web-ui/dist/assets/ReaderPage-CwMN03NU.js +0 -28
- package/web-ui/dist/assets/index-BpwaiuGL.css +0 -1
- package/web-ui/dist/assets/index-D068MV_o.js +0 -6
- package/web-ui/dist/assets/motion-CKwJwI3J.js +0 -9
- package/web-ui/dist/assets/query-DPt-uCb6.js +0 -1
- package/web-ui/dist/assets/vendor-C2QPsZ3S.js +0 -10
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Your documents. Your machine. Your control.**
|
|
8
8
|
|
|
9
|
-
RAG Vault
|
|
9
|
+
RAG Vault lets your AI coding assistant search your private documents, things like API specs, research papers, and internal docs. Everything runs locally and your data stays on your machine unless you choose to pull in content from a remote URL.
|
|
10
10
|
|
|
11
11
|
One command to run, minimal setup, privacy by default.
|
|
12
12
|
|
|
@@ -15,15 +15,15 @@ One command to run, minimal setup, privacy by default.
|
|
|
15
15
|
| Pain Point | RAG Vault Solution |
|
|
16
16
|
|------------|-------------------|
|
|
17
17
|
| "I don't want my docs on someone else's server" | Everything stays local by default. No background cloud calls for indexing or search. |
|
|
18
|
-
| "Semantic search misses exact code terms" | Hybrid search
|
|
18
|
+
| "Semantic search misses exact code terms" | Hybrid search with RRF fusion, optional cross-encoder reranking |
|
|
19
19
|
| "Setup requires Docker, Python, databases..." | One `npx` command plus a small MCP config block. |
|
|
20
20
|
| "Cloud APIs charge per query" | Free forever. No subscriptions. |
|
|
21
21
|
|
|
22
22
|
## Security
|
|
23
23
|
|
|
24
|
-
RAG Vault
|
|
24
|
+
RAG Vault comes with security built in:
|
|
25
25
|
- **API Authentication**: Optional API key via `RAG_API_KEY`
|
|
26
|
-
- **Rate Limiting**:
|
|
26
|
+
- **Rate Limiting**: You can throttle requests
|
|
27
27
|
- **CORS Control**: Restrict allowed origins
|
|
28
28
|
- **Security Headers**: Helmet.js protection
|
|
29
29
|
|
|
@@ -76,6 +76,7 @@ Add to `.mcp.json` in your project directory:
|
|
|
76
76
|
"BASE_DIR": "./documents",
|
|
77
77
|
"DB_PATH": "./documents/.rag-db",
|
|
78
78
|
"CACHE_DIR": "./.cache",
|
|
79
|
+
"RAG_EMBEDDING_DEVICE": "cpu",
|
|
79
80
|
"RAG_HYBRID_WEIGHT": "0.6",
|
|
80
81
|
"RAG_GROUPING": "related"
|
|
81
82
|
}
|
|
@@ -105,7 +106,7 @@ BASE_DIR = "/path/to/your/documents"
|
|
|
105
106
|
|
|
106
107
|
### Install Skills (Optional)
|
|
107
108
|
|
|
108
|
-
|
|
109
|
+
If you want your AI to write better queries and make more sense of results, install the RAG Vault skills:
|
|
109
110
|
|
|
110
111
|
```bash
|
|
111
112
|
# Claude Code (project-level - recommended for team projects)
|
|
@@ -123,7 +124,7 @@ npx github:RobThePCGuy/rag-vault skills install --path /your/custom/path
|
|
|
123
124
|
|
|
124
125
|
Skills teach Claude best practices for:
|
|
125
126
|
- Query formulation and expansion strategies
|
|
126
|
-
- Score interpretation
|
|
127
|
+
- Score interpretation. In boost mode, under 0.3 is a good match and over 0.5 is worth skipping. RRF mode scores by rank instead.
|
|
127
128
|
- When to use `ingest_file` vs `ingest_data`
|
|
128
129
|
- HTML ingestion and URL handling
|
|
129
130
|
|
|
@@ -141,7 +142,7 @@ That's it. No Docker. No Python. No server infrastructure to manage.
|
|
|
141
142
|
|
|
142
143
|
## Web Interface
|
|
143
144
|
|
|
144
|
-
RAG Vault
|
|
145
|
+
RAG Vault has a web UI so you can manage your documents without touching the command line.
|
|
145
146
|
|
|
146
147
|
### Launch the Web UI
|
|
147
148
|
|
|
@@ -156,7 +157,7 @@ Open [http://localhost:3000](http://localhost:3000) in your browser.
|
|
|
156
157
|
- **Upload documents**: Drag and drop PDF, DOCX, Markdown, TXT, JSON, JSONL, and NDJSON files
|
|
157
158
|
- **Search instantly**: Type queries and see results with relevance scores
|
|
158
159
|
- **Preview content**: Click any result to see the full chunk in context
|
|
159
|
-
- **Manage files**: View all indexed documents and delete what you
|
|
160
|
+
- **Manage files**: View all indexed documents and delete what you don't need
|
|
160
161
|
- **Switch databases**: Create and switch between multiple knowledge bases
|
|
161
162
|
- **Monitor status**: See document counts, memory usage, and search mode
|
|
162
163
|
- **Export/Import settings**: Back up and restore your vault configuration
|
|
@@ -165,7 +166,7 @@ Open [http://localhost:3000](http://localhost:3000) in your browser.
|
|
|
165
166
|
|
|
166
167
|
### REST API
|
|
167
168
|
|
|
168
|
-
The web server
|
|
169
|
+
The web server has a REST API you can hit directly. Set `RAG_API_KEY` to require authentication:
|
|
169
170
|
|
|
170
171
|
```bash
|
|
171
172
|
# With authentication (when RAG_API_KEY is set)
|
|
@@ -174,7 +175,7 @@ curl -X POST "http://localhost:3000/api/v1/search" \
|
|
|
174
175
|
-H "Content-Type: application/json" \
|
|
175
176
|
-d '{"query": "authentication", "limit": 5}'
|
|
176
177
|
|
|
177
|
-
# Search documents (no auth
|
|
178
|
+
# Search documents (no auth needed if RAG_API_KEY isn't set)
|
|
178
179
|
curl -X POST "http://localhost:3000/api/v1/search" \
|
|
179
180
|
-H "Content-Type: application/json" \
|
|
180
181
|
-d '{"query": "authentication", "limit": 5}'
|
|
@@ -200,7 +201,7 @@ curl "http://localhost:3000/api/v1/health"
|
|
|
200
201
|
|
|
201
202
|
### Reader API Endpoints
|
|
202
203
|
|
|
203
|
-
|
|
204
|
+
These endpoints let you read documents and find connections across them:
|
|
204
205
|
|
|
205
206
|
```bash
|
|
206
207
|
# Get all chunks for a document (ordered by index)
|
|
@@ -217,7 +218,7 @@ curl -X POST "http://localhost:3000/api/v1/chunks/batch-related" \
|
|
|
217
218
|
|
|
218
219
|
## Remote Mode
|
|
219
220
|
|
|
220
|
-
RAG Vault can also run as an HTTP server
|
|
221
|
+
RAG Vault can also run as an HTTP server so remote MCP clients like Claude.ai, Claude Desktop, or anything that supports Streamable HTTP or SSE can connect to it.
|
|
221
222
|
|
|
222
223
|
```bash
|
|
223
224
|
# Start remote server (default port 3001)
|
|
@@ -227,7 +228,7 @@ npx github:RobThePCGuy/rag-vault --remote
|
|
|
227
228
|
npx github:RobThePCGuy/rag-vault --remote --port 8080
|
|
228
229
|
```
|
|
229
230
|
|
|
230
|
-
Stdio mode is unchanged
|
|
231
|
+
Stdio mode is unchanged. Just leave off `--remote` and everything works as before with Cursor, Claude Code, and Codex.
|
|
231
232
|
|
|
232
233
|
### Connecting from Claude Desktop
|
|
233
234
|
|
|
@@ -311,12 +312,18 @@ Pure semantic search would miss this. RAG Vault finds it.
|
|
|
311
312
|
```
|
|
312
313
|
Document → Parse → Chunk by meaning → Embed locally → Store in LanceDB
|
|
313
314
|
↓
|
|
314
|
-
Query → Embed → Vector search →
|
|
315
|
+
Query → Embed → Vector search + BM25 → Fusion → Optional reranking → Results
|
|
315
316
|
```
|
|
316
317
|
|
|
317
318
|
**Smart chunking**: Splits by meaning, not character count. Keeps code blocks intact.
|
|
318
319
|
|
|
319
|
-
**Hybrid search**:
|
|
320
|
+
**Hybrid search**: Two fusion modes that combine vector similarity with BM25 keyword matching:
|
|
321
|
+
- **Boost mode** (default): BM25 boosts vector search distances multiplicatively. Simple and predictable.
|
|
322
|
+
- **RRF mode** (opt-in via `RAG_SEARCH_MODE=rrf`): [Reciprocal Rank Fusion](https://plg.uwaterloo.ca/~gvcormac/cormacksigir09-rrf.pdf) treats vector and BM25 as independent voters. This can surface documents that vector search alone would miss.
|
|
323
|
+
|
|
324
|
+
**Cross-encoder reranking** (opt-in): After the first pass, a cross-encoder model (`Xenova/ms-marco-MiniLM-L-6-v2`, ~23MB) scores each (query, passage) pair together for tighter relevance ranking. Turn it on with `RAG_RERANKER_ENABLED=true`.
|
|
325
|
+
|
|
326
|
+
**Query expansion** (opt-in): Generates reformulated queries to improve recall when searches are paraphrased or conceptual. Two backends: local template-based expansion (default, fully offline) or LLM-based [HyDE](https://arxiv.org/abs/2212.10496) through an external API. Turn it on with `RAG_HYDE_ENABLED=true`.
|
|
320
327
|
|
|
321
328
|
**Quality filtering**: Groups results by relevance gaps instead of arbitrary top-K cutoffs.
|
|
322
329
|
|
|
@@ -344,15 +351,20 @@ Query → Embed → Vector search → Keyword boost → Quality filter → Resul
|
|
|
344
351
|
|----------|---------|--------------|
|
|
345
352
|
| `BASE_DIR` | Current directory | Only files under this path can be accessed |
|
|
346
353
|
| `DB_PATH` | `./lancedb/` | Where vectors are stored |
|
|
354
|
+
| `CACHE_DIR` | `./models/` | Model cache directory |
|
|
347
355
|
| `MODEL_NAME` | `Xenova/all-MiniLM-L6-v2` | HuggingFace embedding model |
|
|
348
|
-
| `
|
|
356
|
+
| `MAX_FILE_SIZE` | `104857600` (100 MB) | Biggest file you can ingest |
|
|
357
|
+
| `RAG_EMBEDDING_DEVICE` | `auto` | Device for running embeddings: `auto`, `cpu`, `cuda`, `dml`, `webgpu`, `wasm`, `gpu`, `webnn` |
|
|
349
358
|
| `WEB_PORT` | `3000` | Port for web interface |
|
|
359
|
+
| `UPLOAD_DIR` | `./uploads/` | Temporary directory for web UI file uploads |
|
|
360
|
+
|
|
361
|
+
> **Windows users:** `RAG_EMBEDDING_DEVICE=auto` tries GPU providers (DirectML), which can fail if ONNX Runtime GPU binaries aren't available. If you see embedding initialization errors, set `RAG_EMBEDDING_DEVICE=cpu` in your MCP config for reliable operation. See the [GPU acceleration FAQ](#frequently-asked-questions) for details.
|
|
350
362
|
|
|
351
363
|
One-command override (no `.env` edit):
|
|
352
364
|
|
|
353
365
|
```bash
|
|
354
366
|
# MCP mode
|
|
355
|
-
npx github:RobThePCGuy/rag-vault --embedding-device
|
|
367
|
+
npx github:RobThePCGuy/rag-vault --embedding-device cpu
|
|
356
368
|
|
|
357
369
|
# Web mode
|
|
358
370
|
npx github:RobThePCGuy/rag-vault web --embedding-device dml
|
|
@@ -365,9 +377,38 @@ npx github:RobThePCGuy/rag-vault --gpu-auto
|
|
|
365
377
|
|
|
366
378
|
| Variable | Default | What it does |
|
|
367
379
|
|----------|---------|--------------|
|
|
368
|
-
| `
|
|
369
|
-
| `
|
|
370
|
-
| `
|
|
380
|
+
| `RAG_SEARCH_MODE` | `boost` | Fusion mode: `boost` (multiplicative keyword boost) or `rrf` (Reciprocal Rank Fusion) |
|
|
381
|
+
| `RAG_HYBRID_WEIGHT` | `0.6` | Balance between vector and BM25. `0` = vector-only, `1.0` = BM25-only |
|
|
382
|
+
| `RAG_RRF_K` | `60` | RRF smoothing constant (only applies in `rrf` mode). Industry standard is 60. |
|
|
383
|
+
| `RAG_GROUPING` | unset | Quality filter: `similar` = top group only, `related` = top 2 groups |
|
|
384
|
+
| `RAG_MAX_DISTANCE` | unset | Drops results below this relevance threshold (use with `boost` mode; `rrf` scores are rank-based) |
|
|
385
|
+
| `RAG_GROUPING_STD_MULTIPLIER` | `1.5` | How many standard deviations between groups counts as a relevance gap |
|
|
386
|
+
| `RAG_HYBRID_CANDIDATE_MULTIPLIER` | `2` | How many extra vector candidates to grab before keyword reranking |
|
|
387
|
+
| `RAG_FTS_MAX_FAILURES` | `3` | Full-text search failures before FTS is temporarily disabled |
|
|
388
|
+
| `RAG_FTS_COOLDOWN_MS` | `300000` (5 min) | How long to wait before retrying FTS after hitting the failure limit |
|
|
389
|
+
|
|
390
|
+
### Cross-Encoder Reranking (opt-in)
|
|
391
|
+
|
|
392
|
+
| Variable | Default | What it does |
|
|
393
|
+
|----------|---------|--------------|
|
|
394
|
+
| `RAG_RERANKER_ENABLED` | `false` | Turn on cross-encoder reranking for better results |
|
|
395
|
+
| `RAG_RERANKER_MODEL` | `Xenova/ms-marco-MiniLM-L-6-v2` | HuggingFace cross-encoder model (~23MB ONNX, downloads on first use) |
|
|
396
|
+
| `RAG_RERANKER_CANDIDATE_MULTIPLIER` | `2` | Fetch this many extra candidates for the reranker to score |
|
|
397
|
+
| `RAG_RERANKER_DEVICE` | `auto` | Device for the reranker (same options as `RAG_EMBEDDING_DEVICE`) |
|
|
398
|
+
| `RERANKER_INIT_TIMEOUT_MS` | `600000` (10 min) | Timeout for model download and initialization |
|
|
399
|
+
|
|
400
|
+
### Query Expansion / HyDE (opt-in)
|
|
401
|
+
|
|
402
|
+
| Variable | Default | What it does |
|
|
403
|
+
|----------|---------|--------------|
|
|
404
|
+
| `RAG_HYDE_ENABLED` | `false` | Turn on query expansion for better recall |
|
|
405
|
+
| `RAG_HYDE_BACKEND` | `rule-based` | `rule-based` for local template expansion, `api` for LLM-based HyDE |
|
|
406
|
+
| `RAG_HYDE_EXPANSIONS` | `2` | Number of expanded queries to generate |
|
|
407
|
+
| `RAG_HYDE_API_KEY` | unset | API key for LLM backend (required when `RAG_HYDE_BACKEND=api`) |
|
|
408
|
+
| `RAG_HYDE_API_BASE_URL` | `https://api.anthropic.com` | API endpoint for LLM backend |
|
|
409
|
+
| `RAG_HYDE_API_MODEL` | `claude-haiku-4-5-20251001` | Model for LLM-based expansion |
|
|
410
|
+
|
|
411
|
+
> **Privacy note:** The `api` backend sends query text to an external LLM endpoint, which breaks the "zero cloud" guarantee. The default `rule-based` backend is fully local.
|
|
371
412
|
|
|
372
413
|
### Security (optional)
|
|
373
414
|
|
|
@@ -385,7 +426,7 @@ npx github:RobThePCGuy/rag-vault --gpu-auto
|
|
|
385
426
|
| `ALLOWED_SCAN_ROOTS` | Home directory | Directories allowed for database scanning |
|
|
386
427
|
| `JSON_BODY_LIMIT` | `5mb` | Max request body size |
|
|
387
428
|
| `REQUEST_TIMEOUT_MS` | `30000` | API request timeout |
|
|
388
|
-
| `REQUEST_LOGGING` | `false` |
|
|
429
|
+
| `REQUEST_LOGGING` | `false` | Turn on request audit logging |
|
|
389
430
|
|
|
390
431
|
> Copy [`.env.example`](.env.example) for a complete configuration template.
|
|
391
432
|
|
|
@@ -403,7 +444,7 @@ npx github:RobThePCGuy/rag-vault --gpu-auto
|
|
|
403
444
|
<details>
|
|
404
445
|
<summary><strong>Is my data really private?</strong></summary>
|
|
405
446
|
|
|
406
|
-
For local files, yes. Indexing and search run on your machine after the embedding model downloads (~90MB). RAG Vault only
|
|
447
|
+
For local files, yes. Indexing and search run on your machine after the embedding model downloads (~90MB). RAG Vault only hits the network if you choose remote URL ingestion or need to download a model.
|
|
407
448
|
|
|
408
449
|
</details>
|
|
409
450
|
|
|
@@ -417,19 +458,26 @@ Yes, after the first run. The model caches locally.
|
|
|
417
458
|
<details>
|
|
418
459
|
<summary><strong>What about GPU acceleration?</strong></summary>
|
|
419
460
|
|
|
420
|
-
RAG Vault
|
|
461
|
+
RAG Vault picks a device automatically by default (`RAG_EMBEDDING_DEVICE=auto`). When GPU providers are set up correctly, this can speed up embedding generation.
|
|
462
|
+
|
|
463
|
+
**Important:** On Windows, `auto` tries DirectML (`dml`), which requires ONNX Runtime GPU binaries. If those binaries aren't installed or your GPU setup is incomplete, the server won't start at all. It doesn't fall back to CPU gracefully. The same goes for Linux without CUDA binaries.
|
|
464
|
+
|
|
465
|
+
**Recommendation:** If you hit embedding initialization errors, set `RAG_EMBEDDING_DEVICE=cpu` in your MCP config. CPU mode is reliable on all platforms and fast enough for most workloads (the default model is only ~90MB).
|
|
466
|
+
|
|
467
|
+
```json
|
|
468
|
+
"env": {
|
|
469
|
+
"RAG_EMBEDDING_DEVICE": "cpu"
|
|
470
|
+
}
|
|
471
|
+
```
|
|
421
472
|
|
|
422
|
-
|
|
423
|
-
- Windows Node runtime typically uses DirectML (`dml`).
|
|
424
|
-
- Linux x64 can use CUDA when ONNX Runtime CUDA binaries are available.
|
|
425
|
-
- You can force CPU with `RAG_EMBEDDING_DEVICE=cpu` if you prefer stability.
|
|
473
|
+
Supported device values: `auto`, `cpu`, `cuda`, `dml`, `gpu`, `wasm`, `webgpu`, `webnn`, `webnn-npu`, `webnn-gpu`, `webnn-cpu`. The alias `directml` is also accepted and maps to `dml`.
|
|
426
474
|
|
|
427
475
|
</details>
|
|
428
476
|
|
|
429
477
|
<details>
|
|
430
478
|
<summary><strong>Can I change the embedding model?</strong></summary>
|
|
431
479
|
|
|
432
|
-
Yes. Set `MODEL_NAME` to any compatible HuggingFace model. You
|
|
480
|
+
Yes. Set `MODEL_NAME` to any compatible HuggingFace model. You'll need to delete `DB_PATH` and re-ingest because different models produce incompatible vectors.
|
|
433
481
|
|
|
434
482
|
**Recommended upgrade:** For better quality and multilingual support, use [EmbeddingGemma](https://huggingface.co/onnx-community/embeddinggemma-300m-ONNX):
|
|
435
483
|
|
|
@@ -437,7 +485,7 @@ Yes. Set `MODEL_NAME` to any compatible HuggingFace model. You must delete `DB_P
|
|
|
437
485
|
"MODEL_NAME": "onnx-community/embeddinggemma-300m-ONNX"
|
|
438
486
|
```
|
|
439
487
|
|
|
440
|
-
|
|
488
|
+
It's a solid pick if you need multilingual support or higher-quality retrieval.
|
|
441
489
|
|
|
442
490
|
**Other specialized models:**
|
|
443
491
|
- Scientific: `sentence-transformers/allenai-specter`
|
|
@@ -456,14 +504,16 @@ Copy the `DB_PATH` directory (default: `./lancedb/`).
|
|
|
456
504
|
|
|
457
505
|
| Problem | Solution |
|
|
458
506
|
|---------|----------|
|
|
459
|
-
| No results found | Documents
|
|
460
|
-
| Model download failed | Check internet connection.
|
|
507
|
+
| No results found | Documents need to be ingested first. Run "List all ingested files" to check. |
|
|
508
|
+
| Model download failed | Check your internet connection. The model is ~90MB from HuggingFace. |
|
|
509
|
+
| Embedding initialization fails | Set `RAG_EMBEDDING_DEVICE=cpu` in your MCP config. The `auto` default can fail on Windows without GPU binaries. |
|
|
510
|
+
| `Protobuf parsing failed` | Corrupted model cache. Delete `CACHE_DIR` (default: `./models/`) and restart. RAG Vault also auto-retries with an isolated recovery cache. |
|
|
461
511
|
| File too large | Default limit is 100MB. Set `MAX_FILE_SIZE` higher or split the file. |
|
|
462
512
|
| Path outside BASE_DIR | All file paths must be under `BASE_DIR`. Use absolute paths. |
|
|
463
|
-
| MCP tools not showing |
|
|
513
|
+
| MCP tools not showing | Check your config syntax and restart your AI tool completely (Cmd+Q on Mac). |
|
|
464
514
|
| `mcp-publisher login github` fails with `slow_down` | Use token login instead: `mcp-publisher login github --token "$(gh auth token)"` (or pass a PAT). |
|
|
465
|
-
| 401 Unauthorized | API key required. Set `RAG_API_KEY` or use correct header format. |
|
|
466
|
-
| 429 Too Many Requests | Rate limited. Wait for reset or increase `RATE_LIMIT_MAX_REQUESTS`. |
|
|
515
|
+
| 401 Unauthorized | API key required. Set `RAG_API_KEY` or use the correct header format. |
|
|
516
|
+
| 429 Too Many Requests | Rate limited. Wait for the reset or increase `RATE_LIMIT_MAX_REQUESTS`. |
|
|
467
517
|
| CORS errors | Add your origin to `CORS_ORIGINS` environment variable. |
|
|
468
518
|
|
|
469
519
|
## Development
|
|
@@ -508,7 +558,7 @@ pnpm release:dry
|
|
|
508
558
|
|
|
509
559
|
### Test Tiers
|
|
510
560
|
|
|
511
|
-
- `pnpm test:unit`: deterministic tests for local/CI quality checks
|
|
561
|
+
- `pnpm test:unit`: deterministic tests for local/CI quality checks. Doesn't include model-download integration paths.
|
|
512
562
|
- `pnpm test:integration`: full integration and E2E workflows, including embedding model initialization.
|
|
513
563
|
|
|
514
564
|
Use `RUN_EMBEDDING_INTEGRATION=1` to explicitly opt into network/model-dependent suites.
|
|
@@ -518,8 +568,8 @@ Use `RUN_EMBEDDING_INTEGRATION=1` to explicitly opt into network/model-dependent
|
|
|
518
568
|
- Releases are local and scripted via `scripts/release-npm.sh`.
|
|
519
569
|
- Supported bumps: `patch`, `minor`, `major`.
|
|
520
570
|
- The script runs dependency installs, `pnpm check:all`, and `pnpm ui:build` before touching version files.
|
|
521
|
-
- `package.json` and `server.json` versions
|
|
522
|
-
- `pnpm release:dry`
|
|
571
|
+
- `package.json` and `server.json` versions only get updated after checks pass, and they're auto-restored if any later step fails.
|
|
572
|
+
- `pnpm release:dry` runs the full gate plus npm dry-run publish and always restores version files.
|
|
523
573
|
|
|
524
574
|
### Project Structure
|
|
525
575
|
|
|
@@ -531,11 +581,13 @@ src/
|
|
|
531
581
|
├── errors/ # Error handling utilities
|
|
532
582
|
├── explainability/ # Keyword-based result explanations
|
|
533
583
|
├── flywheel/ # Feedback loop (pin/dismiss reranking)
|
|
584
|
+
├── hyde/ # Query expansion + HyDE (LLM-based)
|
|
534
585
|
├── parser/ # PDF, DOCX, HTML parsing
|
|
535
586
|
├── query/ # Advanced query syntax parser
|
|
587
|
+
├── reranker/ # Cross-encoder reranking (Transformers.js)
|
|
536
588
|
├── server/ # MCP tool handlers + remote transport
|
|
537
589
|
├── utils/ # Config, file helpers, process handlers
|
|
538
|
-
├── vectordb/ # LanceDB + hybrid search
|
|
590
|
+
├── vectordb/ # LanceDB + hybrid search (boost + RRF)
|
|
539
591
|
└── web/ # Express server + REST API
|
|
540
592
|
|
|
541
593
|
web-ui/ # React frontend (Vite + Tailwind)
|
|
@@ -554,6 +606,6 @@ MIT: free for personal and commercial use.
|
|
|
554
606
|
|
|
555
607
|
Built with [Model Context Protocol](https://modelcontextprotocol.io/), [LanceDB](https://lancedb.com/), and [Transformers.js](https://huggingface.co/docs/transformers.js).
|
|
556
608
|
|
|
557
|
-
> Started as a fork of [mcp-local-rag](https://github.com/shinpr/mcp-local-rag) by [Shinsuke Kagawa](https://github.com/shinpr). Now it
|
|
558
|
-
> Huge credit to upstream contributors for the foundation, I
|
|
609
|
+
> Started as a fork of [mcp-local-rag](https://github.com/shinpr/mcp-local-rag) by [Shinsuke Kagawa](https://github.com/shinpr). Now it's its own thing.
|
|
610
|
+
> Huge credit to upstream contributors for the foundation, I've been iterating hard from there.
|
|
559
611
|
> Local-first dev tools, all the way.
|
|
@@ -34,7 +34,6 @@ export interface EmbedderInterface {
|
|
|
34
34
|
* @returns true if chunk is garbage and should be removed
|
|
35
35
|
*/
|
|
36
36
|
export declare function isGarbageChunk(text: string): boolean;
|
|
37
|
-
export declare const DEFAULT_SEMANTIC_CHUNKER_CONFIG: SemanticChunkerConfig;
|
|
38
37
|
/**
|
|
39
38
|
* Semantic chunker using Max-Min algorithm
|
|
40
39
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-chunker.d.ts","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAQ3C;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,CAAC,EAAE,MAAM,CAAA;IACT,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;CACjD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBpD;
|
|
1
|
+
{"version":3,"file":"semantic-chunker.d.ts","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAQ3C;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,CAAC,EAAE,MAAM,CAAA;IACT,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;CACjD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAmBpD;AAiBD;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIvD;;;;;;OAMG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsChF;;OAEG;IACH,OAAO,CAAC,cAAc;IAmEtB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,OAAO;IAIf;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;CAGzD"}
|
|
@@ -54,7 +54,7 @@ export function isGarbageChunk(text) {
|
|
|
54
54
|
// ============================================
|
|
55
55
|
// Default Configuration
|
|
56
56
|
// ============================================
|
|
57
|
-
|
|
57
|
+
const DEFAULT_SEMANTIC_CHUNKER_CONFIG = {
|
|
58
58
|
hardThreshold: 0.6,
|
|
59
59
|
initConst: 1.5,
|
|
60
60
|
c: 0.9,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,0FAA0F;AAG1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AA4B3E,+CAA+C;AAC/C,qCAAqC;AACrC,+CAA+C;AAE/C;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,CAAA;AAErB;;;;GAIG;AACH,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAErC,uDAAuD;IACvD,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IAE7C,yDAAyD;IACzD,IAAI,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAErE,kDAAkD;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC5C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;IACjD,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAA;IAEhD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+CAA+C;AAC/C,wBAAwB;AACxB,+CAA+C;AAE/C,MAAM
|
|
1
|
+
{"version":3,"file":"semantic-chunker.js","sourceRoot":"","sources":["../../src/chunker/semantic-chunker.ts"],"names":[],"mappings":"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"}
|
package/dist/embedder/index.d.ts
CHANGED
|
@@ -14,6 +14,11 @@ export interface EmbedderConfig {
|
|
|
14
14
|
* Examples: auto, cpu, cuda, dml, webgpu
|
|
15
15
|
*/
|
|
16
16
|
device?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Timeout for model initialization/download in milliseconds.
|
|
19
|
+
* Default: 600000 (10 minutes). Configure via EMBEDDER_INIT_TIMEOUT_MS env var.
|
|
20
|
+
*/
|
|
21
|
+
initTimeoutMs?: number;
|
|
17
22
|
}
|
|
18
23
|
/**
|
|
19
24
|
* Embedding generation class using Transformers.js
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAMnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAMnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AA6DD;;;;;;;GAOG;AACH,qBAAa,QAAQ;IAEnB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,EAAE,cAAc;IAIlC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DjC;;;OAGG;YACW,iBAAiB;IAkC/B;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiC5C;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAoC5E;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH,OAAO,CAAC,aAAa;CAiBtB"}
|
package/dist/embedder/index.js
CHANGED
|
@@ -19,6 +19,37 @@ const SUPPORTED_EMBEDDING_DEVICES = [
|
|
|
19
19
|
'webnn-cpu',
|
|
20
20
|
];
|
|
21
21
|
const SUPPORTED_EMBEDDING_DEVICE_SET = new Set(SUPPORTED_EMBEDDING_DEVICES);
|
|
22
|
+
/** Default init timeout: 10 minutes (model download can be ~90MB) */
|
|
23
|
+
const DEFAULT_INIT_TIMEOUT_MS = 10 * 60 * 1000;
|
|
24
|
+
/**
|
|
25
|
+
* Get init timeout from config or environment variable
|
|
26
|
+
*/
|
|
27
|
+
function getInitTimeoutMs(configValue) {
|
|
28
|
+
if (configValue !== undefined && configValue > 0)
|
|
29
|
+
return configValue;
|
|
30
|
+
const envValue = process.env['EMBEDDER_INIT_TIMEOUT_MS'];
|
|
31
|
+
if (envValue) {
|
|
32
|
+
const parsed = Number.parseInt(envValue, 10);
|
|
33
|
+
if (!Number.isNaN(parsed) && parsed > 0)
|
|
34
|
+
return parsed;
|
|
35
|
+
}
|
|
36
|
+
return DEFAULT_INIT_TIMEOUT_MS;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Wrap a promise with a timeout
|
|
40
|
+
*/
|
|
41
|
+
function withTimeout(promise, ms, label) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const timer = setTimeout(() => reject(new EmbeddingError(`${label} timed out after ${Math.round(ms / 1000)}s`)), ms);
|
|
44
|
+
promise.then((value) => {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
resolve(value);
|
|
47
|
+
}, (error) => {
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
reject(error);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
22
53
|
// ============================================
|
|
23
54
|
// Embedder Class
|
|
24
55
|
// ============================================
|
|
@@ -58,9 +89,10 @@ export class Embedder {
|
|
|
58
89
|
const device = this.resolveDevice();
|
|
59
90
|
console.error(`Embedder: Setting cache directory to "${this.config.cacheDir}"`);
|
|
60
91
|
console.error(`Embedder: Using device preference "${device}"`);
|
|
61
|
-
|
|
92
|
+
const timeoutMs = getInitTimeoutMs(this.config.initTimeoutMs);
|
|
93
|
+
console.error(`Embedder: Loading model "${this.config.modelPath}" (timeout: ${Math.round(timeoutMs / 1000)}s)...`);
|
|
62
94
|
// Use type assertion to avoid TS2590 (union type too complex with @types/jsdom)
|
|
63
|
-
this.model = await pipeline('feature-extraction', this.config.modelPath, { device });
|
|
95
|
+
this.model = await withTimeout(pipeline('feature-extraction', this.config.modelPath, { device }), timeoutMs, 'Embedder model initialization');
|
|
64
96
|
console.error('Embedder: Model loaded successfully');
|
|
65
97
|
}
|
|
66
98
|
catch (error) {
|
|
@@ -72,7 +104,7 @@ export class Embedder {
|
|
|
72
104
|
await mkdir(recoveryCacheDir, { recursive: true });
|
|
73
105
|
env.cacheDir = recoveryCacheDir;
|
|
74
106
|
const device = this.resolveDevice();
|
|
75
|
-
this.model = await pipeline('feature-extraction', this.config.modelPath, { device });
|
|
107
|
+
this.model = await withTimeout(pipeline('feature-extraction', this.config.modelPath, { device }), getInitTimeoutMs(this.config.initTimeoutMs), 'Embedder model initialization (recovery)');
|
|
76
108
|
console.error('Embedder: Model loaded successfully via recovery cache');
|
|
77
109
|
return;
|
|
78
110
|
}
|
|
@@ -97,14 +129,17 @@ export class Embedder {
|
|
|
97
129
|
await this.initPromise;
|
|
98
130
|
return;
|
|
99
131
|
}
|
|
100
|
-
//
|
|
132
|
+
// Synchronous guard: assign promise in the same tick as the check
|
|
133
|
+
// to prevent concurrent callers from both starting initialization
|
|
101
134
|
console.error('Embedder: First use detected. Initializing model (downloading ~90MB, may take 1-2 minutes)...');
|
|
102
|
-
|
|
135
|
+
const initWork = this.initialize().catch((error) => {
|
|
103
136
|
// Clear initPromise on failure to allow retry
|
|
104
137
|
this.initPromise = null;
|
|
105
138
|
// Enhance error message with detailed guidance
|
|
106
139
|
throw new EmbeddingError(`Failed to initialize embedder on first use: ${error.message}\n\nPossible causes:\n • Network connectivity issues during model download\n • Insufficient disk space (need ~90MB)\n • Corrupted model cache\n\nRecommended actions:\n 1. Check your internet connection and try again\n 2. Ensure sufficient disk space is available\n 3. If problem persists, delete cache: ${this.config.cacheDir}\n 4. Then retry your query\n`, error);
|
|
107
140
|
});
|
|
141
|
+
// Assign synchronously before any await to prevent double-init race
|
|
142
|
+
this.initPromise = initWork;
|
|
108
143
|
await this.initPromise;
|
|
109
144
|
}
|
|
110
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,oDAAoD;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedder/index.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare const ErrorCodes: {
|
|
|
15
15
|
readonly AUTH_REQUIRED: "AUTH_REQUIRED";
|
|
16
16
|
readonly AUTH_INVALID: "AUTH_INVALID";
|
|
17
17
|
};
|
|
18
|
-
|
|
18
|
+
type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
|
|
19
19
|
/**
|
|
20
20
|
* Base error class for RAG operations
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;CAsBN,CAAA;AAEV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;CAsBN,CAAA;AAEV,KAAK,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA;AAM7D;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,SAAS,CAAA;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAA;IAClC,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;gBAG1D,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,SAAS,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,KAAK,CAAC,EAAE,KAAK,CAAA;KACT;IASR,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASlC;AAMD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK;CAe9E;AAMD;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,GAAE,SAAqC;CAaxF;AAMD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAa3C;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,QAAQ;gBACxC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAa3C;AAMD;;GAEG;AACH,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAa3C;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAKpD"}
|
|
@@ -45,7 +45,7 @@ interface FlywheelConfig {
|
|
|
45
45
|
* FeedbackStore: In-memory store for feedback events
|
|
46
46
|
* Can be persisted to disk for long-term learning
|
|
47
47
|
*/
|
|
48
|
-
|
|
48
|
+
declare class FeedbackStore {
|
|
49
49
|
private events;
|
|
50
50
|
private config;
|
|
51
51
|
private pinnedPairs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;CACpB;AAoBD;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,OAAO,GAAG,kBAAkB,GAAG,eAAe,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,EAAE,QAAQ,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAA;IAClB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAA;CACpB;AAoBD;;;GAGG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAG9B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,YAAY,CAA8C;gBAEtD,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMrD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAMzD;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO;IAiBnE;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,EAAE;IAsC1E;;OAEG;IACH,cAAc,IAAI,MAAM;IAOxB;;OAEG;IACH,YAAY,IAAI,aAAa,EAAE;IAI/B;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAkB3C;;OAEG;IACH,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE;IAgB/E;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgClD;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD"}
|
|
@@ -23,7 +23,7 @@ function chunkKey(ref) {
|
|
|
23
23
|
* FeedbackStore: In-memory store for feedback events
|
|
24
24
|
* Can be persisted to disk for long-term learning
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
class FeedbackStore {
|
|
27
27
|
events = [];
|
|
28
28
|
config;
|
|
29
29
|
// Index structures for fast lookup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,sEAAsE;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAkDxD,MAAM,cAAc,GAAmB;IACrC,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;CAClD,CAAA;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,GAAa;IAC7B,4CAA4C;IAC5C,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;IAChC,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,EAAE,CAAA;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/flywheel/feedback.ts"],"names":[],"mappings":"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"}
|