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
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*/
|
|
5
|
+
import { homedir } from 'os';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Standard exit codes for different error conditions
|
|
9
|
+
*/
|
|
10
|
+
export const EXIT_CODES = {
|
|
11
|
+
SUCCESS: 0,
|
|
12
|
+
GENERAL_ERROR: 1,
|
|
13
|
+
INVALID_ARGUMENTS: 2,
|
|
14
|
+
CONFIGURATION_ERROR: 3,
|
|
15
|
+
FILE_NOT_FOUND: 4,
|
|
16
|
+
DATABASE_ERROR: 5,
|
|
17
|
+
MODEL_ERROR: 6,
|
|
18
|
+
INDEX_ERROR: 7,
|
|
19
|
+
PERMISSION_ERROR: 8
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Configuration validation error with specific exit code
|
|
23
|
+
*/
|
|
24
|
+
export class ConfigurationError extends Error {
|
|
25
|
+
exitCode;
|
|
26
|
+
constructor(message, exitCode = EXIT_CODES.CONFIGURATION_ERROR) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.exitCode = exitCode;
|
|
29
|
+
this.name = 'ConfigurationError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the default model cache path as specified in the requirements
|
|
34
|
+
* @returns Default cache path (~/.raglite/models/)
|
|
35
|
+
*/
|
|
36
|
+
export function getDefaultModelCachePath() {
|
|
37
|
+
return join(homedir(), '.raglite', 'models');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validates core configuration fields
|
|
41
|
+
* @param config - Configuration object to validate
|
|
42
|
+
* @throws {ConfigurationError} If configuration is invalid
|
|
43
|
+
*/
|
|
44
|
+
export function validateCoreConfig(config) {
|
|
45
|
+
if (!config || typeof config !== 'object') {
|
|
46
|
+
throw new ConfigurationError('Configuration must be an object');
|
|
47
|
+
}
|
|
48
|
+
// Check required string fields
|
|
49
|
+
const requiredStrings = ['db_file', 'index_file'];
|
|
50
|
+
for (const field of requiredStrings) {
|
|
51
|
+
if (!config[field] || typeof config[field] !== 'string') {
|
|
52
|
+
throw new ConfigurationError(`Configuration error: '${field}' must be a non-empty string.\n` +
|
|
53
|
+
`Current value: ${JSON.stringify(config[field])}\n` +
|
|
54
|
+
`Please check your configuration file.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Validate path_storage_strategy
|
|
58
|
+
if (!['absolute', 'relative'].includes(config.path_storage_strategy)) {
|
|
59
|
+
throw new ConfigurationError(`Configuration error: 'path_storage_strategy' must be either 'absolute' or 'relative'.\n` +
|
|
60
|
+
`Current value: ${JSON.stringify(config.path_storage_strategy)}\n` +
|
|
61
|
+
`Please set it to 'absolute' or 'relative'.`);
|
|
62
|
+
}
|
|
63
|
+
// Check required numeric fields are positive
|
|
64
|
+
const requiredNumbers = ['chunk_size', 'chunk_overlap', 'batch_size', 'top_k'];
|
|
65
|
+
for (const field of requiredNumbers) {
|
|
66
|
+
if (typeof config[field] !== 'number' || config[field] <= 0) {
|
|
67
|
+
throw new ConfigurationError(`Configuration error: '${field}' must be a positive number.\n` +
|
|
68
|
+
`Current value: ${JSON.stringify(config[field])}\n` +
|
|
69
|
+
`Please ensure all numeric values are greater than 0.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Validate optional model_cache_path field
|
|
73
|
+
if (config.model_cache_path !== undefined && (typeof config.model_cache_path !== 'string' || config.model_cache_path.trim() === '')) {
|
|
74
|
+
throw new ConfigurationError(`Configuration error: 'model_cache_path' must be a non-empty string when provided.\n` +
|
|
75
|
+
`Current value: ${JSON.stringify(config.model_cache_path)}\n` +
|
|
76
|
+
`Please provide a valid directory path or remove the field to use default caching.`);
|
|
77
|
+
}
|
|
78
|
+
// Validate chunk_overlap is less than chunk_size
|
|
79
|
+
if (config.chunk_overlap >= config.chunk_size) {
|
|
80
|
+
throw new ConfigurationError(`Configuration error: chunk_overlap (${config.chunk_overlap}) must be less than chunk_size (${config.chunk_size}).\n` +
|
|
81
|
+
`Recommended: Set chunk_overlap to about 20% of chunk_size (e.g., chunk_size: 250, chunk_overlap: 50).`);
|
|
82
|
+
}
|
|
83
|
+
// Validate reasonable ranges for performance
|
|
84
|
+
if (config.chunk_size > 1000) {
|
|
85
|
+
console.warn(`Warning: Large chunk_size (${config.chunk_size}) may impact performance. Recommended range: 200-400 tokens.`);
|
|
86
|
+
}
|
|
87
|
+
if (config.batch_size > 64) {
|
|
88
|
+
console.warn(`Warning: Large batch_size (${config.batch_size}) may cause memory issues. Recommended range: 8-32.`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get default configuration for different embedding models
|
|
93
|
+
* @param modelName - Name of the embedding model
|
|
94
|
+
* @returns Model-specific defaults
|
|
95
|
+
*/
|
|
96
|
+
export function getModelDefaults(modelName) {
|
|
97
|
+
// Default configuration for most models
|
|
98
|
+
const defaults = {
|
|
99
|
+
dimensions: 384, // Most common dimension for sentence transformers
|
|
100
|
+
chunk_size: 250,
|
|
101
|
+
chunk_overlap: 50,
|
|
102
|
+
batch_size: 16
|
|
103
|
+
};
|
|
104
|
+
// Model-specific overrides
|
|
105
|
+
if (modelName) {
|
|
106
|
+
const normalizedName = modelName.toLowerCase();
|
|
107
|
+
// Specific model configurations
|
|
108
|
+
if (normalizedName.includes('all-mpnet-base-v2')) {
|
|
109
|
+
defaults.dimensions = 768;
|
|
110
|
+
defaults.chunk_size = 400;
|
|
111
|
+
defaults.chunk_overlap = 80;
|
|
112
|
+
defaults.batch_size = 8;
|
|
113
|
+
}
|
|
114
|
+
else if (normalizedName.includes('mpnet') || normalizedName.includes('768')) {
|
|
115
|
+
defaults.dimensions = 768;
|
|
116
|
+
}
|
|
117
|
+
else if (normalizedName.includes('512')) {
|
|
118
|
+
defaults.dimensions = 512;
|
|
119
|
+
}
|
|
120
|
+
else if (normalizedName.includes('384') || normalizedName.includes('minilm')) {
|
|
121
|
+
defaults.dimensions = 384;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return defaults;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Default core configuration object
|
|
128
|
+
* Model-agnostic settings that can be used by core modules
|
|
129
|
+
*/
|
|
130
|
+
export const config = {
|
|
131
|
+
chunk_size: parseInt(process.env.RAG_CHUNK_SIZE || '250', 10),
|
|
132
|
+
chunk_overlap: parseInt(process.env.RAG_CHUNK_OVERLAP || '50', 10),
|
|
133
|
+
batch_size: parseInt(process.env.RAG_BATCH_SIZE || '16', 10),
|
|
134
|
+
top_k: parseInt(process.env.RAG_TOP_K || '10', 10),
|
|
135
|
+
db_file: process.env.RAG_DB_FILE || 'db.sqlite',
|
|
136
|
+
index_file: process.env.RAG_INDEX_FILE || 'vector-index.bin',
|
|
137
|
+
model_cache_path: process.env.RAG_MODEL_CACHE_PATH || getDefaultModelCachePath(),
|
|
138
|
+
path_storage_strategy: process.env.RAG_PATH_STORAGE_STRATEGY || 'relative',
|
|
139
|
+
embedding_model: process.env.RAG_EMBEDDING_MODEL || 'sentence-transformers/all-MiniLM-L6-v2',
|
|
140
|
+
rerank_enabled: process.env.RAG_RERANK_ENABLED === 'true',
|
|
141
|
+
preprocessing: { mode: 'balanced' }
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Validate preprocessing configuration
|
|
145
|
+
*/
|
|
146
|
+
export function validatePreprocessingConfig(config) {
|
|
147
|
+
if (!config || typeof config !== 'object') {
|
|
148
|
+
throw new ConfigurationError('Preprocessing configuration must be an object');
|
|
149
|
+
}
|
|
150
|
+
if (!config.mode || !['strict', 'balanced', 'rich'].includes(config.mode)) {
|
|
151
|
+
throw new ConfigurationError('preprocessing.mode must be one of: strict, balanced, rich');
|
|
152
|
+
}
|
|
153
|
+
// Validate overrides if present
|
|
154
|
+
if (config.overrides !== undefined) {
|
|
155
|
+
if (!config.overrides || typeof config.overrides !== 'object') {
|
|
156
|
+
throw new ConfigurationError('preprocessing.overrides must be an object when provided');
|
|
157
|
+
}
|
|
158
|
+
const validValues = ['strip', 'keep', 'placeholder', 'extract'];
|
|
159
|
+
// Validate MDX override
|
|
160
|
+
if (config.overrides.mdx !== undefined && !validValues.includes(config.overrides.mdx)) {
|
|
161
|
+
throw new ConfigurationError('preprocessing.overrides.mdx must be one of: strip, keep, placeholder');
|
|
162
|
+
}
|
|
163
|
+
// Validate Mermaid override
|
|
164
|
+
if (config.overrides.mermaid !== undefined && !validValues.includes(config.overrides.mermaid)) {
|
|
165
|
+
throw new ConfigurationError('preprocessing.overrides.mermaid must be one of: strip, keep, placeholder, extract');
|
|
166
|
+
}
|
|
167
|
+
// Validate code override
|
|
168
|
+
if (config.overrides.code !== undefined && !validValues.includes(config.overrides.code)) {
|
|
169
|
+
throw new ConfigurationError('preprocessing.overrides.code must be one of: strip, keep, placeholder');
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Merge preprocessing configurations with mode defaults
|
|
175
|
+
*/
|
|
176
|
+
export function mergePreprocessingConfig(config) {
|
|
177
|
+
const modeDefaults = {
|
|
178
|
+
strict: { mdx: 'strip', mermaid: 'strip', code: 'strip' },
|
|
179
|
+
balanced: { mdx: 'placeholder', mermaid: 'placeholder', code: 'keep' },
|
|
180
|
+
rich: { mdx: 'keep', mermaid: 'extract', code: 'keep' }
|
|
181
|
+
};
|
|
182
|
+
const defaults = modeDefaults[config.mode] || modeDefaults.balanced;
|
|
183
|
+
return {
|
|
184
|
+
...defaults,
|
|
185
|
+
...config.overrides
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Utility function to handle unrecoverable errors with descriptive messages
|
|
190
|
+
* Logs error and exits immediately with appropriate exit code
|
|
191
|
+
* @param error - Error object or message
|
|
192
|
+
* @param context - Context where the error occurred
|
|
193
|
+
* @param exitCode - Exit code to use (defaults to GENERAL_ERROR)
|
|
194
|
+
*/
|
|
195
|
+
export function handleUnrecoverableError(error, context, exitCode = EXIT_CODES.GENERAL_ERROR) {
|
|
196
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
197
|
+
console.error(`\nFatal Error in ${context}:`);
|
|
198
|
+
console.error(errorMessage);
|
|
199
|
+
console.error('\nThe system cannot continue and will exit immediately.');
|
|
200
|
+
// Provide context-specific guidance
|
|
201
|
+
switch (exitCode) {
|
|
202
|
+
case EXIT_CODES.CONFIGURATION_ERROR:
|
|
203
|
+
console.error('\nPlease check your configuration and try again.');
|
|
204
|
+
break;
|
|
205
|
+
case EXIT_CODES.DATABASE_ERROR:
|
|
206
|
+
console.error('\nTry running "raglite rebuild" to fix database issues.');
|
|
207
|
+
break;
|
|
208
|
+
case EXIT_CODES.MODEL_ERROR:
|
|
209
|
+
console.error('\nEnsure you have internet connection for model download and sufficient disk space.');
|
|
210
|
+
break;
|
|
211
|
+
case EXIT_CODES.INDEX_ERROR:
|
|
212
|
+
console.error('\nTry running "raglite rebuild" to recreate the vector index.');
|
|
213
|
+
break;
|
|
214
|
+
case EXIT_CODES.FILE_NOT_FOUND:
|
|
215
|
+
console.error('\nPlease check that the specified files or directories exist and are accessible.');
|
|
216
|
+
break;
|
|
217
|
+
case EXIT_CODES.PERMISSION_ERROR:
|
|
218
|
+
console.error('\nPlease check file and directory permissions.');
|
|
219
|
+
break;
|
|
220
|
+
default:
|
|
221
|
+
console.error('\nIf this problem persists, please report it as a bug.');
|
|
222
|
+
}
|
|
223
|
+
process.exit(exitCode);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Utility function for safe error logging with context
|
|
227
|
+
* @param error - Error to log
|
|
228
|
+
* @param context - Context where error occurred
|
|
229
|
+
* @param skipError - Whether to skip this error and continue (default: false)
|
|
230
|
+
*/
|
|
231
|
+
export function logError(error, context, skipError = false) {
|
|
232
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
233
|
+
if (skipError) {
|
|
234
|
+
console.error(`Warning in ${context}: ${errorMessage} (skipping and continuing)`);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.error(`Error in ${context}: ${errorMessage}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*/
|
|
1
5
|
import sqlite3 from 'sqlite3';
|
|
2
6
|
export interface DatabaseConnection {
|
|
3
7
|
db: sqlite3.Database;
|
|
@@ -6,15 +10,18 @@ export interface DatabaseConnection {
|
|
|
6
10
|
all: (sql: string, params?: any[]) => Promise<any[]>;
|
|
7
11
|
close: () => Promise<void>;
|
|
8
12
|
}
|
|
9
|
-
export interface
|
|
13
|
+
export interface ContentChunk {
|
|
10
14
|
id: number;
|
|
11
15
|
embedding_id: string;
|
|
12
16
|
document_id: number;
|
|
13
|
-
|
|
17
|
+
content: string;
|
|
18
|
+
content_type: string;
|
|
14
19
|
chunk_index: number;
|
|
20
|
+
metadata?: Record<string, any>;
|
|
15
21
|
created_at: string;
|
|
16
22
|
document_source: string;
|
|
17
23
|
document_title: string;
|
|
24
|
+
document_content_type: string;
|
|
18
25
|
}
|
|
19
26
|
/**
|
|
20
27
|
* Opens a SQLite database connection with promisified methods
|
|
@@ -24,41 +31,50 @@ export interface ChunkResult {
|
|
|
24
31
|
export declare function openDatabase(dbPath: string): Promise<DatabaseConnection>;
|
|
25
32
|
/**
|
|
26
33
|
* Initializes the database schema with all required tables and indexes
|
|
34
|
+
* Enhanced to support content types for multimodal use
|
|
27
35
|
* @param connection - Database connection object
|
|
28
36
|
*/
|
|
29
37
|
export declare function initializeSchema(connection: DatabaseConnection): Promise<void>;
|
|
30
38
|
/**
|
|
31
|
-
* Inserts a new document into the database
|
|
39
|
+
* Inserts a new document into the database with content type support
|
|
32
40
|
* @param connection - Database connection object
|
|
33
41
|
* @param source - Source path of the document
|
|
34
42
|
* @param title - Title of the document
|
|
43
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
44
|
+
* @param metadata - Optional metadata object
|
|
35
45
|
* @returns Promise that resolves to the document ID
|
|
36
46
|
*/
|
|
37
|
-
export declare function insertDocument(connection: DatabaseConnection, source: string, title: string): Promise<number>;
|
|
47
|
+
export declare function insertDocument(connection: DatabaseConnection, source: string, title: string, contentType?: string, metadata?: Record<string, any>): Promise<number>;
|
|
38
48
|
/**
|
|
39
|
-
* Inserts or updates a chunk in the database (upsert operation)
|
|
49
|
+
* Inserts or updates a chunk in the database with content type support (upsert operation)
|
|
40
50
|
* @param connection - Database connection object
|
|
41
51
|
* @param embeddingId - Unique embedding ID for the chunk
|
|
42
52
|
* @param documentId - ID of the parent document
|
|
43
|
-
* @param
|
|
53
|
+
* @param content - Content of the chunk (text, image path, etc.)
|
|
44
54
|
* @param chunkIndex - Index of the chunk within the document
|
|
55
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
56
|
+
* @param metadata - Optional metadata object
|
|
45
57
|
*/
|
|
46
|
-
export declare function insertChunk(connection: DatabaseConnection, embeddingId: string, documentId: number,
|
|
58
|
+
export declare function insertChunk(connection: DatabaseConnection, embeddingId: string, documentId: number, content: string, chunkIndex: number, contentType?: string, metadata?: Record<string, any>): Promise<void>;
|
|
47
59
|
/**
|
|
48
60
|
* Inserts a new document or returns existing document ID if it already exists
|
|
61
|
+
* Enhanced with content type support
|
|
49
62
|
* @param connection - Database connection object
|
|
50
63
|
* @param source - Source path of the document
|
|
51
64
|
* @param title - Title of the document
|
|
65
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
66
|
+
* @param metadata - Optional metadata object
|
|
52
67
|
* @returns Promise that resolves to the document ID
|
|
53
68
|
*/
|
|
54
|
-
export declare function upsertDocument(connection: DatabaseConnection, source: string, title: string): Promise<number>;
|
|
69
|
+
export declare function upsertDocument(connection: DatabaseConnection, source: string, title: string, contentType?: string, metadata?: Record<string, any>): Promise<number>;
|
|
55
70
|
/**
|
|
56
71
|
* Retrieves chunks by their embedding IDs with document metadata
|
|
72
|
+
* Enhanced to include content type information
|
|
57
73
|
* @param connection - Database connection object
|
|
58
74
|
* @param embeddingIds - Array of embedding IDs to retrieve
|
|
59
75
|
* @returns Promise that resolves to an array of chunk results with document metadata
|
|
60
76
|
*/
|
|
61
|
-
export declare function getChunksByEmbeddingIds(connection: DatabaseConnection, embeddingIds: string[]): Promise<
|
|
77
|
+
export declare function getChunksByEmbeddingIds(connection: DatabaseConnection, embeddingIds: string[]): Promise<ContentChunk[]>;
|
|
62
78
|
/**
|
|
63
79
|
* Gets the current model version from system_info table
|
|
64
80
|
* @param connection - Database connection object
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/core/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
|
+
*/
|
|
1
5
|
import sqlite3 from 'sqlite3';
|
|
2
6
|
import { promisify } from 'util';
|
|
3
7
|
import { handleError, ErrorSeverity, createError } from './error-handler.js';
|
|
@@ -87,27 +91,32 @@ function enhanceSQLiteError(error, sql) {
|
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
89
93
|
* Initializes the database schema with all required tables and indexes
|
|
94
|
+
* Enhanced to support content types for multimodal use
|
|
90
95
|
* @param connection - Database connection object
|
|
91
96
|
*/
|
|
92
97
|
export async function initializeSchema(connection) {
|
|
93
98
|
try {
|
|
94
|
-
// Create documents table
|
|
99
|
+
// Create documents table with content type support
|
|
95
100
|
await connection.run(`
|
|
96
101
|
CREATE TABLE IF NOT EXISTS documents (
|
|
97
102
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
98
103
|
source TEXT NOT NULL UNIQUE,
|
|
99
104
|
title TEXT NOT NULL,
|
|
105
|
+
content_type TEXT DEFAULT 'text',
|
|
106
|
+
metadata TEXT,
|
|
100
107
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
101
108
|
)
|
|
102
109
|
`);
|
|
103
|
-
// Create chunks table with
|
|
110
|
+
// Create chunks table with content type and metadata support
|
|
104
111
|
await connection.run(`
|
|
105
112
|
CREATE TABLE IF NOT EXISTS chunks (
|
|
106
113
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
107
114
|
embedding_id TEXT NOT NULL UNIQUE,
|
|
108
115
|
document_id INTEGER NOT NULL,
|
|
109
|
-
|
|
116
|
+
content TEXT NOT NULL,
|
|
117
|
+
content_type TEXT DEFAULT 'text',
|
|
110
118
|
chunk_index INTEGER NOT NULL,
|
|
119
|
+
metadata TEXT,
|
|
111
120
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
112
121
|
FOREIGN KEY (document_id) REFERENCES documents(id) ON DELETE CASCADE
|
|
113
122
|
)
|
|
@@ -122,7 +131,44 @@ export async function initializeSchema(connection) {
|
|
|
122
131
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
123
132
|
)
|
|
124
133
|
`);
|
|
125
|
-
// Add
|
|
134
|
+
// Add content_type and metadata columns if they don't exist
|
|
135
|
+
try {
|
|
136
|
+
await connection.run(`ALTER TABLE documents ADD COLUMN content_type TEXT DEFAULT 'text'`);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
// Column already exists, ignore error
|
|
140
|
+
if (error instanceof Error && !error.message.includes('duplicate column name')) {
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
await connection.run(`ALTER TABLE documents ADD COLUMN metadata TEXT`);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
// Column already exists, ignore error
|
|
149
|
+
if (error instanceof Error && !error.message.includes('duplicate column name')) {
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
await connection.run(`ALTER TABLE chunks ADD COLUMN content_type TEXT DEFAULT 'text'`);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// Column already exists, ignore error
|
|
158
|
+
if (error instanceof Error && !error.message.includes('duplicate column name')) {
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
await connection.run(`ALTER TABLE chunks ADD COLUMN metadata TEXT`);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
// Column already exists, ignore error
|
|
167
|
+
if (error instanceof Error && !error.message.includes('duplicate column name')) {
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Add model tracking columns if they don't exist
|
|
126
172
|
try {
|
|
127
173
|
await connection.run(`ALTER TABLE system_info ADD COLUMN model_name TEXT`);
|
|
128
174
|
}
|
|
@@ -150,6 +196,12 @@ export async function initializeSchema(connection) {
|
|
|
150
196
|
`);
|
|
151
197
|
await connection.run(`
|
|
152
198
|
CREATE INDEX IF NOT EXISTS idx_documents_source ON documents(source)
|
|
199
|
+
`);
|
|
200
|
+
await connection.run(`
|
|
201
|
+
CREATE INDEX IF NOT EXISTS idx_chunks_content_type ON chunks(content_type)
|
|
202
|
+
`);
|
|
203
|
+
await connection.run(`
|
|
204
|
+
CREATE INDEX IF NOT EXISTS idx_documents_content_type ON documents(content_type)
|
|
153
205
|
`);
|
|
154
206
|
console.log('Database schema initialized successfully');
|
|
155
207
|
}
|
|
@@ -158,15 +210,18 @@ export async function initializeSchema(connection) {
|
|
|
158
210
|
}
|
|
159
211
|
}
|
|
160
212
|
/**
|
|
161
|
-
* Inserts a new document into the database
|
|
213
|
+
* Inserts a new document into the database with content type support
|
|
162
214
|
* @param connection - Database connection object
|
|
163
215
|
* @param source - Source path of the document
|
|
164
216
|
* @param title - Title of the document
|
|
217
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
218
|
+
* @param metadata - Optional metadata object
|
|
165
219
|
* @returns Promise that resolves to the document ID
|
|
166
220
|
*/
|
|
167
|
-
export async function insertDocument(connection, source, title) {
|
|
221
|
+
export async function insertDocument(connection, source, title, contentType = 'text', metadata) {
|
|
168
222
|
try {
|
|
169
|
-
const
|
|
223
|
+
const metadataJson = metadata ? JSON.stringify(metadata) : null;
|
|
224
|
+
const result = await connection.run('INSERT INTO documents (source, title, content_type, metadata) VALUES (?, ?, ?, ?)', [source, title, contentType, metadataJson]);
|
|
170
225
|
if (typeof result.lastID !== 'number' || result.lastID <= 0) {
|
|
171
226
|
throw new Error('Failed to get document ID after insertion');
|
|
172
227
|
}
|
|
@@ -180,17 +235,20 @@ export async function insertDocument(connection, source, title) {
|
|
|
180
235
|
}
|
|
181
236
|
}
|
|
182
237
|
/**
|
|
183
|
-
* Inserts or updates a chunk in the database (upsert operation)
|
|
238
|
+
* Inserts or updates a chunk in the database with content type support (upsert operation)
|
|
184
239
|
* @param connection - Database connection object
|
|
185
240
|
* @param embeddingId - Unique embedding ID for the chunk
|
|
186
241
|
* @param documentId - ID of the parent document
|
|
187
|
-
* @param
|
|
242
|
+
* @param content - Content of the chunk (text, image path, etc.)
|
|
188
243
|
* @param chunkIndex - Index of the chunk within the document
|
|
244
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
245
|
+
* @param metadata - Optional metadata object
|
|
189
246
|
*/
|
|
190
|
-
export async function insertChunk(connection, embeddingId, documentId, text,
|
|
247
|
+
export async function insertChunk(connection, embeddingId, documentId, content, chunkIndex, contentType = 'text', metadata) {
|
|
191
248
|
try {
|
|
249
|
+
const metadataJson = metadata ? JSON.stringify(metadata) : null;
|
|
192
250
|
// Use INSERT OR REPLACE to handle duplicates gracefully
|
|
193
|
-
await connection.run('INSERT OR REPLACE INTO chunks (embedding_id, document_id,
|
|
251
|
+
await connection.run('INSERT OR REPLACE INTO chunks (embedding_id, document_id, content, chunk_index, content_type, metadata) VALUES (?, ?, ?, ?, ?, ?)', [embeddingId, documentId, content, chunkIndex, contentType, metadataJson]);
|
|
194
252
|
}
|
|
195
253
|
catch (error) {
|
|
196
254
|
if (error instanceof Error && error.message.includes('FOREIGN KEY constraint failed')) {
|
|
@@ -201,12 +259,15 @@ export async function insertChunk(connection, embeddingId, documentId, text, chu
|
|
|
201
259
|
}
|
|
202
260
|
/**
|
|
203
261
|
* Inserts a new document or returns existing document ID if it already exists
|
|
262
|
+
* Enhanced with content type support
|
|
204
263
|
* @param connection - Database connection object
|
|
205
264
|
* @param source - Source path of the document
|
|
206
265
|
* @param title - Title of the document
|
|
266
|
+
* @param contentType - Type of content ('text', 'image', etc.)
|
|
267
|
+
* @param metadata - Optional metadata object
|
|
207
268
|
* @returns Promise that resolves to the document ID
|
|
208
269
|
*/
|
|
209
|
-
export async function upsertDocument(connection, source, title) {
|
|
270
|
+
export async function upsertDocument(connection, source, title, contentType = 'text', metadata) {
|
|
210
271
|
try {
|
|
211
272
|
// First try to get existing document
|
|
212
273
|
const existing = await connection.get('SELECT id FROM documents WHERE source = ?', [source]);
|
|
@@ -214,7 +275,8 @@ export async function upsertDocument(connection, source, title) {
|
|
|
214
275
|
return existing.id;
|
|
215
276
|
}
|
|
216
277
|
// Insert new document if it doesn't exist
|
|
217
|
-
const
|
|
278
|
+
const metadataJson = metadata ? JSON.stringify(metadata) : null;
|
|
279
|
+
const result = await connection.run('INSERT INTO documents (source, title, content_type, metadata) VALUES (?, ?, ?, ?)', [source, title, contentType, metadataJson]);
|
|
218
280
|
if (typeof result.lastID !== 'number' || result.lastID <= 0) {
|
|
219
281
|
throw new Error('Failed to get document ID after insertion');
|
|
220
282
|
}
|
|
@@ -226,6 +288,7 @@ export async function upsertDocument(connection, source, title) {
|
|
|
226
288
|
}
|
|
227
289
|
/**
|
|
228
290
|
* Retrieves chunks by their embedding IDs with document metadata
|
|
291
|
+
* Enhanced to include content type information
|
|
229
292
|
* @param connection - Database connection object
|
|
230
293
|
* @param embeddingIds - Array of embedding IDs to retrieve
|
|
231
294
|
* @returns Promise that resolves to an array of chunk results with document metadata
|
|
@@ -241,18 +304,25 @@ export async function getChunksByEmbeddingIds(connection, embeddingIds) {
|
|
|
241
304
|
c.id,
|
|
242
305
|
c.embedding_id,
|
|
243
306
|
c.document_id,
|
|
244
|
-
c.
|
|
307
|
+
c.content,
|
|
308
|
+
c.content_type,
|
|
245
309
|
c.chunk_index,
|
|
310
|
+
c.metadata,
|
|
246
311
|
c.created_at,
|
|
247
312
|
d.source as document_source,
|
|
248
|
-
d.title as document_title
|
|
313
|
+
d.title as document_title,
|
|
314
|
+
d.content_type as document_content_type
|
|
249
315
|
FROM chunks c
|
|
250
316
|
JOIN documents d ON c.document_id = d.id
|
|
251
317
|
WHERE c.embedding_id IN (${placeholders})
|
|
252
318
|
ORDER BY c.chunk_index
|
|
253
319
|
`;
|
|
254
320
|
const results = await connection.all(sql, embeddingIds);
|
|
255
|
-
|
|
321
|
+
// Parse metadata JSON strings back to objects
|
|
322
|
+
return results.map((row) => ({
|
|
323
|
+
...row,
|
|
324
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : undefined
|
|
325
|
+
}));
|
|
256
326
|
}
|
|
257
327
|
catch (error) {
|
|
258
328
|
throw new Error(`Failed to retrieve chunks: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/core/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* CORE MODULE — Shared between text-only (rag-lite-ts) and future multimodal (rag-lite-mm)
|
|
3
|
+
* Model-agnostic. No transformer or modality-specific logic.
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Error categories for different types of failures
|
|
@@ -25,6 +25,14 @@ export declare enum ErrorSeverity {
|
|
|
25
25
|
WARNING = "WARNING",// Potential issue but operation can continue
|
|
26
26
|
INFO = "INFO"
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Interface for providing implementation-specific error context
|
|
30
|
+
* Allows dependency injection of model-specific error messages and suggestions
|
|
31
|
+
*/
|
|
32
|
+
export interface ErrorContext {
|
|
33
|
+
getErrorMessage(error: Error, context: string): string;
|
|
34
|
+
getSuggestions(error: Error, context: string): string[];
|
|
35
|
+
}
|
|
28
36
|
/**
|
|
29
37
|
* Enhanced error class with category and severity
|
|
30
38
|
*/
|
|
@@ -35,8 +43,19 @@ export declare class CategorizedError extends Error {
|
|
|
35
43
|
originalError?: Error | undefined;
|
|
36
44
|
constructor(message: string, category: ErrorCategory, severity?: ErrorSeverity, exitCode?: number, originalError?: Error | undefined);
|
|
37
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Set the global error context for dependency injection
|
|
48
|
+
* @param errorContext - Implementation-specific error context
|
|
49
|
+
*/
|
|
50
|
+
export declare function setErrorContext(errorContext: ErrorContext): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get the current error context
|
|
53
|
+
* @returns Current error context
|
|
54
|
+
*/
|
|
55
|
+
export declare function getErrorContext(): ErrorContext;
|
|
38
56
|
/**
|
|
39
57
|
* Handle errors with appropriate logging and exit behavior
|
|
58
|
+
* Supports dependency injection of implementation-specific error contexts
|
|
40
59
|
* @param error - Error to handle
|
|
41
60
|
* @param context - Context where error occurred
|
|
42
61
|
* @param options - Handling options
|
|
@@ -47,6 +66,7 @@ export declare function handleError(error: Error | string, context: string, opti
|
|
|
47
66
|
exitCode?: number;
|
|
48
67
|
skipError?: boolean;
|
|
49
68
|
showStack?: boolean;
|
|
69
|
+
errorContext?: ErrorContext;
|
|
50
70
|
}): void;
|
|
51
71
|
/**
|
|
52
72
|
* Wrapper for try-catch blocks with consistent error handling
|
|
@@ -60,6 +80,7 @@ export declare function safeExecute<T>(operation: () => Promise<T> | T, context:
|
|
|
60
80
|
exitCode?: number;
|
|
61
81
|
skipError?: boolean;
|
|
62
82
|
fallbackValue?: T;
|
|
83
|
+
errorContext?: ErrorContext;
|
|
63
84
|
}): Promise<T | undefined>;
|
|
64
85
|
/**
|
|
65
86
|
* Validate that a condition is true, throw categorized error if not
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/core/error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,oBAAY,aAAa;IACvB,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,KAAK,UAAU,CAAO,+BAA+B;IACrD,KAAK,UAAU,CAAO,2CAA2C;IACjE,OAAO,YAAY,CAAG,6CAA6C;IACnE,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACvD,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IAGhC,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,MAAM;IAChB,aAAa,CAAC,EAAE,KAAK;gBAJ5B,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,aAAa,EACvB,QAAQ,GAAE,aAAmC,EAC7C,QAAQ,GAAE,MAAiC,EAC3C,aAAa,CAAC,EAAE,KAAK,YAAA;CAK/B;AAsBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAEhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CACxB,GACL,IAAI,CAwCN;AA6ED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CACxB,GACL,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAqBxB;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,aAAwC,EAClD,QAAQ,GAAE,MAAiC,GAC1C,OAAO,CAAC,SAAS,CAInB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAUnF;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;6BACG,MAAM;wBAGX,MAAM;qBAGT,MAAM;qBAGN,MAAM;0BAGD,MAAM;yBAGP,MAAM;0BAGL,MAAM;CAE7B,CAAC"}
|