rag-lite-ts 1.0.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/LICENSE +21 -0
- package/README.md +240 -0
- package/dist/api-errors.d.ts +90 -0
- package/dist/api-errors.d.ts.map +1 -0
- package/dist/api-errors.js +320 -0
- package/dist/api-errors.js.map +1 -0
- package/dist/chunker.d.ts +47 -0
- package/dist/chunker.d.ts.map +1 -0
- package/dist/chunker.js +256 -0
- package/dist/chunker.js.map +1 -0
- package/dist/cli/indexer.d.ts +11 -0
- package/dist/cli/indexer.d.ts.map +1 -0
- package/dist/cli/indexer.js +272 -0
- package/dist/cli/indexer.js.map +1 -0
- package/dist/cli/search.d.ts +7 -0
- package/dist/cli/search.d.ts.map +1 -0
- package/dist/cli/search.js +206 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +362 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +90 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +281 -0
- package/dist/config.js.map +1 -0
- package/dist/db.d.ts +90 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +340 -0
- package/dist/db.js.map +1 -0
- package/dist/embedder.d.ts +101 -0
- package/dist/embedder.d.ts.map +1 -0
- package/dist/embedder.js +323 -0
- package/dist/embedder.js.map +1 -0
- package/dist/error-handler.d.ts +91 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +196 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/file-processor.d.ts +59 -0
- package/dist/file-processor.d.ts.map +1 -0
- package/dist/file-processor.js +312 -0
- package/dist/file-processor.js.map +1 -0
- package/dist/index-manager.d.ts +99 -0
- package/dist/index-manager.d.ts.map +1 -0
- package/dist/index-manager.js +444 -0
- package/dist/index-manager.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer.d.ts +7 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +51 -0
- package/dist/indexer.js.map +1 -0
- package/dist/ingestion.d.ts +175 -0
- package/dist/ingestion.d.ts.map +1 -0
- package/dist/ingestion.js +705 -0
- package/dist/ingestion.js.map +1 -0
- package/dist/mcp-server.d.ts +14 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +680 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/path-manager.d.ts +42 -0
- package/dist/path-manager.d.ts.map +1 -0
- package/dist/path-manager.js +66 -0
- package/dist/path-manager.js.map +1 -0
- package/dist/preprocess.d.ts +19 -0
- package/dist/preprocess.d.ts.map +1 -0
- package/dist/preprocess.js +203 -0
- package/dist/preprocess.js.map +1 -0
- package/dist/preprocessors/index.d.ts +17 -0
- package/dist/preprocessors/index.d.ts.map +1 -0
- package/dist/preprocessors/index.js +38 -0
- package/dist/preprocessors/index.js.map +1 -0
- package/dist/preprocessors/mdx.d.ts +25 -0
- package/dist/preprocessors/mdx.d.ts.map +1 -0
- package/dist/preprocessors/mdx.js +101 -0
- package/dist/preprocessors/mdx.js.map +1 -0
- package/dist/preprocessors/mermaid.d.ts +68 -0
- package/dist/preprocessors/mermaid.d.ts.map +1 -0
- package/dist/preprocessors/mermaid.js +329 -0
- package/dist/preprocessors/mermaid.js.map +1 -0
- package/dist/preprocessors/registry.d.ts +56 -0
- package/dist/preprocessors/registry.d.ts.map +1 -0
- package/dist/preprocessors/registry.js +179 -0
- package/dist/preprocessors/registry.js.map +1 -0
- package/dist/reranker.d.ts +40 -0
- package/dist/reranker.d.ts.map +1 -0
- package/dist/reranker.js +212 -0
- package/dist/reranker.js.map +1 -0
- package/dist/resource-manager-demo.d.ts +7 -0
- package/dist/resource-manager-demo.d.ts.map +1 -0
- package/dist/resource-manager-demo.js +52 -0
- package/dist/resource-manager-demo.js.map +1 -0
- package/dist/resource-manager.d.ts +129 -0
- package/dist/resource-manager.d.ts.map +1 -0
- package/dist/resource-manager.js +389 -0
- package/dist/resource-manager.js.map +1 -0
- package/dist/search-standalone.d.ts +7 -0
- package/dist/search-standalone.d.ts.map +1 -0
- package/dist/search-standalone.js +117 -0
- package/dist/search-standalone.js.map +1 -0
- package/dist/search.d.ts +92 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +454 -0
- package/dist/search.js.map +1 -0
- package/dist/test-utils.d.ts +36 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +27 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/tokenizer.d.ts +21 -0
- package/dist/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer.js +59 -0
- package/dist/tokenizer.js.map +1 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-index.d.ts +64 -0
- package/dist/vector-index.d.ts.map +1 -0
- package/dist/vector-index.js +308 -0
- package/dist/vector-index.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import { VectorIndex } from './vector-index.js';
|
|
2
|
+
import { openDatabase, getModelVersion, setModelVersion, getStoredModelInfo, setStoredModelInfo } from './db.js';
|
|
3
|
+
import { config, getModelDefaults } from './config.js';
|
|
4
|
+
export class IndexManager {
|
|
5
|
+
modelName;
|
|
6
|
+
vectorIndex;
|
|
7
|
+
db = null;
|
|
8
|
+
indexPath;
|
|
9
|
+
dbPath;
|
|
10
|
+
isInitialized = false;
|
|
11
|
+
hashToEmbeddingId = new Map();
|
|
12
|
+
embeddingIdToHash = new Map();
|
|
13
|
+
constructor(indexPath, dbPath, dimensions, modelName) {
|
|
14
|
+
this.modelName = modelName;
|
|
15
|
+
this.indexPath = indexPath;
|
|
16
|
+
this.dbPath = dbPath;
|
|
17
|
+
// Initialize with provided dimensions from config
|
|
18
|
+
this.vectorIndex = new VectorIndex(indexPath, {
|
|
19
|
+
dimensions: dimensions,
|
|
20
|
+
maxElements: 100000, // Start with 100k capacity
|
|
21
|
+
efConstruction: 200,
|
|
22
|
+
M: 16
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the index manager and load existing index if available
|
|
27
|
+
* @param skipModelCheck - Skip model compatibility check (used for rebuilds)
|
|
28
|
+
*/
|
|
29
|
+
async initialize(skipModelCheck = false) {
|
|
30
|
+
if (this.isInitialized) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
// Open database connection
|
|
35
|
+
this.db = await openDatabase(this.dbPath);
|
|
36
|
+
// Check model compatibility BEFORE trying to load the vector index
|
|
37
|
+
// This prevents WebAssembly exceptions when dimensions don't match
|
|
38
|
+
if (!skipModelCheck) {
|
|
39
|
+
await this.checkModelCompatibility();
|
|
40
|
+
}
|
|
41
|
+
if (this.vectorIndex.indexExists()) {
|
|
42
|
+
console.log('Loading existing vector index...');
|
|
43
|
+
await this.vectorIndex.loadIndex();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log('Creating new vector index...');
|
|
47
|
+
await this.vectorIndex.initialize();
|
|
48
|
+
}
|
|
49
|
+
// Always populate the embedding ID mapping from existing database entries
|
|
50
|
+
// This is needed both for new and existing indexes
|
|
51
|
+
const existingChunks = await this.db.all('SELECT embedding_id FROM chunks ORDER BY id');
|
|
52
|
+
for (const chunk of existingChunks) {
|
|
53
|
+
this.hashEmbeddingId(chunk.embedding_id); // This will populate the mapping
|
|
54
|
+
}
|
|
55
|
+
this.isInitialized = true;
|
|
56
|
+
console.log(`Index manager initialized with ${this.vectorIndex.getCurrentCount()} vectors`);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new Error(`Failed to initialize index manager: ${error}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check model compatibility between stored and current configuration
|
|
64
|
+
* Requirements: 2.1, 2.2, 2.4, 5.1, 5.2, 5.3, 5.4
|
|
65
|
+
*/
|
|
66
|
+
async checkModelCompatibility() {
|
|
67
|
+
if (!this.db) {
|
|
68
|
+
throw new Error('Database not initialized');
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
// Get stored model information
|
|
72
|
+
const storedModel = await getStoredModelInfo(this.db);
|
|
73
|
+
const currentModel = this.modelName || config.embedding_model;
|
|
74
|
+
const currentDefaults = getModelDefaults(currentModel);
|
|
75
|
+
if (storedModel) {
|
|
76
|
+
// Check if models match
|
|
77
|
+
if (storedModel.modelName !== currentModel) {
|
|
78
|
+
throw new Error(`Model mismatch detected!\n` +
|
|
79
|
+
`Current model: ${currentModel} (${currentDefaults.dimensions} dimensions)\n` +
|
|
80
|
+
`Index model: ${storedModel.modelName} (${storedModel.dimensions} dimensions)\n` +
|
|
81
|
+
`\n` +
|
|
82
|
+
`The embedding model has changed since the index was created.\n` +
|
|
83
|
+
`This requires a full index rebuild to maintain consistency.\n` +
|
|
84
|
+
`\n` +
|
|
85
|
+
`To fix this issue:\n` +
|
|
86
|
+
`1. Run: npm run rebuild\n` +
|
|
87
|
+
`2. Or run: node dist/cli.js rebuild\n` +
|
|
88
|
+
`\n` +
|
|
89
|
+
`This will regenerate all embeddings with the new model.`);
|
|
90
|
+
}
|
|
91
|
+
// Check if dimensions match (additional safety check)
|
|
92
|
+
if (storedModel.dimensions !== currentDefaults.dimensions) {
|
|
93
|
+
throw new Error(`Model dimension mismatch detected!\n` +
|
|
94
|
+
`Current model dimensions: ${currentDefaults.dimensions}\n` +
|
|
95
|
+
`Index model dimensions: ${storedModel.dimensions}\n` +
|
|
96
|
+
`\n` +
|
|
97
|
+
`This indicates a configuration inconsistency.\n` +
|
|
98
|
+
`Please run: npm run rebuild`);
|
|
99
|
+
}
|
|
100
|
+
console.log(`Model compatibility verified: ${currentModel} (${currentDefaults.dimensions} dimensions)`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// First run - store the model info
|
|
104
|
+
console.log(`No model info stored yet - storing current model info: ${currentModel}`);
|
|
105
|
+
await setStoredModelInfo(this.db, currentModel, currentDefaults.dimensions);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error instanceof Error) {
|
|
110
|
+
throw error; // Re-throw our formatted errors
|
|
111
|
+
}
|
|
112
|
+
throw new Error(`Failed to check model compatibility: ${error}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Add vectors to the index with corresponding metadata (incremental addition)
|
|
117
|
+
* Requirements: 5.3 - When new documents are added THEN system SHALL append new chunks and vectors without rebuilding existing index
|
|
118
|
+
*/
|
|
119
|
+
async addVectors(embeddings) {
|
|
120
|
+
if (!this.isInitialized) {
|
|
121
|
+
throw new Error('Index manager not initialized');
|
|
122
|
+
}
|
|
123
|
+
if (embeddings.length === 0) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
// Convert embedding IDs to numeric IDs for hnswlib
|
|
128
|
+
const vectors = embeddings.map((embedding) => ({
|
|
129
|
+
id: this.hashEmbeddingId(embedding.embedding_id),
|
|
130
|
+
vector: embedding.vector
|
|
131
|
+
}));
|
|
132
|
+
// Check if we need to resize the index before adding
|
|
133
|
+
const currentCount = this.vectorIndex.getCurrentCount();
|
|
134
|
+
const newCount = currentCount + vectors.length;
|
|
135
|
+
const currentCapacity = 100000; // This should match the initial capacity
|
|
136
|
+
if (newCount > currentCapacity * 0.9) {
|
|
137
|
+
const newCapacity = Math.ceil(newCount * 1.5);
|
|
138
|
+
console.log(`Resizing index from ${currentCapacity} to ${newCapacity} to accommodate new vectors`);
|
|
139
|
+
this.vectorIndex.resizeIndex(newCapacity);
|
|
140
|
+
}
|
|
141
|
+
// Add vectors incrementally (this is the key requirement - no rebuild needed)
|
|
142
|
+
this.vectorIndex.addVectors(vectors);
|
|
143
|
+
console.log(`Incrementally added ${embeddings.length} vectors to index (total: ${this.vectorIndex.getCurrentCount()})`);
|
|
144
|
+
// Save the updated index
|
|
145
|
+
await this.saveIndex();
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
throw new Error(`Failed to add vectors to index: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Rebuild the entire index from scratch
|
|
153
|
+
* Requirements: 5.2, 5.4 - Create full index rebuild functionality for model changes or document deletions
|
|
154
|
+
*/
|
|
155
|
+
async rebuildIndex(newModelVersion) {
|
|
156
|
+
if (!this.db) {
|
|
157
|
+
throw new Error('Database not initialized');
|
|
158
|
+
}
|
|
159
|
+
console.log('Starting full index rebuild...');
|
|
160
|
+
try {
|
|
161
|
+
// Initialize new empty index (this will overwrite existing index)
|
|
162
|
+
await this.vectorIndex.initialize();
|
|
163
|
+
// Get all chunk embedding IDs from database (we'll need to regenerate embeddings)
|
|
164
|
+
const chunkData = await this.getAllChunksFromDB();
|
|
165
|
+
if (chunkData.length === 0) {
|
|
166
|
+
console.log('No chunks found in database - index rebuild complete with 0 vectors');
|
|
167
|
+
// Update model version if provided
|
|
168
|
+
if (newModelVersion) {
|
|
169
|
+
await this.updateModelVersion(newModelVersion);
|
|
170
|
+
}
|
|
171
|
+
await this.saveIndex();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
console.log(`Found ${chunkData.length} chunks in database that need re-embedding`);
|
|
175
|
+
// Note: In a complete implementation, we would need to:
|
|
176
|
+
// 1. Re-generate embeddings for all chunks using the new model
|
|
177
|
+
// 2. Add the new vectors to the index
|
|
178
|
+
// For now, we'll create a placeholder implementation that shows the structure
|
|
179
|
+
console.warn('WARNING: Full rebuild requires re-generating embeddings for all chunks.');
|
|
180
|
+
console.warn('This implementation requires integration with the EmbeddingEngine.');
|
|
181
|
+
console.warn('The index has been reset but vectors need to be regenerated.');
|
|
182
|
+
// Check if we need to resize index based on chunk count
|
|
183
|
+
const currentCapacity = 100000; // Default capacity
|
|
184
|
+
if (chunkData.length > currentCapacity * 0.8) {
|
|
185
|
+
const newCapacity = Math.ceil(chunkData.length * 1.5);
|
|
186
|
+
this.vectorIndex.resizeIndex(newCapacity);
|
|
187
|
+
console.log(`Resized index capacity to ${newCapacity} for ${chunkData.length} chunks`);
|
|
188
|
+
}
|
|
189
|
+
// Update model version if provided
|
|
190
|
+
if (newModelVersion) {
|
|
191
|
+
await this.updateModelVersion(newModelVersion);
|
|
192
|
+
}
|
|
193
|
+
// Save the (empty) rebuilt index structure
|
|
194
|
+
await this.saveIndex();
|
|
195
|
+
console.log(`Index rebuild structure complete. ${chunkData.length} chunks need re-embedding.`);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
throw new Error(`Failed to rebuild index: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Trigger a full rebuild when documents are modified or deleted
|
|
203
|
+
* Requirements: 5.4 - When documents are modified or deleted THEN system SHALL trigger full index rebuild
|
|
204
|
+
*/
|
|
205
|
+
async triggerRebuildForDocumentChanges(reason) {
|
|
206
|
+
console.log(`Triggering index rebuild due to: ${reason}`);
|
|
207
|
+
await this.rebuildIndex();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Complete rebuild workflow with embedding regeneration
|
|
211
|
+
* This method should be called by higher-level components that have access to the EmbeddingEngine
|
|
212
|
+
* Requirements: 5.2, 5.4 - Full index rebuild functionality
|
|
213
|
+
*/
|
|
214
|
+
async rebuildWithEmbeddings(embeddingEngine) {
|
|
215
|
+
if (!this.db) {
|
|
216
|
+
throw new Error('Database not initialized');
|
|
217
|
+
}
|
|
218
|
+
console.log('Starting complete index rebuild with embedding regeneration...');
|
|
219
|
+
try {
|
|
220
|
+
// Get all chunks that need re-embedding
|
|
221
|
+
const chunkData = await this.getAllChunksFromDB();
|
|
222
|
+
if (chunkData.length === 0) {
|
|
223
|
+
console.log('No chunks found - initializing empty index');
|
|
224
|
+
await this.vectorIndex.initialize();
|
|
225
|
+
await this.updateModelVersion(embeddingEngine.getModelVersion());
|
|
226
|
+
// Store model info for the new model
|
|
227
|
+
const currentModel = this.modelName || config.embedding_model;
|
|
228
|
+
const currentDefaults = getModelDefaults(currentModel);
|
|
229
|
+
await setStoredModelInfo(this.db, currentModel, currentDefaults.dimensions);
|
|
230
|
+
await this.saveIndex();
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
// Initialize new empty index
|
|
234
|
+
await this.vectorIndex.initialize();
|
|
235
|
+
// Check if we need to resize index
|
|
236
|
+
const currentCapacity = 100000;
|
|
237
|
+
if (chunkData.length > currentCapacity * 0.8) {
|
|
238
|
+
const newCapacity = Math.ceil(chunkData.length * 1.5);
|
|
239
|
+
this.vectorIndex.resizeIndex(newCapacity);
|
|
240
|
+
console.log(`Resized index capacity to ${newCapacity}`);
|
|
241
|
+
}
|
|
242
|
+
// Re-generate embeddings for all chunks
|
|
243
|
+
console.log(`Re-generating embeddings for ${chunkData.length} chunks...`);
|
|
244
|
+
const texts = chunkData.map(chunk => chunk.text);
|
|
245
|
+
const newEmbeddings = await embeddingEngine.embedDocumentBatch(texts);
|
|
246
|
+
if (newEmbeddings.length === 0) {
|
|
247
|
+
throw new Error('Failed to generate any embeddings during rebuild');
|
|
248
|
+
}
|
|
249
|
+
// Add all vectors to the new index
|
|
250
|
+
const vectors = newEmbeddings.map((embedding) => ({
|
|
251
|
+
id: this.hashEmbeddingId(embedding.embedding_id),
|
|
252
|
+
vector: embedding.vector
|
|
253
|
+
}));
|
|
254
|
+
this.vectorIndex.addVectors(vectors);
|
|
255
|
+
console.log(`Added ${vectors.length} vectors to rebuilt index`);
|
|
256
|
+
// Update model version
|
|
257
|
+
await this.updateModelVersion(embeddingEngine.getModelVersion());
|
|
258
|
+
// Store model info for the new model
|
|
259
|
+
const currentModel = this.modelName || config.embedding_model;
|
|
260
|
+
const currentDefaults = getModelDefaults(currentModel);
|
|
261
|
+
await setStoredModelInfo(this.db, currentModel, currentDefaults.dimensions);
|
|
262
|
+
// Save the rebuilt index
|
|
263
|
+
await this.saveIndex();
|
|
264
|
+
console.log(`Index rebuild complete: ${vectors.length} vectors with new model version`);
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
throw new Error(`Failed to rebuild index with embeddings: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Check if the current model version matches stored version
|
|
272
|
+
* Requirements: 5.1, 5.2 - Compare current embedding model version with stored version
|
|
273
|
+
*/
|
|
274
|
+
async checkModelVersion(currentVersion) {
|
|
275
|
+
if (!this.db) {
|
|
276
|
+
throw new Error('Database not initialized');
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
const storedVersion = await getModelVersion(this.db);
|
|
280
|
+
if (!storedVersion || storedVersion === "") {
|
|
281
|
+
// No version stored yet, this is first run - store current version
|
|
282
|
+
await setModelVersion(this.db, currentVersion);
|
|
283
|
+
console.log(`Stored initial model version: ${currentVersion}`);
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
const matches = storedVersion === currentVersion;
|
|
287
|
+
if (!matches) {
|
|
288
|
+
console.error(`Model version mismatch detected!`);
|
|
289
|
+
console.error(`Stored version: ${storedVersion}`);
|
|
290
|
+
console.error(`Current version: ${currentVersion}`);
|
|
291
|
+
console.error(`A full index rebuild is required before the system can continue.`);
|
|
292
|
+
}
|
|
293
|
+
return matches;
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
throw new Error(`Failed to check model version: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Update the stored model version after successful rebuild
|
|
301
|
+
* Requirements: 5.5 - Save model name and hash in SQLite for version tracking
|
|
302
|
+
*/
|
|
303
|
+
async updateModelVersion(version) {
|
|
304
|
+
if (!this.db) {
|
|
305
|
+
throw new Error('Database not initialized');
|
|
306
|
+
}
|
|
307
|
+
try {
|
|
308
|
+
await setModelVersion(this.db, version);
|
|
309
|
+
console.log(`Updated model version to: ${version}`);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
throw new Error(`Failed to update model version: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Validate model version and exit if mismatch detected
|
|
317
|
+
* Requirements: 5.2 - System SHALL exit with error message until full index rebuild is completed
|
|
318
|
+
*/
|
|
319
|
+
async validateModelVersionOrExit(currentVersion) {
|
|
320
|
+
const isValid = await this.checkModelVersion(currentVersion);
|
|
321
|
+
if (!isValid) {
|
|
322
|
+
console.error('\n=== MODEL VERSION MISMATCH ===');
|
|
323
|
+
console.error('The embedding model version has changed since the last index build.');
|
|
324
|
+
console.error('This requires a full index rebuild to maintain consistency.');
|
|
325
|
+
console.error('\nTo rebuild the index, run:');
|
|
326
|
+
console.error(' npm run rebuild-index');
|
|
327
|
+
console.error(' # or');
|
|
328
|
+
console.error(' node dist/cli.js rebuild');
|
|
329
|
+
console.error('\nThe system will now exit.');
|
|
330
|
+
process.exit(1);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Save the vector index to disk
|
|
335
|
+
*/
|
|
336
|
+
async saveIndex() {
|
|
337
|
+
if (!this.isInitialized) {
|
|
338
|
+
throw new Error('Index manager not initialized');
|
|
339
|
+
}
|
|
340
|
+
await this.vectorIndex.saveIndex();
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Search for similar vectors
|
|
344
|
+
*/
|
|
345
|
+
search(queryVector, k = 5) {
|
|
346
|
+
if (!this.isInitialized) {
|
|
347
|
+
throw new Error('Index manager not initialized');
|
|
348
|
+
}
|
|
349
|
+
const results = this.vectorIndex.search(queryVector, k);
|
|
350
|
+
// Convert numeric IDs back to embedding IDs
|
|
351
|
+
const embeddingIds = results.neighbors.map(id => this.unhashEmbeddingId(id));
|
|
352
|
+
return {
|
|
353
|
+
embeddingIds,
|
|
354
|
+
distances: results.distances
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Get index statistics
|
|
359
|
+
*/
|
|
360
|
+
async getStats() {
|
|
361
|
+
if (!this.db) {
|
|
362
|
+
throw new Error('Database not initialized');
|
|
363
|
+
}
|
|
364
|
+
const totalVectors = this.vectorIndex.getCurrentCount();
|
|
365
|
+
try {
|
|
366
|
+
const modelVersion = await getModelVersion(this.db);
|
|
367
|
+
return {
|
|
368
|
+
totalVectors,
|
|
369
|
+
modelVersion: modelVersion || 'unknown',
|
|
370
|
+
lastUpdated: new Date() // Could be enhanced to track actual last update time
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
throw new Error(`Failed to get stats: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Get all chunks from database for rebuild (returns chunk data, not embeddings)
|
|
379
|
+
* Note: Embeddings need to be regenerated during rebuild since we don't store vectors in DB
|
|
380
|
+
*/
|
|
381
|
+
async getAllChunksFromDB() {
|
|
382
|
+
if (!this.db) {
|
|
383
|
+
throw new Error('Database not initialized');
|
|
384
|
+
}
|
|
385
|
+
try {
|
|
386
|
+
const rows = await this.db.all('SELECT embedding_id, text, document_id FROM chunks ORDER BY id');
|
|
387
|
+
return rows.map(row => ({
|
|
388
|
+
embedding_id: row.embedding_id,
|
|
389
|
+
text: row.text,
|
|
390
|
+
document_id: row.document_id
|
|
391
|
+
}));
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
throw new Error(`Failed to get chunks from DB: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Convert embedding ID string to numeric ID for hnswlib with collision handling
|
|
399
|
+
*/
|
|
400
|
+
hashEmbeddingId(embeddingId) {
|
|
401
|
+
// Check if we already have a mapping for this embedding ID
|
|
402
|
+
if (this.embeddingIdToHash.has(embeddingId)) {
|
|
403
|
+
return this.embeddingIdToHash.get(embeddingId);
|
|
404
|
+
}
|
|
405
|
+
let hash = 0;
|
|
406
|
+
for (let i = 0; i < embeddingId.length; i++) {
|
|
407
|
+
const char = embeddingId.charCodeAt(i);
|
|
408
|
+
hash = ((hash << 5) - hash) + char;
|
|
409
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
410
|
+
}
|
|
411
|
+
hash = Math.abs(hash);
|
|
412
|
+
// Handle hash collisions by incrementing until we find an unused hash
|
|
413
|
+
let finalHash = hash;
|
|
414
|
+
while (this.hashToEmbeddingId.has(finalHash) && this.hashToEmbeddingId.get(finalHash) !== embeddingId) {
|
|
415
|
+
finalHash = (finalHash + 1) & 0x7FFFFFFF; // Keep it positive
|
|
416
|
+
}
|
|
417
|
+
// Store the bidirectional mapping
|
|
418
|
+
this.embeddingIdToHash.set(embeddingId, finalHash);
|
|
419
|
+
this.hashToEmbeddingId.set(finalHash, embeddingId);
|
|
420
|
+
return finalHash;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Convert numeric ID back to embedding ID using the maintained mapping
|
|
424
|
+
*/
|
|
425
|
+
unhashEmbeddingId(numericId) {
|
|
426
|
+
const embeddingId = this.hashToEmbeddingId.get(numericId);
|
|
427
|
+
if (!embeddingId) {
|
|
428
|
+
console.warn(`Warning: No embedding ID found for hash ${numericId}. This may indicate index/database synchronization issues.`);
|
|
429
|
+
console.warn('Consider running "raglite rebuild" to fix synchronization problems.');
|
|
430
|
+
throw new Error(`No embedding ID found for hash ${numericId}`);
|
|
431
|
+
}
|
|
432
|
+
return embeddingId;
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Close database connection
|
|
436
|
+
*/
|
|
437
|
+
async close() {
|
|
438
|
+
if (this.db) {
|
|
439
|
+
await this.db.close();
|
|
440
|
+
this.db = null;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
//# sourceMappingURL=index-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAA2B,MAAM,SAAS,CAAC;AAE1I,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,OAAO,YAAY;IASoD;IARnE,WAAW,CAAc;IACzB,EAAE,GAA8B,IAAI,CAAC;IACrC,SAAS,CAAS;IAClB,MAAM,CAAS;IACf,aAAa,GAAG,KAAK,CAAC;IACtB,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACnD,iBAAiB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAE3D,YAAY,SAAiB,EAAE,MAAc,EAAE,UAAkB,EAAU,SAAkB;QAAlB,cAAS,GAAT,SAAS,CAAS;QAC3F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,kDAAkD;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;YAC5C,UAAU,EAAE,UAAU;YACtB,WAAW,EAAE,MAAM,EAAE,2BAA2B;YAChD,cAAc,EAAE,GAAG;YACnB,CAAC,EAAE,EAAE;SACN,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,iBAA0B,KAAK;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,2BAA2B;YAC3B,IAAI,CAAC,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE1C,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACvC,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAChD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YACtC,CAAC;YAED,0EAA0E;YAC1E,mDAAmD;YACnD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YACxF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,iCAAiC;YAC7E,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,uBAAuB;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC;YAC9D,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAEvD,IAAI,WAAW,EAAE,CAAC;gBAChB,wBAAwB;gBACxB,IAAI,WAAW,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CACb,4BAA4B;wBAC5B,kBAAkB,YAAY,KAAK,eAAe,CAAC,UAAU,gBAAgB;wBAC7E,gBAAgB,WAAW,CAAC,SAAS,KAAK,WAAW,CAAC,UAAU,gBAAgB;wBAChF,IAAI;wBACJ,gEAAgE;wBAChE,+DAA+D;wBAC/D,IAAI;wBACJ,sBAAsB;wBACtB,2BAA2B;wBAC3B,uCAAuC;wBACvC,IAAI;wBACJ,yDAAyD,CAC1D,CAAC;gBACJ,CAAC;gBAED,sDAAsD;gBACtD,IAAI,WAAW,CAAC,UAAU,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CACb,sCAAsC;wBACtC,6BAA6B,eAAe,CAAC,UAAU,IAAI;wBAC3D,2BAA2B,WAAW,CAAC,UAAU,IAAI;wBACrD,IAAI;wBACJ,iDAAiD;wBACjD,6BAA6B,CAC9B,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,YAAY,KAAK,eAAe,CAAC,UAAU,cAAc,CAAC,CAAC;YAC1G,CAAC;iBAAM,CAAC;gBACN,mCAAmC;gBACnC,OAAO,CAAC,GAAG,CAAC,0DAA0D,YAAY,EAAE,CAAC,CAAC;gBACtF,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,CAAC,gCAAgC;YAC/C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,UAA6B;QAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAC7C,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC;gBAChD,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC,CAAC,CAAC;YAEJ,qDAAqD;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACxD,MAAM,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/C,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,yCAAyC;YAEzE,IAAI,QAAQ,GAAG,eAAe,GAAG,GAAG,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,uBAAuB,eAAe,OAAO,WAAW,6BAA6B,CAAC,CAAC;gBACnG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC5C,CAAC;YAED,8EAA8E;YAC9E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,CAAC,MAAM,6BAA6B,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YAExH,yBAAyB;YACzB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,eAAwB;QACzC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAEpC,kFAAkF;YAClF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAElD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;gBAEnF,mCAAmC;gBACnC,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBAED,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,MAAM,4CAA4C,CAAC,CAAC;YAEnF,wDAAwD;YACxD,+DAA+D;YAC/D,sCAAsC;YACtC,8EAA8E;YAE9E,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAE7E,wDAAwD;YACxD,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,mBAAmB;YACnD,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,GAAG,GAAG,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,QAAQ,SAAS,CAAC,MAAM,SAAS,CAAC,CAAC;YACzF,CAAC;YAED,mCAAmC;YACnC,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YACjD,CAAC;YAED,2CAA2C;YAC3C,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,qCAAqC,SAAS,CAAC,MAAM,4BAA4B,CAAC,CAAC;QAEjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gCAAgC,CAAC,MAAc;QACnD,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CACzB,eAAuH;QAEvH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAElD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;gBAEjE,qCAAqC;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC;gBAC9D,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACvD,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;gBAE5E,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,6BAA6B;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAEpC,mCAAmC;YACnC,MAAM,eAAe,GAAG,MAAM,CAAC;YAC/B,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,GAAG,GAAG,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED,wCAAwC;YACxC,OAAO,CAAC,GAAG,CAAC,gCAAgC,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAEtE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YAED,mCAAmC;YACnC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAChD,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC;gBAChD,MAAM,EAAE,SAAS,CAAC,MAAM;aACzB,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;YAEhE,uBAAuB;YACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;YAEjE,qCAAqC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC;YAC9D,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;YAE5E,yBAAyB;YACzB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,MAAM,iCAAiC,CAAC,CAAC;QAE1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,cAAsB;QAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAErD,IAAI,CAAC,aAAa,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;gBAC3C,mEAAmE;gBACnE,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,iCAAiC,cAAc,EAAE,CAAC,CAAC;gBAC/D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,KAAK,cAAc,CAAC;YAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAe;QACtC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACjH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,0BAA0B,CAAC,cAAsB;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACrF,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAyB,EAAE,IAAY,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAExD,4CAA4C;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7E,OAAO;YACL,YAAY;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEpD,OAAO;gBACL,YAAY;gBACZ,YAAY,EAAE,YAAY,IAAI,SAAS;gBACvC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,qDAAqD;aAC9E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAC5B,gEAAgE,CACjE,CAAC;YAEF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtB,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,WAAW,EAAE,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,WAAmB;QACzC,2DAA2D;QAC3D,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;QAClD,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtB,sEAAsE;QACtE,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;YACtG,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,mBAAmB;QAC/D,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,SAAiB;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,2CAA2C,SAAS,4DAA4D,CAAC,CAAC;YAC/H,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { SearchEngine } from './search.js';
|
|
2
|
+
export { IngestionPipeline } from './ingestion.js';
|
|
3
|
+
export { EmbeddingEngine, getEmbeddingEngine, initializeEmbeddingEngine } from './embedder.js';
|
|
4
|
+
export { config, validateConfig, getModelDefaults, type Config } from './config.js';
|
|
5
|
+
export { openDatabase, initializeSchema, insertDocument, insertChunk, getChunksByEmbeddingIds, getModelVersion, setModelVersion, type DatabaseConnection, type ChunkResult } from './db.js';
|
|
6
|
+
export { discoverFiles, processFiles, discoverAndProcessFiles, DEFAULT_FILE_PROCESSOR_OPTIONS, type FileProcessorOptions, type FileDiscoveryResult, type DocumentProcessingResult } from './file-processor.js';
|
|
7
|
+
export { countTokens } from './tokenizer.js';
|
|
8
|
+
export { VectorIndex } from './vector-index.js';
|
|
9
|
+
export { IndexManager } from './index-manager.js';
|
|
10
|
+
export { ResourceManager } from './resource-manager.js';
|
|
11
|
+
export { APIError, IngestionError, SearchError, ResourceError, ModelCompatibilityError, ErrorFactory, CommonErrors, handleAPIError } from './api-errors.js';
|
|
12
|
+
export type { SearchResult, SearchOptions, Chunk, Document, EmbeddingResult, Preprocessor, PreprocessorOptions, PreprocessingConfig } from './types.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EACL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,KAAK,EACL,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Main entry point for rag-lite-ts
|
|
2
|
+
// Core API classes (simple interface matching README)
|
|
3
|
+
export { SearchEngine } from './search.js';
|
|
4
|
+
export { IngestionPipeline } from './ingestion.js';
|
|
5
|
+
// Embedding operations (required for README examples)
|
|
6
|
+
export { EmbeddingEngine, getEmbeddingEngine, initializeEmbeddingEngine } from './embedder.js';
|
|
7
|
+
// Configuration (documented in README API reference)
|
|
8
|
+
export { config, validateConfig, getModelDefaults } from './config.js';
|
|
9
|
+
// Database operations (documented in README API reference)
|
|
10
|
+
export { openDatabase, initializeSchema, insertDocument, insertChunk, getChunksByEmbeddingIds, getModelVersion, setModelVersion } from './db.js';
|
|
11
|
+
// File processing operations (documented in README API reference)
|
|
12
|
+
export { discoverFiles, processFiles, discoverAndProcessFiles, DEFAULT_FILE_PROCESSOR_OPTIONS } from './file-processor.js';
|
|
13
|
+
// Tokenization (documented in README API reference)
|
|
14
|
+
export { countTokens } from './tokenizer.js';
|
|
15
|
+
// Advanced/Internal operations (for backward compatibility and advanced use cases)
|
|
16
|
+
export { VectorIndex } from './vector-index.js';
|
|
17
|
+
export { IndexManager } from './index-manager.js';
|
|
18
|
+
export { ResourceManager } from './resource-manager.js';
|
|
19
|
+
// Error handling
|
|
20
|
+
export { APIError, IngestionError, SearchError, ResourceError, ModelCompatibilityError, ErrorFactory, CommonErrors, handleAPIError } from './api-errors.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,sDAAsD;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,sDAAsD;AACtD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AAEvB,qDAAqD;AACrD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAEpF,2DAA2D;AAC3D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,eAAe,EAGhB,MAAM,SAAS,CAAC;AAEjB,kEAAkE;AAClE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,8BAA8B,EAI/B,MAAM,qBAAqB,CAAC;AAE7B,oDAAoD;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,mFAAmF;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,iBAAiB;AACjB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
package/dist/indexer.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone indexer script for direct node execution
|
|
4
|
+
* Usage: node indexer.js <path>
|
|
5
|
+
*/
|
|
6
|
+
import { runIngest } from './cli/indexer.js';
|
|
7
|
+
import { EXIT_CODES, ConfigurationError } from './config.js';
|
|
8
|
+
async function main() {
|
|
9
|
+
const args = process.argv.slice(2);
|
|
10
|
+
if (args.length === 0) {
|
|
11
|
+
console.error('RAG-lite TS Document Indexer');
|
|
12
|
+
console.error('');
|
|
13
|
+
console.error('Usage: node indexer.js <path>');
|
|
14
|
+
console.error('');
|
|
15
|
+
console.error('Arguments:');
|
|
16
|
+
console.error(' <path> File or directory path to ingest (.md and .txt files)');
|
|
17
|
+
console.error('');
|
|
18
|
+
console.error('Examples:');
|
|
19
|
+
console.error(' node indexer.js ./docs/ # Ingest all .md/.txt files in docs/');
|
|
20
|
+
console.error(' node indexer.js ./readme.md # Ingest single file');
|
|
21
|
+
console.error(' node indexer.js ../project/docs/ # Ingest from parent directory');
|
|
22
|
+
console.error('');
|
|
23
|
+
console.error('Supported file types: .md (Markdown), .txt (Plain text)');
|
|
24
|
+
console.error('');
|
|
25
|
+
console.error('After ingestion, use: node search.js "your query"');
|
|
26
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
27
|
+
}
|
|
28
|
+
if (args.length > 1) {
|
|
29
|
+
console.error('Error: Too many arguments provided');
|
|
30
|
+
console.error('');
|
|
31
|
+
console.error('Usage: node indexer.js <path>');
|
|
32
|
+
console.error('');
|
|
33
|
+
console.error('If your path contains spaces, wrap it in quotes:');
|
|
34
|
+
console.error(' node indexer.js "my documents folder"');
|
|
35
|
+
process.exit(EXIT_CODES.INVALID_ARGUMENTS);
|
|
36
|
+
}
|
|
37
|
+
const path = args[0];
|
|
38
|
+
await runIngest(path);
|
|
39
|
+
}
|
|
40
|
+
main().catch((error) => {
|
|
41
|
+
if (error instanceof ConfigurationError) {
|
|
42
|
+
console.error('Configuration Error:');
|
|
43
|
+
console.error(error.message);
|
|
44
|
+
process.exit(error.exitCode);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error('Fatal Error:', error instanceof Error ? error.message : String(error));
|
|
48
|
+
process.exit(EXIT_CODES.GENERAL_ERROR);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACnF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC1F,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CAAC,CAAC"}
|