@robthepcguy/rag-vault 1.0.0 → 1.1.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 +441 -421
- package/dist/errors/index.d.ts +2 -6
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +8 -16
- package/dist/errors/index.js.map +1 -1
- package/dist/explainability/index.d.ts +2 -0
- package/dist/explainability/index.d.ts.map +1 -0
- package/dist/explainability/index.js +8 -0
- package/dist/explainability/index.js.map +1 -0
- package/dist/explainability/keywords.d.ts +18 -0
- package/dist/explainability/keywords.d.ts.map +1 -0
- package/dist/explainability/keywords.js +237 -0
- package/dist/explainability/keywords.js.map +1 -0
- package/dist/flywheel/feedback.d.ts +105 -0
- package/dist/flywheel/feedback.d.ts.map +1 -0
- package/dist/flywheel/feedback.js +219 -0
- package/dist/flywheel/feedback.js.map +1 -0
- package/dist/flywheel/index.d.ts +2 -0
- package/dist/flywheel/index.d.ts.map +1 -0
- package/dist/flywheel/index.js +9 -0
- package/dist/flywheel/index.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/server/index.d.ts +40 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +113 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/raw-data-utils.d.ts.map +1 -1
- package/dist/server/raw-data-utils.js.map +1 -1
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +84 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/math.d.ts +0 -7
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +0 -14
- package/dist/utils/math.js.map +1 -1
- package/dist/vectordb/index.d.ts +57 -2
- package/dist/vectordb/index.d.ts.map +1 -1
- package/dist/vectordb/index.js +255 -33
- package/dist/vectordb/index.js.map +1 -1
- package/dist/web/api-routes.d.ts.map +1 -1
- package/dist/web/api-routes.js +120 -7
- package/dist/web/api-routes.js.map +1 -1
- package/dist/web/config-routes.d.ts.map +1 -1
- package/dist/web/config-routes.js +84 -2
- package/dist/web/config-routes.js.map +1 -1
- package/dist/web/database-manager.d.ts +119 -1
- package/dist/web/database-manager.d.ts.map +1 -1
- package/dist/web/database-manager.js +339 -51
- package/dist/web/database-manager.js.map +1 -1
- package/dist/web/http-server.d.ts.map +1 -1
- package/dist/web/http-server.js +12 -2
- package/dist/web/http-server.js.map +1 -1
- package/dist/web/index.js +18 -10
- package/dist/web/index.js.map +1 -1
- package/dist/web/middleware/error-handler.d.ts +0 -16
- package/dist/web/middleware/error-handler.d.ts.map +1 -1
- package/dist/web/middleware/error-handler.js +0 -18
- package/dist/web/middleware/error-handler.js.map +1 -1
- package/dist/web/middleware/request-logger.d.ts +2 -1
- package/dist/web/middleware/request-logger.d.ts.map +1 -1
- package/package.json +129 -135
- package/skills/rag-vault/SKILL.md +111 -111
- package/web-ui/dist/assets/index-BcRp9-z9.js +120 -0
- package/web-ui/dist/assets/index-ej8i4PGl.css +1 -0
- package/web-ui/dist/index.html +14 -0
- package/web-ui/dist/vite.svg +3 -0
- package/dist/utils/logger.d.ts +0 -36
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -64
- package/dist/utils/logger.js.map +0 -1
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.DatabaseManager = void 0;
|
|
7
|
+
exports.DatabaseManager = exports.AVAILABLE_MODELS = void 0;
|
|
8
8
|
const node_fs_1 = require("node:fs");
|
|
9
9
|
const promises_1 = require("node:fs/promises");
|
|
10
10
|
const node_os_1 = require("node:os");
|
|
@@ -17,6 +17,8 @@ const schemas_js_1 = require("../server/schemas.js");
|
|
|
17
17
|
const CONFIG_DIR = node_path_1.default.join((0, node_os_1.homedir)(), '.rag-vault');
|
|
18
18
|
/** Recent databases file path */
|
|
19
19
|
const RECENT_DBS_FILE = node_path_1.default.join(CONFIG_DIR, 'recent-dbs.json');
|
|
20
|
+
/** User-added allowed roots file path */
|
|
21
|
+
const ALLOWED_ROOTS_FILE = node_path_1.default.join(CONFIG_DIR, 'allowed-roots.json');
|
|
20
22
|
/** LanceDB directory name (indicator of a valid database) */
|
|
21
23
|
const LANCEDB_DIR_NAME = 'chunks.lance';
|
|
22
24
|
/** Maximum number of recent databases to track */
|
|
@@ -25,7 +27,7 @@ const MAX_RECENT_DATABASES = 10;
|
|
|
25
27
|
* Get allowed scan roots from environment variable or default to home directory
|
|
26
28
|
* ALLOWED_SCAN_ROOTS: comma-separated list of absolute paths
|
|
27
29
|
*/
|
|
28
|
-
function
|
|
30
|
+
function getEnvAllowedScanRoots() {
|
|
29
31
|
const envRoots = process.env['ALLOWED_SCAN_ROOTS'];
|
|
30
32
|
if (envRoots) {
|
|
31
33
|
return envRoots.split(',').map((p) => node_path_1.default.resolve(p.trim()));
|
|
@@ -34,12 +36,39 @@ function getAllowedScanRoots() {
|
|
|
34
36
|
return [(0, node_os_1.homedir)()];
|
|
35
37
|
}
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @returns true if path is within allowed roots
|
|
39
|
+
* Read user-added allowed roots from config file
|
|
40
|
+
* Note: This is async to avoid blocking the event loop
|
|
40
41
|
*/
|
|
41
|
-
function
|
|
42
|
-
|
|
42
|
+
async function readUserAllowedRoots() {
|
|
43
|
+
if (!(0, node_fs_1.existsSync)(ALLOWED_ROOTS_FILE)) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const content = JSON.parse(await (0, promises_1.readFile)(ALLOWED_ROOTS_FILE, 'utf-8'));
|
|
48
|
+
if (Array.isArray(content.roots)) {
|
|
49
|
+
return content.roots.map((p) => node_path_1.default.resolve(p));
|
|
50
|
+
}
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Write user-added allowed roots to config file
|
|
59
|
+
* Note: This is async to avoid blocking the event loop
|
|
60
|
+
*/
|
|
61
|
+
async function writeUserAllowedRoots(roots) {
|
|
62
|
+
const dir = node_path_1.default.dirname(ALLOWED_ROOTS_FILE);
|
|
63
|
+
if (!(0, node_fs_1.existsSync)(dir)) {
|
|
64
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
65
|
+
}
|
|
66
|
+
await (0, promises_1.writeFile)(ALLOWED_ROOTS_FILE, JSON.stringify({ roots }, null, 2), 'utf-8');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if a path is within a set of allowed roots
|
|
70
|
+
*/
|
|
71
|
+
function isPathWithinRoots(targetPath, allowedRoots) {
|
|
43
72
|
let resolvedPath;
|
|
44
73
|
try {
|
|
45
74
|
// Resolve to absolute path and resolve symlinks
|
|
@@ -69,6 +98,47 @@ function expandTilde(filePath) {
|
|
|
69
98
|
}
|
|
70
99
|
return filePath;
|
|
71
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Preset embedding models
|
|
103
|
+
*/
|
|
104
|
+
exports.AVAILABLE_MODELS = [
|
|
105
|
+
{
|
|
106
|
+
id: 'Xenova/all-MiniLM-L6-v2',
|
|
107
|
+
name: 'all-MiniLM-L6-v2',
|
|
108
|
+
description: 'Fast, general-purpose model (384 dimensions)',
|
|
109
|
+
isDefault: true,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: 'Xenova/all-mpnet-base-v2',
|
|
113
|
+
name: 'all-mpnet-base-v2',
|
|
114
|
+
description: 'Higher quality, slower (768 dimensions)',
|
|
115
|
+
isDefault: false,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: 'Xenova/bge-small-en-v1.5',
|
|
119
|
+
name: 'bge-small-en-v1.5',
|
|
120
|
+
description: 'Optimized for retrieval (384 dimensions)',
|
|
121
|
+
isDefault: false,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
id: 'onnx-community/embeddinggemma-300m-ONNX',
|
|
125
|
+
name: 'embeddinggemma-300M',
|
|
126
|
+
description: 'High-quality multilingual (300M params, 100+ languages)',
|
|
127
|
+
isDefault: false,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 'sentence-transformers/allenai-specter',
|
|
131
|
+
name: 'allenai-specter',
|
|
132
|
+
description: 'Optimized for scientific papers and citations',
|
|
133
|
+
isDefault: false,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
id: 'jinaai/jina-embeddings-v2-base-code',
|
|
137
|
+
name: 'jina-code-v2',
|
|
138
|
+
description: 'Optimized for code and technical documentation',
|
|
139
|
+
isDefault: false,
|
|
140
|
+
},
|
|
141
|
+
];
|
|
72
142
|
// ============================================
|
|
73
143
|
// DatabaseManager Class
|
|
74
144
|
// ============================================
|
|
@@ -94,15 +164,20 @@ class DatabaseManager {
|
|
|
94
164
|
*/
|
|
95
165
|
async initialize(dbPath) {
|
|
96
166
|
await this.ensureConfigDir();
|
|
167
|
+
// Look up stored model name from recent databases
|
|
168
|
+
const recentDbs = await this.getRecentDatabases();
|
|
169
|
+
const storedEntry = recentDbs.find((db) => db.path === dbPath);
|
|
170
|
+
const effectiveModelName = storedEntry?.modelName || this.baseConfig.modelName;
|
|
97
171
|
const config = {
|
|
98
172
|
...this.baseConfig,
|
|
99
173
|
dbPath,
|
|
174
|
+
modelName: effectiveModelName,
|
|
100
175
|
};
|
|
101
176
|
this.currentServer = this.serverFactory(config);
|
|
102
177
|
this.currentConfig = config;
|
|
103
178
|
await this.currentServer.initialize();
|
|
104
|
-
// Add to recent databases
|
|
105
|
-
await this.addToRecent(dbPath,
|
|
179
|
+
// Add to recent databases with the model name
|
|
180
|
+
await this.addToRecent(dbPath, effectiveModelName);
|
|
106
181
|
}
|
|
107
182
|
/**
|
|
108
183
|
* Get current RAG server instance
|
|
@@ -162,8 +237,12 @@ class DatabaseManager {
|
|
|
162
237
|
if (!(0, node_fs_1.existsSync)(lanceDbPath)) {
|
|
163
238
|
throw new Error(`Invalid database: ${resolvedPath} (missing LanceDB data)`);
|
|
164
239
|
}
|
|
240
|
+
// Look up stored model name from recent databases
|
|
241
|
+
const recentDbs = await this.getRecentDatabases();
|
|
242
|
+
const storedEntry = recentDbs.find((db) => db.path === resolvedPath);
|
|
243
|
+
const modelName = storedEntry?.modelName;
|
|
165
244
|
// Set promise atomically before any async operations
|
|
166
|
-
this.switchPromise = this.performSwitch(resolvedPath).finally(() => {
|
|
245
|
+
this.switchPromise = this.performSwitch(resolvedPath, modelName).finally(() => {
|
|
167
246
|
this.switchPromise = null;
|
|
168
247
|
});
|
|
169
248
|
return this.switchPromise;
|
|
@@ -171,22 +250,25 @@ class DatabaseManager {
|
|
|
171
250
|
/**
|
|
172
251
|
* Internal method to perform the actual database switch
|
|
173
252
|
*/
|
|
174
|
-
async performSwitch(resolvedPath) {
|
|
253
|
+
async performSwitch(resolvedPath, modelName) {
|
|
175
254
|
// Close current server
|
|
176
255
|
if (this.currentServer) {
|
|
177
256
|
await this.currentServer.close();
|
|
178
257
|
}
|
|
179
|
-
//
|
|
258
|
+
// Use stored model name if available, otherwise fall back to baseConfig
|
|
259
|
+
const effectiveModelName = modelName || this.baseConfig.modelName;
|
|
260
|
+
// Create new server with new path and correct model
|
|
180
261
|
const config = {
|
|
181
262
|
...this.baseConfig,
|
|
182
263
|
dbPath: resolvedPath,
|
|
264
|
+
modelName: effectiveModelName,
|
|
183
265
|
};
|
|
184
266
|
this.currentServer = this.serverFactory(config);
|
|
185
267
|
this.currentConfig = config;
|
|
186
268
|
await this.currentServer.initialize();
|
|
187
|
-
// Update recent databases
|
|
188
|
-
await this.addToRecent(resolvedPath,
|
|
189
|
-
console.log(`Switched to database: ${resolvedPath}`);
|
|
269
|
+
// Update recent databases with the model name
|
|
270
|
+
await this.addToRecent(resolvedPath, effectiveModelName);
|
|
271
|
+
console.log(`Switched to database: ${resolvedPath} (model: ${effectiveModelName})`);
|
|
190
272
|
}
|
|
191
273
|
/**
|
|
192
274
|
* Create a new database
|
|
@@ -205,19 +287,19 @@ class DatabaseManager {
|
|
|
205
287
|
await (0, promises_1.mkdir)(resolvedPath, { recursive: true });
|
|
206
288
|
// Switch to the new database (it will be empty initially)
|
|
207
289
|
// The VectorStore will create the table on first data insertion
|
|
208
|
-
await this.switchToNewDatabase(resolvedPath);
|
|
290
|
+
await this.switchToNewDatabase(resolvedPath, options.modelName);
|
|
209
291
|
}
|
|
210
292
|
/**
|
|
211
293
|
* Switch to a new (possibly empty) database
|
|
212
294
|
*
|
|
213
295
|
* Uses promise-based mutex to prevent race conditions from concurrent switch attempts.
|
|
214
296
|
*/
|
|
215
|
-
async switchToNewDatabase(newDbPath) {
|
|
297
|
+
async switchToNewDatabase(newDbPath, modelName) {
|
|
216
298
|
if (this.switchPromise) {
|
|
217
299
|
throw new Error('Database switch already in progress');
|
|
218
300
|
}
|
|
219
301
|
// Set promise atomically before any async operations
|
|
220
|
-
this.switchPromise = this.performSwitchToNew(newDbPath).finally(() => {
|
|
302
|
+
this.switchPromise = this.performSwitchToNew(newDbPath, modelName).finally(() => {
|
|
221
303
|
this.switchPromise = null;
|
|
222
304
|
});
|
|
223
305
|
return this.switchPromise;
|
|
@@ -225,19 +307,22 @@ class DatabaseManager {
|
|
|
225
307
|
/**
|
|
226
308
|
* Internal method to perform the actual switch to a new database
|
|
227
309
|
*/
|
|
228
|
-
async performSwitchToNew(newDbPath) {
|
|
310
|
+
async performSwitchToNew(newDbPath, modelName) {
|
|
229
311
|
if (this.currentServer) {
|
|
230
312
|
await this.currentServer.close();
|
|
231
313
|
}
|
|
314
|
+
// Use provided modelName or fall back to baseConfig
|
|
315
|
+
const effectiveModelName = modelName || this.baseConfig.modelName;
|
|
232
316
|
const config = {
|
|
233
317
|
...this.baseConfig,
|
|
234
318
|
dbPath: newDbPath,
|
|
319
|
+
modelName: effectiveModelName,
|
|
235
320
|
};
|
|
236
321
|
this.currentServer = this.serverFactory(config);
|
|
237
322
|
this.currentConfig = config;
|
|
238
323
|
await this.currentServer.initialize();
|
|
239
|
-
await this.addToRecent(newDbPath,
|
|
240
|
-
console.log(`Created and switched to database: ${newDbPath}`);
|
|
324
|
+
await this.addToRecent(newDbPath, effectiveModelName);
|
|
325
|
+
console.log(`Created and switched to database: ${newDbPath} (model: ${effectiveModelName})`);
|
|
241
326
|
}
|
|
242
327
|
/**
|
|
243
328
|
* Get list of recent databases
|
|
@@ -278,21 +363,124 @@ class DatabaseManager {
|
|
|
278
363
|
return [];
|
|
279
364
|
}
|
|
280
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* Get the base directory (dbPath directory)
|
|
368
|
+
*/
|
|
369
|
+
getBaseDir() {
|
|
370
|
+
return this.currentConfig ? node_path_1.default.dirname(this.currentConfig.dbPath) : (0, node_os_1.homedir)();
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get all effective allowed roots (env + baseDir + user-added)
|
|
374
|
+
*/
|
|
375
|
+
async getEffectiveAllowedRoots() {
|
|
376
|
+
const envRoots = getEnvAllowedScanRoots();
|
|
377
|
+
const userRoots = await readUserAllowedRoots();
|
|
378
|
+
const baseDir = this.getBaseDir();
|
|
379
|
+
// Combine all sources and deduplicate
|
|
380
|
+
const allRoots = new Set([...envRoots, baseDir, ...userRoots]);
|
|
381
|
+
return Array.from(allRoots);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Check if a path is within allowed roots
|
|
385
|
+
*/
|
|
386
|
+
async isPathAllowed(targetPath) {
|
|
387
|
+
const allowedRoots = await this.getEffectiveAllowedRoots();
|
|
388
|
+
return isPathWithinRoots(targetPath, allowedRoots);
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Get allowed roots info for API response
|
|
392
|
+
*/
|
|
393
|
+
async getAllowedRootsInfo() {
|
|
394
|
+
const [roots, userRoots] = await Promise.all([
|
|
395
|
+
this.getEffectiveAllowedRoots(),
|
|
396
|
+
readUserAllowedRoots(),
|
|
397
|
+
]);
|
|
398
|
+
return {
|
|
399
|
+
roots,
|
|
400
|
+
baseDir: this.getBaseDir(),
|
|
401
|
+
envRoots: getEnvAllowedScanRoots(),
|
|
402
|
+
userRoots,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Add a user-allowed root
|
|
407
|
+
*/
|
|
408
|
+
async addUserAllowedRoot(rootPath) {
|
|
409
|
+
const resolved = node_path_1.default.resolve(expandTilde(rootPath));
|
|
410
|
+
if (!(0, node_fs_1.existsSync)(resolved)) {
|
|
411
|
+
throw new Error(`Path does not exist: ${resolved}`);
|
|
412
|
+
}
|
|
413
|
+
const roots = await readUserAllowedRoots();
|
|
414
|
+
if (!roots.includes(resolved)) {
|
|
415
|
+
roots.push(resolved);
|
|
416
|
+
await writeUserAllowedRoots(roots);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Remove a user-allowed root
|
|
421
|
+
*/
|
|
422
|
+
async removeUserAllowedRoot(rootPath) {
|
|
423
|
+
const resolved = node_path_1.default.resolve(expandTilde(rootPath));
|
|
424
|
+
const roots = await readUserAllowedRoots();
|
|
425
|
+
const filtered = roots.filter((r) => r !== resolved);
|
|
426
|
+
await writeUserAllowedRoots(filtered);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* List directory contents for folder browser
|
|
430
|
+
* @param dirPath - The directory path to list
|
|
431
|
+
* @param showHidden - Whether to include hidden files (starting with .)
|
|
432
|
+
*/
|
|
433
|
+
async listDirectory(dirPath, showHidden = false) {
|
|
434
|
+
const resolved = node_path_1.default.resolve(expandTilde(dirPath));
|
|
435
|
+
// Allow browsing root directories and paths within allowed roots
|
|
436
|
+
// For security, we still allow browsing but the user can only add paths as allowed roots
|
|
437
|
+
if (!(0, node_fs_1.existsSync)(resolved)) {
|
|
438
|
+
throw new Error(`Directory does not exist: ${resolved}`);
|
|
439
|
+
}
|
|
440
|
+
const dirStat = await (0, promises_1.stat)(resolved);
|
|
441
|
+
if (!dirStat.isDirectory()) {
|
|
442
|
+
throw new Error(`Path is not a directory: ${resolved}`);
|
|
443
|
+
}
|
|
444
|
+
const entries = await (0, promises_1.readdir)(resolved, { withFileTypes: true });
|
|
445
|
+
const results = [];
|
|
446
|
+
for (const entry of entries) {
|
|
447
|
+
// Skip hidden files/directories unless showHidden is true
|
|
448
|
+
if (!showHidden && entry.name.startsWith('.'))
|
|
449
|
+
continue;
|
|
450
|
+
results.push({
|
|
451
|
+
name: entry.name,
|
|
452
|
+
path: node_path_1.default.join(resolved, entry.name),
|
|
453
|
+
isDirectory: entry.isDirectory(),
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
// Sort: directories first, then alphabetically
|
|
457
|
+
results.sort((a, b) => {
|
|
458
|
+
if (a.isDirectory && !b.isDirectory)
|
|
459
|
+
return -1;
|
|
460
|
+
if (!a.isDirectory && b.isDirectory)
|
|
461
|
+
return 1;
|
|
462
|
+
return a.name.localeCompare(b.name);
|
|
463
|
+
});
|
|
464
|
+
return results;
|
|
465
|
+
}
|
|
281
466
|
/**
|
|
282
467
|
* Scan a directory for LanceDB databases
|
|
283
468
|
*
|
|
284
469
|
* Security: Only scans within allowed roots (ALLOWED_SCAN_ROOTS env var or home directory)
|
|
285
470
|
* to prevent path traversal attacks.
|
|
471
|
+
*
|
|
472
|
+
* @param scanPath - The path to scan
|
|
473
|
+
* @param maxDepth - Maximum depth to scan (default 2)
|
|
286
474
|
*/
|
|
287
|
-
async scanForDatabases(scanPath) {
|
|
475
|
+
async scanForDatabases(scanPath, maxDepth = 2) {
|
|
288
476
|
// Expand tilde to home directory
|
|
289
477
|
const resolvedPath = expandTilde(scanPath);
|
|
290
478
|
// Security: Validate path is within allowed roots
|
|
291
|
-
if (!
|
|
292
|
-
const allowedRoots =
|
|
479
|
+
if (!(await this.isPathAllowed(resolvedPath))) {
|
|
480
|
+
const allowedRoots = await this.getEffectiveAllowedRoots();
|
|
293
481
|
throw new Error(`Scan path "${resolvedPath}" is outside allowed roots. ` +
|
|
294
482
|
`Allowed: ${allowedRoots.join(', ')}. ` +
|
|
295
|
-
`
|
|
483
|
+
`Add this path to allowed roots or set ALLOWED_SCAN_ROOTS environment variable.`);
|
|
296
484
|
}
|
|
297
485
|
const results = [];
|
|
298
486
|
const recentDbs = await this.getRecentDatabases();
|
|
@@ -304,36 +492,100 @@ class DatabaseManager {
|
|
|
304
492
|
if (!scanStat.isDirectory()) {
|
|
305
493
|
throw new Error(`Scan path is not a directory: ${resolvedPath}`);
|
|
306
494
|
}
|
|
307
|
-
//
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
495
|
+
// Recursive scan function with depth tracking
|
|
496
|
+
const scanDirectory = async (dirPath, currentDepth) => {
|
|
497
|
+
// Check if this directory is a database
|
|
498
|
+
const lanceDbPath = node_path_1.default.join(dirPath, LANCEDB_DIR_NAME);
|
|
499
|
+
if ((0, node_fs_1.existsSync)(lanceDbPath)) {
|
|
500
|
+
results.push({
|
|
501
|
+
path: dirPath,
|
|
502
|
+
name: this.getNameFromPath(dirPath),
|
|
503
|
+
isKnown: knownPaths.has(dirPath),
|
|
504
|
+
});
|
|
505
|
+
// Don't scan subdirectories of a database
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
// Stop if we've reached max depth
|
|
509
|
+
if (currentDepth >= maxDepth)
|
|
510
|
+
return;
|
|
511
|
+
try {
|
|
512
|
+
const entries = await (0, promises_1.readdir)(dirPath, { withFileTypes: true });
|
|
513
|
+
for (const entry of entries) {
|
|
514
|
+
if (!entry.isDirectory())
|
|
515
|
+
continue;
|
|
516
|
+
// Skip hidden directories
|
|
517
|
+
if (entry.name.startsWith('.'))
|
|
518
|
+
continue;
|
|
519
|
+
const subPath = node_path_1.default.join(dirPath, entry.name);
|
|
520
|
+
await scanDirectory(subPath, currentDepth + 1);
|
|
330
521
|
}
|
|
331
522
|
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
// Ignore permission errors on individual directories
|
|
525
|
+
console.error(`Failed to scan directory ${dirPath}:`, error);
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
await scanDirectory(resolvedPath, 0);
|
|
529
|
+
return results;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Get available embedding models
|
|
533
|
+
*/
|
|
534
|
+
getAvailableModels() {
|
|
535
|
+
return exports.AVAILABLE_MODELS;
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Export configuration (allowed roots)
|
|
539
|
+
*/
|
|
540
|
+
async exportConfig() {
|
|
541
|
+
return {
|
|
542
|
+
version: 1,
|
|
543
|
+
exportedAt: new Date().toISOString(),
|
|
544
|
+
allowedRoots: await readUserAllowedRoots(),
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Import configuration (allowed roots)
|
|
549
|
+
*/
|
|
550
|
+
async importConfig(config) {
|
|
551
|
+
if (config.version !== 1) {
|
|
552
|
+
throw new Error(`Unsupported config version: ${config.version}`);
|
|
332
553
|
}
|
|
333
|
-
|
|
334
|
-
|
|
554
|
+
if (!Array.isArray(config.allowedRoots)) {
|
|
555
|
+
throw new Error('Invalid config: allowedRoots must be an array');
|
|
335
556
|
}
|
|
336
|
-
|
|
557
|
+
// Validate each path exists before importing
|
|
558
|
+
const validRoots = [];
|
|
559
|
+
for (const root of config.allowedRoots) {
|
|
560
|
+
const resolved = node_path_1.default.resolve(expandTilde(root));
|
|
561
|
+
if ((0, node_fs_1.existsSync)(resolved)) {
|
|
562
|
+
validRoots.push(resolved);
|
|
563
|
+
}
|
|
564
|
+
else {
|
|
565
|
+
console.warn(`Skipping non-existent root during import: ${resolved}`);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
await writeUserAllowedRoots(validRoots);
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Get the current hybrid search weight
|
|
572
|
+
* @returns Value between 0.0 (vector-only) and 1.0 (max keyword boost)
|
|
573
|
+
*/
|
|
574
|
+
getHybridWeight() {
|
|
575
|
+
if (!this.currentServer) {
|
|
576
|
+
return 0.6; // Default value
|
|
577
|
+
}
|
|
578
|
+
return this.currentServer.getHybridWeight();
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Set the hybrid search weight at runtime
|
|
582
|
+
* @param weight - Value between 0.0 (vector-only) and 1.0 (max keyword boost)
|
|
583
|
+
*/
|
|
584
|
+
setHybridWeight(weight) {
|
|
585
|
+
if (!this.currentServer) {
|
|
586
|
+
throw new Error('DatabaseManager not initialized. Call initialize() first.');
|
|
587
|
+
}
|
|
588
|
+
this.currentServer.setHybridWeight(weight);
|
|
337
589
|
}
|
|
338
590
|
/**
|
|
339
591
|
* Add a database to recent list
|
|
@@ -356,6 +608,42 @@ class DatabaseManager {
|
|
|
356
608
|
};
|
|
357
609
|
await (0, promises_1.writeFile)(RECENT_DBS_FILE, JSON.stringify(fileContent, null, 2), 'utf-8');
|
|
358
610
|
}
|
|
611
|
+
/**
|
|
612
|
+
* Remove a database from the recent list
|
|
613
|
+
*/
|
|
614
|
+
async removeFromRecent(dbPath) {
|
|
615
|
+
const databases = await this.getRecentDatabases();
|
|
616
|
+
const filtered = databases.filter((db) => db.path !== dbPath);
|
|
617
|
+
const fileContent = {
|
|
618
|
+
version: 1,
|
|
619
|
+
databases: filtered,
|
|
620
|
+
};
|
|
621
|
+
await (0, promises_1.writeFile)(RECENT_DBS_FILE, JSON.stringify(fileContent, null, 2), 'utf-8');
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Delete a database (removes from recent list and optionally deletes files)
|
|
625
|
+
*
|
|
626
|
+
* @param dbPath - Path to the database to delete
|
|
627
|
+
* @param deleteFiles - If true, also delete the database files from disk
|
|
628
|
+
*/
|
|
629
|
+
async deleteDatabase(dbPath, deleteFiles = false) {
|
|
630
|
+
const resolvedPath = expandTilde(dbPath);
|
|
631
|
+
// Cannot delete the currently active database
|
|
632
|
+
if (this.currentConfig && this.currentConfig.dbPath === resolvedPath) {
|
|
633
|
+
throw new Error('Cannot delete the currently active database. Switch to another database first.');
|
|
634
|
+
}
|
|
635
|
+
// Remove from recent databases list
|
|
636
|
+
await this.removeFromRecent(resolvedPath);
|
|
637
|
+
// Optionally delete files from disk
|
|
638
|
+
if (deleteFiles) {
|
|
639
|
+
const lanceDbPath = node_path_1.default.join(resolvedPath, LANCEDB_DIR_NAME);
|
|
640
|
+
if ((0, node_fs_1.existsSync)(lanceDbPath)) {
|
|
641
|
+
await (0, promises_1.rm)(lanceDbPath, { recursive: true, force: true });
|
|
642
|
+
console.log(`Deleted database files: ${lanceDbPath}`);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
console.log(`Removed database from recent list: ${resolvedPath}`);
|
|
646
|
+
}
|
|
359
647
|
/**
|
|
360
648
|
* Derive a human-readable name from a path
|
|
361
649
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-manager.js","sourceRoot":"","sources":["../../src/web/database-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database-manager.js","sourceRoot":"","sources":["../../src/web/database-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/web/http-server.ts"],"names":[],"mappings":"AAQA,OAAgB,EAAE,KAAK,OAAO,EAAkD,MAAM,SAAS,CAAA;AAI/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/web/http-server.ts"],"names":[],"mappings":"AAQA,OAAgB,EAAE,KAAK,OAAO,EAAkD,MAAM,SAAS,CAAA;AAI/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAoE5D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,OAAO,CAAC,CAElB;AA4OD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrE"}
|
package/dist/web/http-server.js
CHANGED
|
@@ -69,6 +69,8 @@ const DEFAULT_CORS_ORIGINS = [
|
|
|
69
69
|
const FILE_SIZE_LIMIT_BYTES = 100 * 1024 * 1024;
|
|
70
70
|
/** Default request timeout (30 seconds) */
|
|
71
71
|
const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
|
|
72
|
+
/** Upload/ingest timeout (5 minutes - embedding models can be slow) */
|
|
73
|
+
const UPLOAD_TIMEOUT_MS = 300000;
|
|
72
74
|
/** Minimum allowed request timeout (1 second) */
|
|
73
75
|
const MIN_REQUEST_TIMEOUT_MS = 1000;
|
|
74
76
|
/**
|
|
@@ -138,12 +140,19 @@ async function validateFileContent(filePath) {
|
|
|
138
140
|
return false;
|
|
139
141
|
}
|
|
140
142
|
}
|
|
143
|
+
/** Routes that need longer timeout (upload/ingest with slow embedding models) */
|
|
144
|
+
const LONG_TIMEOUT_ROUTES = ['/v1/files/upload', '/v1/data'];
|
|
141
145
|
/**
|
|
142
146
|
* Request timeout middleware
|
|
143
147
|
* Aborts requests that take longer than the specified timeout
|
|
148
|
+
* Uses longer timeout for upload/ingest routes (embedding can be slow)
|
|
144
149
|
*/
|
|
145
|
-
function requestTimeout(
|
|
146
|
-
return (
|
|
150
|
+
function requestTimeout(defaultTimeoutMs) {
|
|
151
|
+
return (req, res, next) => {
|
|
152
|
+
// Use longer timeout for upload/ingest routes (req.path is relative to mount point)
|
|
153
|
+
const timeoutMs = LONG_TIMEOUT_ROUTES.some((route) => req.path.startsWith(route))
|
|
154
|
+
? UPLOAD_TIMEOUT_MS
|
|
155
|
+
: defaultTimeoutMs;
|
|
147
156
|
const timeoutId = setTimeout(() => {
|
|
148
157
|
if (!res.headersSent) {
|
|
149
158
|
res.status(503).json({
|
|
@@ -189,6 +198,7 @@ async function createHttpServerInternal(serverAccessor, config, configRouter) {
|
|
|
189
198
|
// Response compression
|
|
190
199
|
app.use((0, compression_1.default)());
|
|
191
200
|
// Request timeout for API routes (configurable via REQUEST_TIMEOUT_MS env var)
|
|
201
|
+
// Upload/ingest routes automatically get longer timeout (5 min) for slow embedding models
|
|
192
202
|
app.use('/api', requestTimeout(getRequestTimeoutMs()));
|
|
193
203
|
// CORS configuration
|
|
194
204
|
// CORS_ORIGINS env var: comma-separated list of allowed origins, or "*" for all
|