@robthepcguy/rag-vault 1.0.1 → 1.1.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/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 +4 -1
- 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 -136
- 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 +2 -2
- 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
- package/web-ui/dist/assets/index-0kBxUnZc.css +0 -1
- package/web-ui/dist/assets/index-CaUT0xZD.js +0 -59
package/dist/web/api-routes.js
CHANGED
|
@@ -8,7 +8,9 @@ exports.createApiRouter = createApiRouter;
|
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const express_1 = require("express");
|
|
10
10
|
const index_js_1 = require("../errors/index.js");
|
|
11
|
-
const index_js_2 = require("
|
|
11
|
+
const index_js_2 = require("../explainability/index.js");
|
|
12
|
+
const index_js_3 = require("../flywheel/index.js");
|
|
13
|
+
const index_js_4 = require("./middleware/index.js");
|
|
12
14
|
/**
|
|
13
15
|
* Extract text from a RAG server response with proper bounds checking
|
|
14
16
|
* @throws RAGError if the response format is invalid
|
|
@@ -41,7 +43,7 @@ function createApiRouter(serverOrAccessor) {
|
|
|
41
43
|
return serverOrAccessor;
|
|
42
44
|
};
|
|
43
45
|
// POST /api/v1/search - Search documents
|
|
44
|
-
router.post('/search', (0,
|
|
46
|
+
router.post('/search', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
45
47
|
const { query, limit } = req.body;
|
|
46
48
|
if (!query || typeof query !== 'string') {
|
|
47
49
|
throw new index_js_1.ValidationError('Query is required and must be a string');
|
|
@@ -56,7 +58,7 @@ function createApiRouter(serverOrAccessor) {
|
|
|
56
58
|
res.json({ results: data });
|
|
57
59
|
}));
|
|
58
60
|
// POST /api/v1/files/upload - Upload files (multipart)
|
|
59
|
-
router.post('/files/upload', (0,
|
|
61
|
+
router.post('/files/upload', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
60
62
|
// File is attached by multer middleware
|
|
61
63
|
const file = req.file;
|
|
62
64
|
if (!file) {
|
|
@@ -70,7 +72,7 @@ function createApiRouter(serverOrAccessor) {
|
|
|
70
72
|
res.json(data);
|
|
71
73
|
}));
|
|
72
74
|
// POST /api/v1/data - Ingest content strings
|
|
73
|
-
router.post('/data', (0,
|
|
75
|
+
router.post('/data', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
74
76
|
const { content, metadata } = req.body;
|
|
75
77
|
if (!content || typeof content !== 'string') {
|
|
76
78
|
throw new index_js_1.ValidationError('Content is required and must be a string');
|
|
@@ -84,14 +86,14 @@ function createApiRouter(serverOrAccessor) {
|
|
|
84
86
|
res.json(data);
|
|
85
87
|
}));
|
|
86
88
|
// GET /api/v1/files - List ingested files
|
|
87
|
-
router.get('/files', (0,
|
|
89
|
+
router.get('/files', (0, index_js_4.asyncHandler)(async (_req, res) => {
|
|
88
90
|
const server = getServer();
|
|
89
91
|
const result = await server.handleListFiles();
|
|
90
92
|
const data = JSON.parse(extractResultText(result));
|
|
91
93
|
res.json({ files: data });
|
|
92
94
|
}));
|
|
93
95
|
// DELETE /api/v1/files - Delete file/source
|
|
94
|
-
router.delete('/files', (0,
|
|
96
|
+
router.delete('/files', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
95
97
|
const { filePath, source } = req.body;
|
|
96
98
|
if (!filePath && !source) {
|
|
97
99
|
throw new index_js_1.ValidationError('Either filePath or source is required');
|
|
@@ -109,7 +111,7 @@ function createApiRouter(serverOrAccessor) {
|
|
|
109
111
|
res.json(data);
|
|
110
112
|
}));
|
|
111
113
|
// GET /api/v1/status - System status
|
|
112
|
-
router.get('/status', (0,
|
|
114
|
+
router.get('/status', (0, index_js_4.asyncHandler)(async (_req, res) => {
|
|
113
115
|
const server = getServer();
|
|
114
116
|
const result = await server.handleStatus();
|
|
115
117
|
const data = JSON.parse(extractResultText(result));
|
|
@@ -122,6 +124,117 @@ function createApiRouter(serverOrAccessor) {
|
|
|
122
124
|
timestamp: new Date().toISOString(),
|
|
123
125
|
});
|
|
124
126
|
});
|
|
127
|
+
// ============================================
|
|
128
|
+
// Reader Feature Endpoints
|
|
129
|
+
// ============================================
|
|
130
|
+
// GET /api/v1/documents/chunks - Get all chunks for a document
|
|
131
|
+
router.get('/documents/chunks', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
132
|
+
const filePath = req.query['filePath'];
|
|
133
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
134
|
+
throw new index_js_1.ValidationError('filePath query parameter is required');
|
|
135
|
+
}
|
|
136
|
+
const server = getServer();
|
|
137
|
+
const result = await server.handleGetDocumentChunks(filePath);
|
|
138
|
+
const data = JSON.parse(extractResultText(result));
|
|
139
|
+
res.json({ chunks: data });
|
|
140
|
+
}));
|
|
141
|
+
// GET /api/v1/chunks/related - Get related chunks for a specific chunk
|
|
142
|
+
router.get('/chunks/related', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
143
|
+
const filePath = req.query['filePath'];
|
|
144
|
+
const chunkIndexStr = req.query['chunkIndex'];
|
|
145
|
+
const limitStr = req.query['limit'];
|
|
146
|
+
const excludeSameDocStr = req.query['excludeSameDoc'];
|
|
147
|
+
const includeExplanationStr = req.query['includeExplanation'];
|
|
148
|
+
if (!filePath || typeof filePath !== 'string') {
|
|
149
|
+
throw new index_js_1.ValidationError('filePath query parameter is required');
|
|
150
|
+
}
|
|
151
|
+
if (!chunkIndexStr) {
|
|
152
|
+
throw new index_js_1.ValidationError('chunkIndex query parameter is required');
|
|
153
|
+
}
|
|
154
|
+
const chunkIndex = Number.parseInt(chunkIndexStr, 10);
|
|
155
|
+
if (Number.isNaN(chunkIndex) || chunkIndex < 0) {
|
|
156
|
+
throw new index_js_1.ValidationError('chunkIndex must be a non-negative integer');
|
|
157
|
+
}
|
|
158
|
+
const limit = limitStr ? Number.parseInt(limitStr, 10) : undefined;
|
|
159
|
+
if (limit !== undefined && (Number.isNaN(limit) || limit < 1 || limit > 20)) {
|
|
160
|
+
throw new index_js_1.ValidationError('limit must be between 1 and 20');
|
|
161
|
+
}
|
|
162
|
+
const excludeSameDocument = excludeSameDocStr !== 'false';
|
|
163
|
+
const includeExplanation = includeExplanationStr === 'true';
|
|
164
|
+
const server = getServer();
|
|
165
|
+
const result = await server.handleFindRelatedChunks(filePath, chunkIndex, limit, excludeSameDocument);
|
|
166
|
+
const data = JSON.parse(extractResultText(result));
|
|
167
|
+
// Add explanations if requested (Explainability feature)
|
|
168
|
+
if (includeExplanation) {
|
|
169
|
+
// Get source chunk text for comparison
|
|
170
|
+
const sourceChunkResult = await server.handleGetDocumentChunks(filePath);
|
|
171
|
+
const sourceChunks = JSON.parse(extractResultText(sourceChunkResult));
|
|
172
|
+
const sourceChunk = sourceChunks.find((c) => c.chunkIndex === chunkIndex);
|
|
173
|
+
const sourceText = sourceChunk?.text || '';
|
|
174
|
+
const dataWithExplanation = data.map((chunk) => ({
|
|
175
|
+
...chunk,
|
|
176
|
+
explanation: (0, index_js_2.explainChunkSimilarity)(sourceText, chunk.text, chunk.filePath === filePath, chunk.score),
|
|
177
|
+
}));
|
|
178
|
+
res.json({ related: dataWithExplanation });
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
res.json({ related: data });
|
|
182
|
+
}
|
|
183
|
+
}));
|
|
184
|
+
// POST /api/v1/chunks/batch-related - Batch get related chunks
|
|
185
|
+
router.post('/chunks/batch-related', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
186
|
+
const { chunks, limit } = req.body;
|
|
187
|
+
if (!chunks || !Array.isArray(chunks) || chunks.length === 0) {
|
|
188
|
+
throw new index_js_1.ValidationError('chunks array is required and must not be empty');
|
|
189
|
+
}
|
|
190
|
+
// Validate each chunk
|
|
191
|
+
for (const chunk of chunks) {
|
|
192
|
+
if (!chunk.filePath || typeof chunk.filePath !== 'string') {
|
|
193
|
+
throw new index_js_1.ValidationError('Each chunk must have a filePath string');
|
|
194
|
+
}
|
|
195
|
+
if (typeof chunk.chunkIndex !== 'number' || chunk.chunkIndex < 0) {
|
|
196
|
+
throw new index_js_1.ValidationError('Each chunk must have a non-negative chunkIndex');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (limit !== undefined && (typeof limit !== 'number' || limit < 1 || limit > 20)) {
|
|
200
|
+
throw new index_js_1.ValidationError('limit must be between 1 and 20');
|
|
201
|
+
}
|
|
202
|
+
const server = getServer();
|
|
203
|
+
const result = await server.handleBatchFindRelatedChunks(chunks, limit);
|
|
204
|
+
const data = JSON.parse(extractResultText(result));
|
|
205
|
+
res.json({ results: data });
|
|
206
|
+
}));
|
|
207
|
+
// POST /api/v1/feedback - Record a feedback event
|
|
208
|
+
router.post('/feedback', (0, index_js_4.asyncHandler)(async (req, res) => {
|
|
209
|
+
const { type, source, target } = req.body;
|
|
210
|
+
// Validate event type
|
|
211
|
+
const validTypes = ['pin', 'unpin', 'dismiss_inferred', 'click_related'];
|
|
212
|
+
if (!type || !validTypes.includes(type)) {
|
|
213
|
+
throw new index_js_1.ValidationError(`type must be one of: ${validTypes.join(', ')}`);
|
|
214
|
+
}
|
|
215
|
+
// Validate source
|
|
216
|
+
if (!source || typeof source.filePath !== 'string' || typeof source.chunkIndex !== 'number') {
|
|
217
|
+
throw new index_js_1.ValidationError('source must have filePath (string) and chunkIndex (number)');
|
|
218
|
+
}
|
|
219
|
+
// Validate target
|
|
220
|
+
if (!target || typeof target.filePath !== 'string' || typeof target.chunkIndex !== 'number') {
|
|
221
|
+
throw new index_js_1.ValidationError('target must have filePath (string) and chunkIndex (number)');
|
|
222
|
+
}
|
|
223
|
+
const feedbackStore = (0, index_js_3.getFeedbackStore)();
|
|
224
|
+
feedbackStore.recordEvent({
|
|
225
|
+
type,
|
|
226
|
+
source,
|
|
227
|
+
target,
|
|
228
|
+
timestamp: new Date(),
|
|
229
|
+
});
|
|
230
|
+
res.json({ success: true });
|
|
231
|
+
}));
|
|
232
|
+
// GET /api/v1/feedback/stats - Get feedback statistics
|
|
233
|
+
router.get('/feedback/stats', (_req, res) => {
|
|
234
|
+
const feedbackStore = (0, index_js_3.getFeedbackStore)();
|
|
235
|
+
const stats = feedbackStore.getStats();
|
|
236
|
+
res.json(stats);
|
|
237
|
+
});
|
|
125
238
|
return router;
|
|
126
239
|
}
|
|
127
240
|
//# sourceMappingURL=api-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":";AAAA,mCAAmC;;;;;
|
|
1
|
+
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/web/api-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-routes.d.ts","sourceRoot":"","sources":["../../src/web/config-routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"config-routes.d.ts","sourceRoot":"","sources":["../../src/web/config-routes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AA4D5D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CA4MrE"}
|
|
@@ -32,11 +32,11 @@ function createConfigRouter(dbManager) {
|
|
|
32
32
|
}));
|
|
33
33
|
// POST /api/v1/config/databases/create - Create new database
|
|
34
34
|
router.post('/databases/create', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
35
|
-
const { dbPath, name } = req.body;
|
|
35
|
+
const { dbPath, name, modelName } = req.body;
|
|
36
36
|
if (!dbPath || typeof dbPath !== 'string') {
|
|
37
37
|
throw new index_js_1.ValidationError('dbPath is required and must be a string');
|
|
38
38
|
}
|
|
39
|
-
await dbManager.createDatabase({ dbPath, name });
|
|
39
|
+
await dbManager.createDatabase({ dbPath, name, modelName });
|
|
40
40
|
const config = await dbManager.getCurrentConfig();
|
|
41
41
|
res.json({ success: true, config });
|
|
42
42
|
}));
|
|
@@ -49,6 +49,88 @@ function createConfigRouter(dbManager) {
|
|
|
49
49
|
const databases = await dbManager.scanForDatabases(scanPath);
|
|
50
50
|
res.json({ databases });
|
|
51
51
|
}));
|
|
52
|
+
// DELETE /api/v1/config/databases - Delete a database
|
|
53
|
+
router.delete('/databases', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
54
|
+
const { dbPath, deleteFiles } = req.body;
|
|
55
|
+
if (!dbPath || typeof dbPath !== 'string') {
|
|
56
|
+
throw new index_js_1.ValidationError('dbPath is required and must be a string');
|
|
57
|
+
}
|
|
58
|
+
await dbManager.deleteDatabase(dbPath, deleteFiles ?? false);
|
|
59
|
+
const databases = await dbManager.getRecentDatabases();
|
|
60
|
+
res.json({ success: true, databases });
|
|
61
|
+
}));
|
|
62
|
+
// GET /api/v1/config/allowed-roots - List all effective allowed roots
|
|
63
|
+
router.get('/allowed-roots', (0, index_js_2.asyncHandler)(async (_req, res) => {
|
|
64
|
+
const info = await dbManager.getAllowedRootsInfo();
|
|
65
|
+
res.json(info);
|
|
66
|
+
}));
|
|
67
|
+
// POST /api/v1/config/allowed-roots - Add a new allowed root
|
|
68
|
+
router.post('/allowed-roots', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
69
|
+
const { path: rootPath } = req.body;
|
|
70
|
+
if (!rootPath || typeof rootPath !== 'string') {
|
|
71
|
+
throw new index_js_1.ValidationError('path is required and must be a string');
|
|
72
|
+
}
|
|
73
|
+
await dbManager.addUserAllowedRoot(rootPath);
|
|
74
|
+
const info = await dbManager.getAllowedRootsInfo();
|
|
75
|
+
res.json({ success: true, ...info });
|
|
76
|
+
}));
|
|
77
|
+
// DELETE /api/v1/config/allowed-roots - Remove an allowed root
|
|
78
|
+
router.delete('/allowed-roots', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
79
|
+
const { path: rootPath } = req.body;
|
|
80
|
+
if (!rootPath || typeof rootPath !== 'string') {
|
|
81
|
+
throw new index_js_1.ValidationError('path is required and must be a string');
|
|
82
|
+
}
|
|
83
|
+
await dbManager.removeUserAllowedRoot(rootPath);
|
|
84
|
+
const info = await dbManager.getAllowedRootsInfo();
|
|
85
|
+
res.json({ success: true, ...info });
|
|
86
|
+
}));
|
|
87
|
+
// GET /api/v1/config/browse - List directory contents for folder browser
|
|
88
|
+
router.get('/browse', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
89
|
+
const dirPath = req.query['path'];
|
|
90
|
+
const showHidden = req.query['showHidden'] === 'true';
|
|
91
|
+
if (!dirPath || typeof dirPath !== 'string') {
|
|
92
|
+
throw new index_js_1.ValidationError('path query parameter is required');
|
|
93
|
+
}
|
|
94
|
+
const entries = await dbManager.listDirectory(dirPath, showHidden);
|
|
95
|
+
res.json({ entries, path: dirPath });
|
|
96
|
+
}));
|
|
97
|
+
// GET /api/v1/config/models - List available embedding models
|
|
98
|
+
router.get('/models', (0, index_js_2.asyncHandler)(async (_req, res) => {
|
|
99
|
+
const models = dbManager.getAvailableModels();
|
|
100
|
+
res.json({ models });
|
|
101
|
+
}));
|
|
102
|
+
// GET /api/v1/config/export - Export configuration as JSON
|
|
103
|
+
router.get('/export', (0, index_js_2.asyncHandler)(async (_req, res) => {
|
|
104
|
+
const config = await dbManager.exportConfig();
|
|
105
|
+
res.json(config);
|
|
106
|
+
}));
|
|
107
|
+
// POST /api/v1/config/import - Import configuration from JSON
|
|
108
|
+
router.post('/import', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
109
|
+
const { config } = req.body;
|
|
110
|
+
if (!config || typeof config !== 'object') {
|
|
111
|
+
throw new index_js_1.ValidationError('config is required and must be an object');
|
|
112
|
+
}
|
|
113
|
+
await dbManager.importConfig(config);
|
|
114
|
+
const info = await dbManager.getAllowedRootsInfo();
|
|
115
|
+
res.json({ success: true, ...info });
|
|
116
|
+
}));
|
|
117
|
+
// GET /api/v1/config/hybrid-weight - Get current hybrid search weight
|
|
118
|
+
router.get('/hybrid-weight', (0, index_js_2.asyncHandler)(async (_req, res) => {
|
|
119
|
+
const weight = dbManager.getHybridWeight();
|
|
120
|
+
res.json({ weight });
|
|
121
|
+
}));
|
|
122
|
+
// PUT /api/v1/config/hybrid-weight - Set hybrid search weight
|
|
123
|
+
router.put('/hybrid-weight', (0, index_js_2.asyncHandler)(async (req, res) => {
|
|
124
|
+
const { weight } = req.body;
|
|
125
|
+
if (typeof weight !== 'number') {
|
|
126
|
+
throw new index_js_1.ValidationError('weight is required and must be a number');
|
|
127
|
+
}
|
|
128
|
+
if (weight < 0 || weight > 1) {
|
|
129
|
+
throw new index_js_1.ValidationError('weight must be between 0.0 and 1.0');
|
|
130
|
+
}
|
|
131
|
+
dbManager.setHybridWeight(weight);
|
|
132
|
+
res.json({ success: true, weight });
|
|
133
|
+
}));
|
|
52
134
|
return router;
|
|
53
135
|
}
|
|
54
136
|
//# sourceMappingURL=config-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../src/web/config-routes.ts"],"names":[],"mappings":";AAAA,6CAA6C;;
|
|
1
|
+
{"version":3,"file":"config-routes.js","sourceRoot":"","sources":["../../src/web/config-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,34 @@ export interface CreateDatabaseOptions {
|
|
|
35
35
|
dbPath: string;
|
|
36
36
|
/** Optional custom name */
|
|
37
37
|
name?: string | undefined;
|
|
38
|
+
/** Optional model name to use */
|
|
39
|
+
modelName?: string | undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Available embedding model
|
|
43
|
+
*/
|
|
44
|
+
export interface AvailableModel {
|
|
45
|
+
/** Model ID */
|
|
46
|
+
id: string;
|
|
47
|
+
/** Human-readable name */
|
|
48
|
+
name: string;
|
|
49
|
+
/** Model description */
|
|
50
|
+
description: string;
|
|
51
|
+
/** Whether this is the default model */
|
|
52
|
+
isDefault: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Preset embedding models
|
|
56
|
+
*/
|
|
57
|
+
export declare const AVAILABLE_MODELS: AvailableModel[];
|
|
58
|
+
/**
|
|
59
|
+
* Export/import configuration structure
|
|
60
|
+
*/
|
|
61
|
+
export interface ExportedConfig {
|
|
62
|
+
version: number;
|
|
63
|
+
exportedAt: string;
|
|
64
|
+
allowedRoots: string[];
|
|
65
|
+
preferences?: Record<string, unknown>;
|
|
38
66
|
}
|
|
39
67
|
/**
|
|
40
68
|
* Scan result for a discovered database
|
|
@@ -47,6 +75,30 @@ export interface ScannedDatabase {
|
|
|
47
75
|
/** Whether this database is already in recent list */
|
|
48
76
|
isKnown: boolean;
|
|
49
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Directory entry for folder browser
|
|
80
|
+
*/
|
|
81
|
+
export interface DirectoryEntry {
|
|
82
|
+
/** Entry name */
|
|
83
|
+
name: string;
|
|
84
|
+
/** Full path */
|
|
85
|
+
path: string;
|
|
86
|
+
/** Whether this is a directory */
|
|
87
|
+
isDirectory: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Allowed roots response
|
|
91
|
+
*/
|
|
92
|
+
export interface AllowedRootsResponse {
|
|
93
|
+
/** All effective allowed roots */
|
|
94
|
+
roots: string[];
|
|
95
|
+
/** Current base directory */
|
|
96
|
+
baseDir: string;
|
|
97
|
+
/** Environment-based roots */
|
|
98
|
+
envRoots: string[];
|
|
99
|
+
/** User-added roots (can be removed) */
|
|
100
|
+
userRoots: string[];
|
|
101
|
+
}
|
|
50
102
|
/**
|
|
51
103
|
* DatabaseManager handles RAG database lifecycle management
|
|
52
104
|
*
|
|
@@ -107,17 +159,83 @@ export declare class DatabaseManager {
|
|
|
107
159
|
* - Parse/validation error: Logs error but returns empty array to allow recovery
|
|
108
160
|
*/
|
|
109
161
|
getRecentDatabases(): Promise<DatabaseEntry[]>;
|
|
162
|
+
/**
|
|
163
|
+
* Get the base directory (dbPath directory)
|
|
164
|
+
*/
|
|
165
|
+
getBaseDir(): string;
|
|
166
|
+
/**
|
|
167
|
+
* Get all effective allowed roots (env + baseDir + user-added)
|
|
168
|
+
*/
|
|
169
|
+
getEffectiveAllowedRoots(): Promise<string[]>;
|
|
170
|
+
/**
|
|
171
|
+
* Check if a path is within allowed roots
|
|
172
|
+
*/
|
|
173
|
+
isPathAllowed(targetPath: string): Promise<boolean>;
|
|
174
|
+
/**
|
|
175
|
+
* Get allowed roots info for API response
|
|
176
|
+
*/
|
|
177
|
+
getAllowedRootsInfo(): Promise<AllowedRootsResponse>;
|
|
178
|
+
/**
|
|
179
|
+
* Add a user-allowed root
|
|
180
|
+
*/
|
|
181
|
+
addUserAllowedRoot(rootPath: string): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Remove a user-allowed root
|
|
184
|
+
*/
|
|
185
|
+
removeUserAllowedRoot(rootPath: string): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* List directory contents for folder browser
|
|
188
|
+
* @param dirPath - The directory path to list
|
|
189
|
+
* @param showHidden - Whether to include hidden files (starting with .)
|
|
190
|
+
*/
|
|
191
|
+
listDirectory(dirPath: string, showHidden?: boolean): Promise<DirectoryEntry[]>;
|
|
110
192
|
/**
|
|
111
193
|
* Scan a directory for LanceDB databases
|
|
112
194
|
*
|
|
113
195
|
* Security: Only scans within allowed roots (ALLOWED_SCAN_ROOTS env var or home directory)
|
|
114
196
|
* to prevent path traversal attacks.
|
|
197
|
+
*
|
|
198
|
+
* @param scanPath - The path to scan
|
|
199
|
+
* @param maxDepth - Maximum depth to scan (default 2)
|
|
200
|
+
*/
|
|
201
|
+
scanForDatabases(scanPath: string, maxDepth?: number): Promise<ScannedDatabase[]>;
|
|
202
|
+
/**
|
|
203
|
+
* Get available embedding models
|
|
204
|
+
*/
|
|
205
|
+
getAvailableModels(): AvailableModel[];
|
|
206
|
+
/**
|
|
207
|
+
* Export configuration (allowed roots)
|
|
208
|
+
*/
|
|
209
|
+
exportConfig(): Promise<ExportedConfig>;
|
|
210
|
+
/**
|
|
211
|
+
* Import configuration (allowed roots)
|
|
212
|
+
*/
|
|
213
|
+
importConfig(config: ExportedConfig): Promise<void>;
|
|
214
|
+
/**
|
|
215
|
+
* Get the current hybrid search weight
|
|
216
|
+
* @returns Value between 0.0 (vector-only) and 1.0 (max keyword boost)
|
|
217
|
+
*/
|
|
218
|
+
getHybridWeight(): number;
|
|
219
|
+
/**
|
|
220
|
+
* Set the hybrid search weight at runtime
|
|
221
|
+
* @param weight - Value between 0.0 (vector-only) and 1.0 (max keyword boost)
|
|
115
222
|
*/
|
|
116
|
-
|
|
223
|
+
setHybridWeight(weight: number): void;
|
|
117
224
|
/**
|
|
118
225
|
* Add a database to recent list
|
|
119
226
|
*/
|
|
120
227
|
private addToRecent;
|
|
228
|
+
/**
|
|
229
|
+
* Remove a database from the recent list
|
|
230
|
+
*/
|
|
231
|
+
private removeFromRecent;
|
|
232
|
+
/**
|
|
233
|
+
* Delete a database (removes from recent list and optionally deletes files)
|
|
234
|
+
*
|
|
235
|
+
* @param dbPath - Path to the database to delete
|
|
236
|
+
* @param deleteFiles - If true, also delete the database files from disk
|
|
237
|
+
*/
|
|
238
|
+
deleteDatabase(dbPath: string, deleteFiles?: boolean): Promise<void>;
|
|
121
239
|
/**
|
|
122
240
|
* Derive a human-readable name from a path
|
|
123
241
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/web/database-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/web/database-manager.ts"],"names":[],"mappings":"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"}
|