@robthepcguy/rag-vault 1.0.1 → 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.
Files changed (73) hide show
  1. package/README.md +441 -421
  2. package/dist/errors/index.d.ts +2 -6
  3. package/dist/errors/index.d.ts.map +1 -1
  4. package/dist/errors/index.js +8 -16
  5. package/dist/errors/index.js.map +1 -1
  6. package/dist/explainability/index.d.ts +2 -0
  7. package/dist/explainability/index.d.ts.map +1 -0
  8. package/dist/explainability/index.js +8 -0
  9. package/dist/explainability/index.js.map +1 -0
  10. package/dist/explainability/keywords.d.ts +18 -0
  11. package/dist/explainability/keywords.d.ts.map +1 -0
  12. package/dist/explainability/keywords.js +237 -0
  13. package/dist/explainability/keywords.js.map +1 -0
  14. package/dist/flywheel/feedback.d.ts +105 -0
  15. package/dist/flywheel/feedback.d.ts.map +1 -0
  16. package/dist/flywheel/feedback.js +219 -0
  17. package/dist/flywheel/feedback.js.map +1 -0
  18. package/dist/flywheel/index.d.ts +2 -0
  19. package/dist/flywheel/index.d.ts.map +1 -0
  20. package/dist/flywheel/index.js +9 -0
  21. package/dist/flywheel/index.js.map +1 -0
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/server/index.d.ts +40 -0
  25. package/dist/server/index.d.ts.map +1 -1
  26. package/dist/server/index.js +113 -0
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/raw-data-utils.d.ts.map +1 -1
  29. package/dist/server/raw-data-utils.js.map +1 -1
  30. package/dist/utils/config.d.ts +15 -0
  31. package/dist/utils/config.d.ts.map +1 -1
  32. package/dist/utils/config.js +84 -0
  33. package/dist/utils/config.js.map +1 -1
  34. package/dist/utils/math.d.ts +0 -7
  35. package/dist/utils/math.d.ts.map +1 -1
  36. package/dist/utils/math.js +0 -14
  37. package/dist/utils/math.js.map +1 -1
  38. package/dist/vectordb/index.d.ts +57 -2
  39. package/dist/vectordb/index.d.ts.map +1 -1
  40. package/dist/vectordb/index.js +255 -33
  41. package/dist/vectordb/index.js.map +1 -1
  42. package/dist/web/api-routes.d.ts.map +1 -1
  43. package/dist/web/api-routes.js +120 -7
  44. package/dist/web/api-routes.js.map +1 -1
  45. package/dist/web/config-routes.d.ts.map +1 -1
  46. package/dist/web/config-routes.js +84 -2
  47. package/dist/web/config-routes.js.map +1 -1
  48. package/dist/web/database-manager.d.ts +119 -1
  49. package/dist/web/database-manager.d.ts.map +1 -1
  50. package/dist/web/database-manager.js +339 -51
  51. package/dist/web/database-manager.js.map +1 -1
  52. package/dist/web/http-server.d.ts.map +1 -1
  53. package/dist/web/http-server.js +12 -2
  54. package/dist/web/http-server.js.map +1 -1
  55. package/dist/web/index.js +4 -1
  56. package/dist/web/index.js.map +1 -1
  57. package/dist/web/middleware/error-handler.d.ts +0 -16
  58. package/dist/web/middleware/error-handler.d.ts.map +1 -1
  59. package/dist/web/middleware/error-handler.js +0 -18
  60. package/dist/web/middleware/error-handler.js.map +1 -1
  61. package/dist/web/middleware/request-logger.d.ts +2 -1
  62. package/dist/web/middleware/request-logger.d.ts.map +1 -1
  63. package/package.json +129 -136
  64. package/skills/rag-vault/SKILL.md +111 -111
  65. package/web-ui/dist/assets/index-BcRp9-z9.js +120 -0
  66. package/web-ui/dist/assets/index-ej8i4PGl.css +1 -0
  67. package/web-ui/dist/index.html +2 -2
  68. package/dist/utils/logger.d.ts +0 -36
  69. package/dist/utils/logger.d.ts.map +0 -1
  70. package/dist/utils/logger.js +0 -64
  71. package/dist/utils/logger.js.map +0 -1
  72. package/web-ui/dist/assets/index-0kBxUnZc.css +0 -1
  73. package/web-ui/dist/assets/index-CaUT0xZD.js +0 -59
@@ -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("./middleware/index.js");
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, index_js_2.asyncHandler)(async (req, res) => {
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, index_js_2.asyncHandler)(async (req, res) => {
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, index_js_2.asyncHandler)(async (req, res) => {
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, index_js_2.asyncHandler)(async (_req, res) => {
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, index_js_2.asyncHandler)(async (req, res) => {
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, index_js_2.asyncHandler)(async (_req, res) => {
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":"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"}
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;AAyB5D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAqErE"}
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;;AAiC7C,gDAqEC;AAnGD,qCAAgD;AAChD,iDAAoD;AAEpD,oDAAoD;AAwBpD;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAA0B;IAC3D,MAAM,MAAM,GAAG,IAAA,gBAAY,GAAE,CAAA;IAE7B,kEAAkE;IAClE,MAAM,CAAC,GAAG,CACR,UAAU,EACV,IAAA,uBAAY,EAAC,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC,CAAC,CACH,CAAA;IAED,uDAAuD;IACvD,MAAM,CAAC,GAAG,CACR,YAAY,EACZ,IAAA,uBAAY,EAAC,KAAK,EAAE,IAAa,EAAE,GAAa,EAAE,EAAE;QAClD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAA;QACtD,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IACzB,CAAC,CAAC,CACH,CAAA;IAED,sEAAsE;IACtE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,IAAA,uBAAY,EAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAA6B,CAAA;QAEpD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,0BAAe,CAAC,yCAAyC,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QACjD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACrC,CAAC,CAAC,CACH,CAAA;IAED,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,IAAA,uBAAY,EAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACjD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAA6B,CAAA;QAE1D,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,0BAAe,CAAC,yCAAyC,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QACjD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACrC,CAAC,CAAC,CACH,CAAA;IAED,oEAAoE;IACpE,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,IAAA,uBAAY,EAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAA4B,CAAA;QAErD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,0BAAe,CAAC,2CAA2C,CAAC,CAAA;QACxE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC5D,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IACzB,CAAC,CAAC,CACH,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
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
- scanForDatabases(scanPath: string): Promise<ScannedDatabase[]>;
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;AA6EpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAUD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAA;CACjB;AAMD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,aAAa,CAA6B;gBAGhD,aAAa,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,SAAS,EACrD,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAM7C;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C;;OAEG;IACH,SAAS,IAAI,SAAS;IAOtB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA+B/D;;;;OAIG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BtD;;OAEG;YACW,aAAa;IAsB3B;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnE;;;;OAIG;YACW,mBAAmB;IAajC;;OAEG;YACW,kBAAkB;IAmBhC;;;;;;OAMG;IACG,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAsCpD;;;;;OAKG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA8DpE;;OAEG;YACW,WAAW;IAwBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;YACW,eAAe;CAK9B"}
1
+ {"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/web/database-manager.ts"],"names":[],"mappings":"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"}