rag-lite-ts 1.0.1 → 1.0.2
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 +94 -65
- package/dist/cli/indexer.d.ts.map +1 -1
- package/dist/cli/indexer.js +78 -50
- package/dist/cli/indexer.js.map +1 -1
- package/dist/cli/search.d.ts.map +1 -1
- package/dist/cli/search.js +13 -30
- package/dist/cli/search.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +34 -73
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -255
- package/dist/config.js.map +1 -1
- package/dist/core/adapters.d.ts +93 -0
- package/dist/core/adapters.d.ts.map +1 -0
- package/dist/core/adapters.js +139 -0
- package/dist/core/adapters.js.map +1 -0
- package/dist/core/chunker.d.ts +117 -0
- package/dist/core/chunker.d.ts.map +1 -0
- package/dist/core/chunker.js +73 -0
- package/dist/core/chunker.js.map +1 -0
- package/dist/core/config.d.ts +102 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +240 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{db.d.ts → core/db.d.ts} +25 -9
- package/dist/core/db.d.ts.map +1 -0
- package/dist/{db.js → core/db.js} +86 -16
- package/dist/core/db.js.map +1 -0
- package/dist/{error-handler.d.ts → core/error-handler.d.ts} +23 -2
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/{error-handler.js → core/error-handler.js} +51 -8
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/index.d.ts +57 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +66 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ingestion.d.ts +143 -0
- package/dist/core/ingestion.d.ts.map +1 -0
- package/dist/core/ingestion.js +347 -0
- package/dist/core/ingestion.js.map +1 -0
- package/dist/core/interfaces.d.ts +408 -0
- package/dist/core/interfaces.d.ts.map +1 -0
- package/dist/core/interfaces.js +106 -0
- package/dist/core/interfaces.js.map +1 -0
- package/dist/{path-manager.d.ts → core/path-manager.d.ts} +5 -0
- package/dist/core/path-manager.d.ts.map +1 -0
- package/dist/{path-manager.js → core/path-manager.js} +5 -0
- package/dist/core/path-manager.js.map +1 -0
- package/dist/core/search-example.d.ts +25 -0
- package/dist/core/search-example.d.ts.map +1 -0
- package/dist/core/search-example.js +138 -0
- package/dist/core/search-example.js.map +1 -0
- package/dist/core/search-pipeline-example.d.ts +21 -0
- package/dist/core/search-pipeline-example.d.ts.map +1 -0
- package/dist/core/search-pipeline-example.js +188 -0
- package/dist/core/search-pipeline-example.js.map +1 -0
- package/dist/core/search-pipeline.d.ts +111 -0
- package/dist/core/search-pipeline.d.ts.map +1 -0
- package/dist/core/search-pipeline.js +287 -0
- package/dist/core/search-pipeline.js.map +1 -0
- package/dist/core/search.d.ts +104 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +218 -0
- package/dist/core/search.js.map +1 -0
- package/dist/core/types.d.ts +63 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/{vector-index.d.ts → core/vector-index.d.ts} +4 -0
- package/dist/core/vector-index.d.ts.map +1 -0
- package/dist/{vector-index.js → core/vector-index.js} +19 -0
- package/dist/core/vector-index.js.map +1 -0
- package/dist/dom-polyfills.d.ts +6 -0
- package/dist/dom-polyfills.d.ts.map +1 -0
- package/dist/dom-polyfills.js +40 -0
- package/dist/dom-polyfills.js.map +1 -0
- package/dist/examples/clean-api-examples.d.ts +44 -0
- package/dist/examples/clean-api-examples.d.ts.map +1 -0
- package/dist/examples/clean-api-examples.js +206 -0
- package/dist/examples/clean-api-examples.js.map +1 -0
- package/dist/factories/index.d.ts +43 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +44 -0
- package/dist/factories/index.js.map +1 -0
- package/dist/factories/text-factory.d.ts +466 -0
- package/dist/factories/text-factory.d.ts.map +1 -0
- package/dist/factories/text-factory.js +719 -0
- package/dist/factories/text-factory.js.map +1 -0
- package/dist/file-processor.d.ts +2 -2
- package/dist/file-processor.d.ts.map +1 -1
- package/dist/file-processor.js +3 -3
- package/dist/file-processor.js.map +1 -1
- package/dist/index-manager.d.ts +3 -2
- package/dist/index-manager.d.ts.map +1 -1
- package/dist/index-manager.js +13 -11
- package/dist/index-manager.js.map +1 -1
- package/dist/index.d.ts +63 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -16
- package/dist/index.js.map +1 -1
- package/dist/indexer.js +1 -1
- package/dist/indexer.js.map +1 -1
- package/dist/ingestion.d.ts +30 -156
- package/dist/ingestion.d.ts.map +1 -1
- package/dist/ingestion.js +58 -675
- package/dist/ingestion.js.map +1 -1
- package/dist/mcp-server.js +86 -55
- package/dist/mcp-server.js.map +1 -1
- package/dist/preprocess.js +1 -1
- package/dist/preprocess.js.map +1 -1
- package/dist/search-standalone.js +1 -1
- package/dist/search-standalone.js.map +1 -1
- package/dist/search.d.ts +32 -76
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +80 -428
- package/dist/search.js.map +1 -1
- package/dist/text/chunker.d.ts +32 -0
- package/dist/text/chunker.d.ts.map +1 -0
- package/dist/{chunker.js → text/chunker.js} +98 -75
- package/dist/text/chunker.js.map +1 -0
- package/dist/{embedder.d.ts → text/embedder.d.ts} +22 -1
- package/dist/text/embedder.d.ts.map +1 -0
- package/dist/{embedder.js → text/embedder.js} +71 -4
- package/dist/text/embedder.js.map +1 -0
- package/dist/text/index.d.ts +7 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +8 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/preprocessors/index.d.ts +17 -0
- package/dist/text/preprocessors/index.d.ts.map +1 -0
- package/dist/text/preprocessors/index.js +38 -0
- package/dist/text/preprocessors/index.js.map +1 -0
- package/dist/text/preprocessors/mdx.d.ts +25 -0
- package/dist/text/preprocessors/mdx.d.ts.map +1 -0
- package/dist/text/preprocessors/mdx.js +101 -0
- package/dist/text/preprocessors/mdx.js.map +1 -0
- package/dist/text/preprocessors/mermaid.d.ts +68 -0
- package/dist/text/preprocessors/mermaid.d.ts.map +1 -0
- package/dist/text/preprocessors/mermaid.js +330 -0
- package/dist/text/preprocessors/mermaid.js.map +1 -0
- package/dist/text/preprocessors/registry.d.ts +56 -0
- package/dist/text/preprocessors/registry.d.ts.map +1 -0
- package/dist/text/preprocessors/registry.js +180 -0
- package/dist/text/preprocessors/registry.js.map +1 -0
- package/dist/text/reranker.d.ts +60 -0
- package/dist/text/reranker.d.ts.map +1 -0
- package/dist/{reranker.js → text/reranker.js} +134 -19
- package/dist/text/reranker.js.map +1 -0
- package/dist/{tokenizer.d.ts → text/tokenizer.d.ts} +1 -0
- package/dist/text/tokenizer.d.ts.map +1 -0
- package/dist/{tokenizer.js → text/tokenizer.js} +7 -2
- package/dist/text/tokenizer.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/chunker.d.ts +0 -47
- package/dist/chunker.d.ts.map +0 -1
- package/dist/chunker.js.map +0 -1
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/embedder.d.ts.map +0 -1
- package/dist/embedder.js.map +0 -1
- package/dist/error-handler.d.ts.map +0 -1
- package/dist/error-handler.js.map +0 -1
- package/dist/path-manager.d.ts.map +0 -1
- package/dist/path-manager.js.map +0 -1
- package/dist/reranker.d.ts +0 -40
- package/dist/reranker.d.ts.map +0 -1
- package/dist/reranker.js.map +0 -1
- package/dist/resource-manager-demo.d.ts +0 -7
- package/dist/resource-manager-demo.d.ts.map +0 -1
- package/dist/resource-manager-demo.js +0 -52
- package/dist/resource-manager-demo.js.map +0 -1
- package/dist/resource-manager.d.ts +0 -129
- package/dist/resource-manager.d.ts.map +0 -1
- package/dist/resource-manager.js +0 -389
- package/dist/resource-manager.js.map +0 -1
- package/dist/tokenizer.d.ts.map +0 -1
- package/dist/tokenizer.js.map +0 -1
- package/dist/vector-index.d.ts.map +0 -1
- package/dist/vector-index.js.map +0 -1
package/dist/search.js
CHANGED
|
@@ -1,453 +1,105 @@
|
|
|
1
|
-
import { initializeEmbeddingEngine } from './embedder.js';
|
|
2
|
-
import { IndexManager } from './index-manager.js';
|
|
3
|
-
import { getChunksByEmbeddingIds, openDatabase, getStoredModelInfo } from './db.js';
|
|
4
|
-
import { CrossEncoderReranker } from './reranker.js';
|
|
5
|
-
import { config } from './config.js';
|
|
6
|
-
import { join, resolve } from 'path';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
8
1
|
/**
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*/
|
|
27
|
-
function resolveSearchPaths(indexPath, dbPath) {
|
|
28
|
-
const currentDir = process.cwd();
|
|
29
|
-
return {
|
|
30
|
-
indexPath: indexPath ? resolve(indexPath) : join(currentDir, 'vector-index.bin'),
|
|
31
|
-
dbPath: dbPath ? resolve(dbPath) : join(currentDir, 'db.sqlite')
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Search engine that provides semantic search capabilities
|
|
36
|
-
* Implements the core search pipeline: query embedding → vector search → metadata retrieval → optional reranking
|
|
37
|
-
* Supports concurrent read operations for multiple simultaneous queries
|
|
2
|
+
* Public API SearchEngine - Simple constructor interface with internal factory usage
|
|
3
|
+
*
|
|
4
|
+
* This class provides a clean, simple API while using the new core architecture
|
|
5
|
+
* internally. It handles dependency injection automatically.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Simple usage
|
|
10
|
+
* const search = new SearchEngine('./index.bin', './db.sqlite');
|
|
11
|
+
* const results = await search.search('query');
|
|
12
|
+
*
|
|
13
|
+
* // With options
|
|
14
|
+
* const search = new SearchEngine('./index.bin', './db.sqlite', {
|
|
15
|
+
* embeddingModel: 'all-MiniLM-L6-v2',
|
|
16
|
+
* enableReranking: true
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
38
19
|
*/
|
|
20
|
+
import { SearchEngine as CoreSearchEngine } from './core/search.js';
|
|
21
|
+
import { TextSearchFactory } from './factories/index.js';
|
|
39
22
|
export class SearchEngine {
|
|
40
|
-
// Static properties for automatic resource management (Requirement 5.1, 5.2)
|
|
41
|
-
static instances = new Set();
|
|
42
|
-
static cleanupHandlersSet = false;
|
|
43
|
-
embedder = null;
|
|
44
|
-
indexManager = null;
|
|
45
|
-
dbConnection = null;
|
|
46
|
-
reranker = null;
|
|
47
|
-
isInitialized = false;
|
|
48
23
|
indexPath;
|
|
49
24
|
dbPath;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
25
|
+
options;
|
|
26
|
+
coreEngine = null;
|
|
27
|
+
initPromise = null;
|
|
28
|
+
constructor(indexPath, dbPath, options = {}) {
|
|
29
|
+
this.indexPath = indexPath;
|
|
30
|
+
this.dbPath = dbPath;
|
|
31
|
+
this.options = options;
|
|
32
|
+
// Validate required parameters
|
|
33
|
+
if (!indexPath || typeof indexPath !== 'string' || indexPath.trim() === '') {
|
|
34
|
+
throw new Error('Both indexPath and dbPath are required.\n' +
|
|
35
|
+
'Example: const search = new SearchEngine("./index.bin", "./db.sqlite");\n' +
|
|
36
|
+
'Or use: const search = await SearchFactory.create("./index.bin", "./db.sqlite");');
|
|
37
|
+
}
|
|
38
|
+
if (!dbPath || typeof dbPath !== 'string' || dbPath.trim() === '') {
|
|
39
|
+
throw new Error('Both indexPath and dbPath are required.\n' +
|
|
40
|
+
'Example: const search = new SearchEngine("./index.bin", "./db.sqlite");\n' +
|
|
41
|
+
'Or use: const search = await SearchFactory.create("./index.bin", "./db.sqlite");');
|
|
61
42
|
}
|
|
62
|
-
if (dbPath !== undefined && (typeof dbPath !== 'string' || dbPath.trim() === '')) {
|
|
63
|
-
throw new Error('dbPath must be a non-empty string when provided');
|
|
64
|
-
}
|
|
65
|
-
// Resolve paths automatically
|
|
66
|
-
const pathConfig = resolveSearchPaths(indexPath, dbPath);
|
|
67
|
-
this.indexPath = pathConfig.indexPath;
|
|
68
|
-
this.dbPath = pathConfig.dbPath;
|
|
69
|
-
// Set up automatic cleanup on process exit (Requirement 5.5)
|
|
70
|
-
this.setupAutomaticCleanup();
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Legacy constructor for backward compatibility
|
|
74
|
-
* @deprecated Use the simple constructor new SearchEngine(indexPath?, dbPath?) instead
|
|
75
|
-
*/
|
|
76
|
-
static createWithComponents(embedder, indexManager, dbConnection, enableReranking = false) {
|
|
77
|
-
const engine = new SearchEngine();
|
|
78
|
-
engine.embedder = embedder;
|
|
79
|
-
engine.indexManager = indexManager;
|
|
80
|
-
engine.dbConnection = dbConnection;
|
|
81
|
-
engine.enableReranking = enableReranking;
|
|
82
|
-
// Initialize reranker if enabled
|
|
83
|
-
if (enableReranking) {
|
|
84
|
-
engine.reranker = new CrossEncoderReranker();
|
|
85
|
-
}
|
|
86
|
-
engine.isInitialized = true;
|
|
87
|
-
return engine;
|
|
88
43
|
}
|
|
89
44
|
/**
|
|
90
|
-
*
|
|
91
|
-
* Implements lazy initialization as required by Requirements 3.5, 4.3, 5.1, 5.2
|
|
92
|
-
*/
|
|
93
|
-
async ensureInitialized() {
|
|
94
|
-
if (this.isInitialized) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
// Check if required files exist first (before any initialization attempts)
|
|
98
|
-
if (!existsSync(this.dbPath)) {
|
|
99
|
-
throw this.createUserFriendlyError(new Error(`Database file not found: ${this.dbPath}`), 'missing_database');
|
|
100
|
-
}
|
|
101
|
-
if (!existsSync(this.indexPath)) {
|
|
102
|
-
throw this.createUserFriendlyError(new Error(`Vector index file not found: ${this.indexPath}`), 'missing_index');
|
|
103
|
-
}
|
|
104
|
-
try {
|
|
105
|
-
console.log('Initializing search engine...');
|
|
106
|
-
// Initialize database connection
|
|
107
|
-
console.log('Opening database connection...');
|
|
108
|
-
this.dbConnection = await openDatabase(this.dbPath);
|
|
109
|
-
// Read stored model info from database (Requirement 4.3)
|
|
110
|
-
console.log('Reading stored model information...');
|
|
111
|
-
const storedModelInfo = await getStoredModelInfo(this.dbConnection);
|
|
112
|
-
if (!storedModelInfo) {
|
|
113
|
-
throw this.createUserFriendlyError(new Error('No model information found in database'), 'missing_model_info');
|
|
114
|
-
}
|
|
115
|
-
// Initialize embedder with stored model info (Requirement 3.5)
|
|
116
|
-
console.log(`Loading embedding model: ${storedModelInfo.modelName}...`);
|
|
117
|
-
try {
|
|
118
|
-
this.embedder = await initializeEmbeddingEngine(storedModelInfo.modelName);
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
throw this.createUserFriendlyError(error, 'model_loading');
|
|
122
|
-
}
|
|
123
|
-
// Initialize index manager with model compatibility validation
|
|
124
|
-
console.log('Initializing index manager...');
|
|
125
|
-
try {
|
|
126
|
-
this.indexManager = new IndexManager(this.indexPath, this.dbPath, storedModelInfo.dimensions, storedModelInfo.modelName);
|
|
127
|
-
await this.indexManager.initialize();
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
// Check if this is a model compatibility issue
|
|
131
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
132
|
-
if (errorMessage.includes('mismatch') || errorMessage.includes('version') || errorMessage.includes('model')) {
|
|
133
|
-
throw this.createUserFriendlyError(error, 'model_compatibility');
|
|
134
|
-
}
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
// Load reranker model if enabled
|
|
138
|
-
if (this.enableReranking) {
|
|
139
|
-
this.reranker = new CrossEncoderReranker();
|
|
140
|
-
console.log('Loading reranker model...');
|
|
141
|
-
try {
|
|
142
|
-
await this.reranker.loadModel();
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
console.warn(`Reranker initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
146
|
-
console.warn('Continuing with vector search only (reranking disabled)');
|
|
147
|
-
this.reranker = null; // Disable reranker for this session
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
this.isInitialized = true;
|
|
151
|
-
const stats = await this.indexManager.getStats();
|
|
152
|
-
console.log(`Search engine initialized with ${stats.totalVectors} chunks${this.reranker && this.reranker.isLoaded() ? ' and reranking enabled' : ''}`);
|
|
153
|
-
}
|
|
154
|
-
catch (error) {
|
|
155
|
-
await this.cleanup();
|
|
156
|
-
if (error instanceof SearchError) {
|
|
157
|
-
throw error;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
throw this.createUserFriendlyError(error, 'initialization');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Create user-friendly error messages with actionable suggestions
|
|
166
|
-
* Implements requirement 5.3: Clear, actionable error messages with specific next steps
|
|
167
|
-
*/
|
|
168
|
-
createUserFriendlyError(error, context) {
|
|
169
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
170
|
-
// Handle common error scenarios with specific guidance
|
|
171
|
-
if (context === 'missing_database') {
|
|
172
|
-
return new SearchError(`Database file not found: ${this.dbPath}`, 'DATABASE_NOT_FOUND', [
|
|
173
|
-
'Run ingestion first to create the database: pipeline.ingestDirectory("./docs/")',
|
|
174
|
-
'Check that the database path is correct',
|
|
175
|
-
'Ensure the ingestion process completed successfully'
|
|
176
|
-
]);
|
|
177
|
-
}
|
|
178
|
-
if (context === 'missing_index') {
|
|
179
|
-
return new SearchError(`Vector index file not found: ${this.indexPath}`, 'INDEX_NOT_FOUND', [
|
|
180
|
-
'Run ingestion first to create the index: pipeline.ingestDirectory("./docs/")',
|
|
181
|
-
'Check that the index path is correct',
|
|
182
|
-
'Ensure the ingestion process completed successfully'
|
|
183
|
-
]);
|
|
184
|
-
}
|
|
185
|
-
if (context === 'missing_model_info') {
|
|
186
|
-
return new SearchError('No embedding model information found in database. The database may be from an older version or corrupted.', 'MODEL_INFO_NOT_FOUND', [
|
|
187
|
-
'Run ingestion again to store model information: pipeline.ingestDirectory("./docs/")',
|
|
188
|
-
'If the problem persists, delete the database and index files and run ingestion from scratch',
|
|
189
|
-
'Check that the database was created with a compatible version of the library'
|
|
190
|
-
]);
|
|
191
|
-
}
|
|
192
|
-
if (context === 'model_loading') {
|
|
193
|
-
return new SearchError(`Failed to load embedding model: ${errorMessage}`, 'MODEL_LOADING_FAILED', [
|
|
194
|
-
'Check that the model name is correct and supported',
|
|
195
|
-
'Ensure you have internet connection for model download',
|
|
196
|
-
'Try running ingestion again with a supported model',
|
|
197
|
-
'Check the model configuration in your setup'
|
|
198
|
-
]);
|
|
199
|
-
}
|
|
200
|
-
if (context === 'model_compatibility' || (errorMessage.includes('model') && errorMessage.includes('mismatch'))) {
|
|
201
|
-
return new SearchError(`Model compatibility issue detected: ${errorMessage}`, 'MODEL_COMPATIBILITY', [
|
|
202
|
-
'The stored model information doesn\'t match the current configuration',
|
|
203
|
-
'Run pipeline.rebuildIndex() to rebuild with the current model',
|
|
204
|
-
'Or ensure you\'re using the same model that was used during ingestion',
|
|
205
|
-
'Check that the index and database files are from the same ingestion run'
|
|
206
|
-
]);
|
|
207
|
-
}
|
|
208
|
-
if (errorMessage.includes('ENOENT') || errorMessage.includes('no such file')) {
|
|
209
|
-
return new SearchError(`Required files not found: ${errorMessage}`, 'FILES_NOT_FOUND', [
|
|
210
|
-
'Run ingestion first to create the required files',
|
|
211
|
-
'Check that the file paths are correct',
|
|
212
|
-
'Ensure you have read permissions for the files'
|
|
213
|
-
]);
|
|
214
|
-
}
|
|
215
|
-
if (errorMessage.includes('EACCES') || errorMessage.includes('permission denied')) {
|
|
216
|
-
return new SearchError(`Permission denied: ${errorMessage}`, 'PERMISSION_DENIED', [
|
|
217
|
-
'Check that you have read permissions for the database and index files',
|
|
218
|
-
'Ensure the files are not locked by another process',
|
|
219
|
-
'Try running with appropriate permissions'
|
|
220
|
-
]);
|
|
221
|
-
}
|
|
222
|
-
if (errorMessage.includes('database') || errorMessage.includes('sqlite')) {
|
|
223
|
-
return new SearchError(`Database error: ${errorMessage}`, 'DATABASE_ERROR', [
|
|
224
|
-
'Check that the database file is not corrupted',
|
|
225
|
-
'Ensure no other processes are using the database',
|
|
226
|
-
'Try recreating the database by running ingestion again'
|
|
227
|
-
]);
|
|
228
|
-
}
|
|
229
|
-
// Generic error with basic suggestions
|
|
230
|
-
return new SearchError(`Search engine ${context} failed: ${errorMessage}`, 'GENERAL_ERROR', [
|
|
231
|
-
'Check the error message above for specific details',
|
|
232
|
-
'Ensure all required files exist and are accessible',
|
|
233
|
-
'Try running ingestion first if you haven\'t already',
|
|
234
|
-
'Contact support if the issue persists'
|
|
235
|
-
]);
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Initialize the search engine (public method for backward compatibility)
|
|
239
|
-
* Sets up database, index manager, and embedding engine
|
|
45
|
+
* Initialize the search engine using the factory or direct injection
|
|
240
46
|
*/
|
|
241
47
|
async initialize() {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
const startTime = performance.now();
|
|
259
|
-
const topK = options.top_k || config.top_k || 10;
|
|
260
|
-
const shouldRerank = options.rerank !== undefined ? options.rerank : config.rerank_enabled;
|
|
261
|
-
try {
|
|
262
|
-
// Ensure all components are initialized
|
|
263
|
-
if (!this.embedder || !this.indexManager || !this.dbConnection) {
|
|
264
|
-
throw new Error('Search engine components not properly initialized');
|
|
265
|
-
}
|
|
266
|
-
// Step 1: Build query embedding using same model as document chunks
|
|
267
|
-
const embeddingStartTime = performance.now();
|
|
268
|
-
const queryEmbedding = await this.embedder.embedSingle(query);
|
|
269
|
-
const embeddingTime = performance.now() - embeddingStartTime;
|
|
270
|
-
// Step 2: Search using IndexManager (which handles hash mapping properly)
|
|
271
|
-
const searchStartTime = performance.now();
|
|
272
|
-
let searchResult;
|
|
273
|
-
try {
|
|
274
|
-
searchResult = this.indexManager.search(queryEmbedding.vector, topK);
|
|
275
|
-
}
|
|
276
|
-
catch (error) {
|
|
277
|
-
if (error instanceof Error && error.message.includes('No embedding ID found for hash')) {
|
|
278
|
-
console.warn(`Hash mapping issue detected: ${error.message}`);
|
|
279
|
-
console.warn('This may indicate index/database synchronization issues. Consider running: raglite rebuild');
|
|
280
|
-
return [];
|
|
281
|
-
}
|
|
282
|
-
throw error;
|
|
283
|
-
}
|
|
284
|
-
const vectorSearchTime = performance.now() - searchStartTime;
|
|
285
|
-
if (searchResult.embeddingIds.length === 0) {
|
|
286
|
-
const totalTime = performance.now() - startTime;
|
|
287
|
-
console.log(`No similar documents found (${totalTime.toFixed(2)}ms total)`);
|
|
288
|
-
return [];
|
|
289
|
-
}
|
|
290
|
-
// Step 3: Retrieve chunks from database using embedding IDs
|
|
291
|
-
const retrievalStartTime = performance.now();
|
|
292
|
-
const chunks = await getChunksByEmbeddingIds(this.dbConnection, searchResult.embeddingIds);
|
|
293
|
-
const retrievalTime = performance.now() - retrievalStartTime;
|
|
294
|
-
// Step 4: Format results as JSON with text, score, and document metadata
|
|
295
|
-
let results = this.formatSearchResults(chunks, searchResult.distances, searchResult.embeddingIds);
|
|
296
|
-
// Step 5: Optional reranking with cross-encoder when enabled
|
|
297
|
-
let rerankTime = 0;
|
|
298
|
-
if (shouldRerank && this.reranker && this.reranker.isLoaded() && results.length > 1) {
|
|
299
|
-
try {
|
|
300
|
-
const rerankStartTime = performance.now();
|
|
301
|
-
results = await this.reranker.rerank(query, results);
|
|
302
|
-
rerankTime = performance.now() - rerankStartTime;
|
|
48
|
+
if (this.coreEngine) {
|
|
49
|
+
return; // Already initialized
|
|
50
|
+
}
|
|
51
|
+
if (this.initPromise) {
|
|
52
|
+
return this.initPromise; // Initialization in progress
|
|
53
|
+
}
|
|
54
|
+
this.initPromise = (async () => {
|
|
55
|
+
// If custom functions are provided, use direct dependency injection
|
|
56
|
+
if (this.options.embedFn || this.options.rerankFn) {
|
|
57
|
+
const { IndexManager } = await import('./index-manager.js');
|
|
58
|
+
const { openDatabase } = await import('./core/db.js');
|
|
59
|
+
const { createTextEmbedFunction } = await import('./text/embedder.js');
|
|
60
|
+
const { existsSync } = await import('fs');
|
|
61
|
+
// Validate files exist
|
|
62
|
+
if (!existsSync(this.indexPath)) {
|
|
63
|
+
throw new Error(`Vector index not found at: ${this.indexPath}`);
|
|
303
64
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
console.warn(`Reranking failed, using vector search results: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
65
|
+
if (!existsSync(this.dbPath)) {
|
|
66
|
+
throw new Error(`Database not found at: ${this.dbPath}`);
|
|
307
67
|
}
|
|
68
|
+
// Use custom embedFn or create default
|
|
69
|
+
const embedFn = this.options.embedFn || createTextEmbedFunction(this.options.embeddingModel);
|
|
70
|
+
// Get model defaults for dimensions
|
|
71
|
+
const { getModelDefaults, config } = await import('./core/config.js');
|
|
72
|
+
const modelDefaults = getModelDefaults(this.options.embeddingModel || config.embedding_model);
|
|
73
|
+
// Initialize dependencies
|
|
74
|
+
const db = await openDatabase(this.dbPath);
|
|
75
|
+
const indexManager = new IndexManager(this.indexPath, this.dbPath, modelDefaults.dimensions, this.options.embeddingModel);
|
|
76
|
+
await indexManager.initialize();
|
|
77
|
+
// Create core engine with dependency injection
|
|
78
|
+
this.coreEngine = new CoreSearchEngine(embedFn, indexManager, db, this.options.rerankFn);
|
|
308
79
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
`(embed: ${embeddingTime.toFixed(2)}ms, vector: ${vectorSearchTime.toFixed(2)}ms, ` +
|
|
313
|
-
`retrieval: ${retrievalTime.toFixed(2)}ms${rerankTime > 0 ? `, rerank: ${rerankTime.toFixed(2)}ms` : ''})`);
|
|
314
|
-
return results;
|
|
315
|
-
}
|
|
316
|
-
catch (error) {
|
|
317
|
-
throw new Error(`Search failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Format search results with proper structure
|
|
322
|
-
* @param chunks - Database chunks with metadata
|
|
323
|
-
* @param distances - Similarity distances from vector search
|
|
324
|
-
* @param embeddingIds - Embedding IDs in search result order
|
|
325
|
-
* @returns Formatted search results
|
|
326
|
-
*/
|
|
327
|
-
formatSearchResults(chunks, distances, embeddingIds) {
|
|
328
|
-
const results = [];
|
|
329
|
-
// Create a map for quick chunk lookup by embedding_id
|
|
330
|
-
const chunkMap = new Map();
|
|
331
|
-
chunks.forEach(chunk => {
|
|
332
|
-
chunkMap.set(chunk.embedding_id, chunk);
|
|
333
|
-
});
|
|
334
|
-
// Build results in the order of search results
|
|
335
|
-
for (let i = 0; i < embeddingIds.length; i++) {
|
|
336
|
-
const embeddingId = embeddingIds[i];
|
|
337
|
-
const chunk = chunkMap.get(embeddingId);
|
|
338
|
-
if (chunk) {
|
|
339
|
-
// Convert cosine distance to similarity score (1 - distance)
|
|
340
|
-
// hnswlib-wasm returns cosine distance, we want similarity
|
|
341
|
-
const score = Math.max(0, 1 - distances[i]);
|
|
342
|
-
results.push({
|
|
343
|
-
text: chunk.text,
|
|
344
|
-
score: score,
|
|
345
|
-
document: {
|
|
346
|
-
id: chunk.document_id,
|
|
347
|
-
source: chunk.document_source,
|
|
348
|
-
title: chunk.document_title
|
|
349
|
-
}
|
|
350
|
-
});
|
|
80
|
+
else {
|
|
81
|
+
// Use factory for standard initialization
|
|
82
|
+
this.coreEngine = await TextSearchFactory.create(this.indexPath, this.dbPath, this.options);
|
|
351
83
|
}
|
|
352
|
-
}
|
|
353
|
-
return
|
|
84
|
+
})();
|
|
85
|
+
return this.initPromise;
|
|
354
86
|
}
|
|
355
87
|
/**
|
|
356
|
-
*
|
|
357
|
-
* @returns Object with current search engine stats
|
|
88
|
+
* Perform semantic search
|
|
358
89
|
*/
|
|
359
|
-
async
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
indexSize: 0,
|
|
364
|
-
rerankingEnabled: false,
|
|
365
|
-
isInitialized: false
|
|
366
|
-
};
|
|
90
|
+
async search(query, options) {
|
|
91
|
+
await this.initialize();
|
|
92
|
+
if (!this.coreEngine) {
|
|
93
|
+
throw new Error('SearchEngine failed to initialize');
|
|
367
94
|
}
|
|
368
|
-
|
|
369
|
-
return {
|
|
370
|
-
totalChunks: indexStats.totalVectors,
|
|
371
|
-
indexSize: indexStats.totalVectors,
|
|
372
|
-
rerankingEnabled: this.reranker !== null && this.reranker.isLoaded(),
|
|
373
|
-
isInitialized: this.isInitialized
|
|
374
|
-
};
|
|
95
|
+
return this.coreEngine.search(query, options);
|
|
375
96
|
}
|
|
376
97
|
/**
|
|
377
|
-
*
|
|
378
|
-
*/
|
|
379
|
-
setupAutomaticCleanup() {
|
|
380
|
-
// Track this instance for cleanup
|
|
381
|
-
SearchEngine.instances.add(this);
|
|
382
|
-
// Set up process exit handlers only once
|
|
383
|
-
if (!SearchEngine.cleanupHandlersSet) {
|
|
384
|
-
SearchEngine.cleanupHandlersSet = true;
|
|
385
|
-
const cleanupAll = async () => {
|
|
386
|
-
const instances = Array.from(SearchEngine.instances);
|
|
387
|
-
await Promise.all(instances.map(instance => instance.cleanup()));
|
|
388
|
-
};
|
|
389
|
-
// Handle various exit scenarios
|
|
390
|
-
process.on('exit', () => {
|
|
391
|
-
// Synchronous cleanup for exit event
|
|
392
|
-
for (const instance of SearchEngine.instances) {
|
|
393
|
-
try {
|
|
394
|
-
if (instance.dbConnection) {
|
|
395
|
-
// Synchronous close for exit handler
|
|
396
|
-
instance.dbConnection = null;
|
|
397
|
-
}
|
|
398
|
-
if (instance.indexManager) {
|
|
399
|
-
instance.indexManager = null;
|
|
400
|
-
}
|
|
401
|
-
instance.embedder = null;
|
|
402
|
-
instance.reranker = null;
|
|
403
|
-
instance.isInitialized = false;
|
|
404
|
-
}
|
|
405
|
-
catch (error) {
|
|
406
|
-
// Silent cleanup on exit
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
});
|
|
410
|
-
process.on('SIGINT', async () => {
|
|
411
|
-
await cleanupAll();
|
|
412
|
-
process.exit(0);
|
|
413
|
-
});
|
|
414
|
-
process.on('SIGTERM', async () => {
|
|
415
|
-
await cleanupAll();
|
|
416
|
-
process.exit(0);
|
|
417
|
-
});
|
|
418
|
-
process.on('uncaughtException', async (error) => {
|
|
419
|
-
console.error('Uncaught exception:', error);
|
|
420
|
-
await cleanupAll();
|
|
421
|
-
process.exit(1);
|
|
422
|
-
});
|
|
423
|
-
process.on('unhandledRejection', async (reason) => {
|
|
424
|
-
console.error('Unhandled rejection:', reason);
|
|
425
|
-
await cleanupAll();
|
|
426
|
-
process.exit(1);
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
/**
|
|
431
|
-
* Clean up resources (Requirement 5.5)
|
|
98
|
+
* Clean up resources
|
|
432
99
|
*/
|
|
433
100
|
async cleanup() {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
await this.dbConnection.close();
|
|
437
|
-
this.dbConnection = null;
|
|
438
|
-
}
|
|
439
|
-
if (this.indexManager) {
|
|
440
|
-
await this.indexManager.close();
|
|
441
|
-
this.indexManager = null;
|
|
442
|
-
}
|
|
443
|
-
this.embedder = null;
|
|
444
|
-
this.reranker = null;
|
|
445
|
-
this.isInitialized = false;
|
|
446
|
-
// Remove from instances set
|
|
447
|
-
SearchEngine.instances.delete(this);
|
|
448
|
-
}
|
|
449
|
-
catch (error) {
|
|
450
|
-
console.error('Error during SearchEngine cleanup:', error instanceof Error ? error.message : String(error));
|
|
101
|
+
if (this.coreEngine) {
|
|
102
|
+
await this.coreEngine.cleanup();
|
|
451
103
|
}
|
|
452
104
|
}
|
|
453
105
|
}
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,sBAAsB,CAAC;AAUjF,MAAM,OAAO,YAAY;IAKb;IACA;IACA;IANF,UAAU,GAA4B,IAAI,CAAC;IAC3C,WAAW,GAAyB,IAAI,CAAC;IAEjD,YACU,SAAiB,EACjB,MAAc,EACd,UAA+B,EAAE;QAFjC,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAA0B;QAEzC,+BAA+B;QAC/B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,2EAA2E;gBAC3E,kFAAkF,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CACb,2CAA2C;gBAC3C,2EAA2E;gBAC3E,kFAAkF,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,sBAAsB;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,6BAA6B;QACxD,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,oEAAoE;YACpE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAC5D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;gBACtD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACvE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE1C,uBAAuB;gBACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAClE,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBAED,uCAAuC;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAE7F,oCAAoC;gBACpC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACtE,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;gBAE9F,0BAA0B;gBAC1B,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC1H,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;gBAEhC,+CAA+C;gBAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,0CAA0C;gBAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAC9C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACb,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAuB;QACjD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text-specific chunking implementation
|
|
3
|
+
* Implements the ChunkingStrategy interface for text content
|
|
4
|
+
*/
|
|
5
|
+
import '../dom-polyfills.js';
|
|
6
|
+
import { ChunkingStrategy, GenericDocument, GenericChunk, ChunkConfig } from '../core/chunker.js';
|
|
7
|
+
/**
|
|
8
|
+
* Document interface for text chunking
|
|
9
|
+
*/
|
|
10
|
+
export interface Document {
|
|
11
|
+
source: string;
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export interface Chunk {
|
|
16
|
+
text: string;
|
|
17
|
+
chunkIndex: number;
|
|
18
|
+
tokenCount: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Text chunking strategy implementation
|
|
22
|
+
*/
|
|
23
|
+
export declare class TextChunkingStrategy implements ChunkingStrategy {
|
|
24
|
+
appliesTo(contentType: string): boolean;
|
|
25
|
+
chunk(document: GenericDocument, config: ChunkConfig): Promise<GenericChunk[]>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Text document chunking function
|
|
29
|
+
* Converts between text-specific and generic interfaces
|
|
30
|
+
*/
|
|
31
|
+
export declare function chunkDocument(document: Document, config?: ChunkConfig): Promise<Chunk[]>;
|
|
32
|
+
//# sourceMappingURL=chunker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../src/text/chunker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,WAAW,EAEZ,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AA+LD;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIjC,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAuFrF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,WAAkC,GACzC,OAAO,CAAC,KAAK,EAAE,CAAC,CAsBlB"}
|