rag-lite-ts 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +651 -109
  2. package/dist/cli/indexer.js +262 -46
  3. package/dist/cli/search.js +54 -32
  4. package/dist/cli.js +185 -28
  5. package/dist/config.d.ts +34 -73
  6. package/dist/config.js +50 -255
  7. package/dist/core/abstract-embedder.d.ts +125 -0
  8. package/dist/core/abstract-embedder.js +264 -0
  9. package/dist/core/actionable-error-messages.d.ts +60 -0
  10. package/dist/core/actionable-error-messages.js +397 -0
  11. package/dist/core/adapters.d.ts +93 -0
  12. package/dist/core/adapters.js +139 -0
  13. package/dist/core/batch-processing-optimizer.d.ts +155 -0
  14. package/dist/core/batch-processing-optimizer.js +541 -0
  15. package/dist/core/chunker.d.ts +119 -0
  16. package/dist/core/chunker.js +73 -0
  17. package/dist/core/cli-database-utils.d.ts +53 -0
  18. package/dist/core/cli-database-utils.js +239 -0
  19. package/dist/core/config.d.ts +102 -0
  20. package/dist/core/config.js +247 -0
  21. package/dist/core/content-errors.d.ts +111 -0
  22. package/dist/core/content-errors.js +362 -0
  23. package/dist/core/content-manager.d.ts +343 -0
  24. package/dist/core/content-manager.js +1504 -0
  25. package/dist/core/content-performance-optimizer.d.ts +150 -0
  26. package/dist/core/content-performance-optimizer.js +516 -0
  27. package/dist/core/content-resolver.d.ts +104 -0
  28. package/dist/core/content-resolver.js +285 -0
  29. package/dist/core/cross-modal-search.d.ts +164 -0
  30. package/dist/core/cross-modal-search.js +342 -0
  31. package/dist/core/database-connection-manager.d.ts +109 -0
  32. package/dist/core/database-connection-manager.js +304 -0
  33. package/dist/core/db.d.ts +245 -0
  34. package/dist/core/db.js +952 -0
  35. package/dist/core/embedder-factory.d.ts +176 -0
  36. package/dist/core/embedder-factory.js +338 -0
  37. package/dist/{error-handler.d.ts → core/error-handler.d.ts} +23 -2
  38. package/dist/{error-handler.js → core/error-handler.js} +51 -8
  39. package/dist/core/index.d.ts +59 -0
  40. package/dist/core/index.js +69 -0
  41. package/dist/core/ingestion.d.ts +213 -0
  42. package/dist/core/ingestion.js +812 -0
  43. package/dist/core/interfaces.d.ts +408 -0
  44. package/dist/core/interfaces.js +106 -0
  45. package/dist/core/lazy-dependency-loader.d.ts +152 -0
  46. package/dist/core/lazy-dependency-loader.js +453 -0
  47. package/dist/core/mode-detection-service.d.ts +150 -0
  48. package/dist/core/mode-detection-service.js +565 -0
  49. package/dist/core/mode-model-validator.d.ts +92 -0
  50. package/dist/core/mode-model-validator.js +203 -0
  51. package/dist/core/model-registry.d.ts +120 -0
  52. package/dist/core/model-registry.js +415 -0
  53. package/dist/core/model-validator.d.ts +217 -0
  54. package/dist/core/model-validator.js +782 -0
  55. package/dist/{path-manager.d.ts → core/path-manager.d.ts} +5 -0
  56. package/dist/{path-manager.js → core/path-manager.js} +5 -0
  57. package/dist/core/polymorphic-search-factory.d.ts +154 -0
  58. package/dist/core/polymorphic-search-factory.js +344 -0
  59. package/dist/core/raglite-paths.d.ts +121 -0
  60. package/dist/core/raglite-paths.js +145 -0
  61. package/dist/core/reranking-config.d.ts +42 -0
  62. package/dist/core/reranking-config.js +156 -0
  63. package/dist/core/reranking-factory.d.ts +92 -0
  64. package/dist/core/reranking-factory.js +591 -0
  65. package/dist/core/reranking-strategies.d.ts +325 -0
  66. package/dist/core/reranking-strategies.js +720 -0
  67. package/dist/core/resource-cleanup.d.ts +163 -0
  68. package/dist/core/resource-cleanup.js +371 -0
  69. package/dist/core/resource-manager.d.ts +212 -0
  70. package/dist/core/resource-manager.js +564 -0
  71. package/dist/core/search-pipeline.d.ts +111 -0
  72. package/dist/core/search-pipeline.js +287 -0
  73. package/dist/core/search.d.ts +131 -0
  74. package/dist/core/search.js +296 -0
  75. package/dist/core/streaming-operations.d.ts +145 -0
  76. package/dist/core/streaming-operations.js +409 -0
  77. package/dist/core/types.d.ts +66 -0
  78. package/dist/core/types.js +6 -0
  79. package/dist/core/universal-embedder.d.ts +177 -0
  80. package/dist/core/universal-embedder.js +139 -0
  81. package/dist/core/validation-messages.d.ts +99 -0
  82. package/dist/core/validation-messages.js +334 -0
  83. package/dist/{vector-index.d.ts → core/vector-index.d.ts} +4 -0
  84. package/dist/{vector-index.js → core/vector-index.js} +21 -3
  85. package/dist/dom-polyfills.d.ts +6 -0
  86. package/dist/dom-polyfills.js +40 -0
  87. package/dist/factories/index.d.ts +43 -0
  88. package/dist/factories/index.js +44 -0
  89. package/dist/factories/text-factory.d.ts +560 -0
  90. package/dist/factories/text-factory.js +968 -0
  91. package/dist/file-processor.d.ts +90 -4
  92. package/dist/file-processor.js +723 -20
  93. package/dist/index-manager.d.ts +3 -2
  94. package/dist/index-manager.js +13 -11
  95. package/dist/index.d.ts +72 -8
  96. package/dist/index.js +102 -16
  97. package/dist/indexer.js +1 -1
  98. package/dist/ingestion.d.ts +44 -154
  99. package/dist/ingestion.js +75 -671
  100. package/dist/mcp-server.d.ts +35 -3
  101. package/dist/mcp-server.js +1186 -79
  102. package/dist/multimodal/clip-embedder.d.ts +314 -0
  103. package/dist/multimodal/clip-embedder.js +945 -0
  104. package/dist/multimodal/index.d.ts +6 -0
  105. package/dist/multimodal/index.js +6 -0
  106. package/dist/preprocess.js +1 -1
  107. package/dist/run-error-recovery-tests.d.ts +7 -0
  108. package/dist/run-error-recovery-tests.js +101 -0
  109. package/dist/search-standalone.js +1 -1
  110. package/dist/search.d.ts +51 -69
  111. package/dist/search.js +117 -412
  112. package/dist/test-utils.d.ts +8 -26
  113. package/dist/text/chunker.d.ts +33 -0
  114. package/dist/{chunker.js → text/chunker.js} +98 -75
  115. package/dist/{embedder.d.ts → text/embedder.d.ts} +22 -1
  116. package/dist/{embedder.js → text/embedder.js} +84 -10
  117. package/dist/text/index.d.ts +8 -0
  118. package/dist/text/index.js +9 -0
  119. package/dist/text/preprocessors/index.d.ts +17 -0
  120. package/dist/text/preprocessors/index.js +38 -0
  121. package/dist/text/preprocessors/mdx.d.ts +25 -0
  122. package/dist/text/preprocessors/mdx.js +101 -0
  123. package/dist/text/preprocessors/mermaid.d.ts +68 -0
  124. package/dist/text/preprocessors/mermaid.js +330 -0
  125. package/dist/text/preprocessors/registry.d.ts +56 -0
  126. package/dist/text/preprocessors/registry.js +180 -0
  127. package/dist/text/reranker.d.ts +59 -0
  128. package/dist/{reranker.js → text/reranker.js} +138 -53
  129. package/dist/text/sentence-transformer-embedder.d.ts +96 -0
  130. package/dist/text/sentence-transformer-embedder.js +340 -0
  131. package/dist/{tokenizer.d.ts → text/tokenizer.d.ts} +1 -0
  132. package/dist/{tokenizer.js → text/tokenizer.js} +7 -2
  133. package/dist/types.d.ts +40 -1
  134. package/dist/utils/vector-math.d.ts +31 -0
  135. package/dist/utils/vector-math.js +70 -0
  136. package/package.json +16 -4
  137. package/dist/api-errors.d.ts.map +0 -1
  138. package/dist/api-errors.js.map +0 -1
  139. package/dist/chunker.d.ts +0 -47
  140. package/dist/chunker.d.ts.map +0 -1
  141. package/dist/chunker.js.map +0 -1
  142. package/dist/cli/indexer.d.ts.map +0 -1
  143. package/dist/cli/indexer.js.map +0 -1
  144. package/dist/cli/search.d.ts.map +0 -1
  145. package/dist/cli/search.js.map +0 -1
  146. package/dist/cli.d.ts.map +0 -1
  147. package/dist/cli.js.map +0 -1
  148. package/dist/config.d.ts.map +0 -1
  149. package/dist/config.js.map +0 -1
  150. package/dist/db.d.ts +0 -90
  151. package/dist/db.d.ts.map +0 -1
  152. package/dist/db.js +0 -340
  153. package/dist/db.js.map +0 -1
  154. package/dist/embedder.d.ts.map +0 -1
  155. package/dist/embedder.js.map +0 -1
  156. package/dist/error-handler.d.ts.map +0 -1
  157. package/dist/error-handler.js.map +0 -1
  158. package/dist/file-processor.d.ts.map +0 -1
  159. package/dist/file-processor.js.map +0 -1
  160. package/dist/index-manager.d.ts.map +0 -1
  161. package/dist/index-manager.js.map +0 -1
  162. package/dist/index.d.ts.map +0 -1
  163. package/dist/index.js.map +0 -1
  164. package/dist/indexer.d.ts.map +0 -1
  165. package/dist/indexer.js.map +0 -1
  166. package/dist/ingestion.d.ts.map +0 -1
  167. package/dist/ingestion.js.map +0 -1
  168. package/dist/mcp-server.d.ts.map +0 -1
  169. package/dist/mcp-server.js.map +0 -1
  170. package/dist/path-manager.d.ts.map +0 -1
  171. package/dist/path-manager.js.map +0 -1
  172. package/dist/preprocess.d.ts.map +0 -1
  173. package/dist/preprocess.js.map +0 -1
  174. package/dist/preprocessors/index.d.ts.map +0 -1
  175. package/dist/preprocessors/index.js.map +0 -1
  176. package/dist/preprocessors/mdx.d.ts.map +0 -1
  177. package/dist/preprocessors/mdx.js.map +0 -1
  178. package/dist/preprocessors/mermaid.d.ts.map +0 -1
  179. package/dist/preprocessors/mermaid.js.map +0 -1
  180. package/dist/preprocessors/registry.d.ts.map +0 -1
  181. package/dist/preprocessors/registry.js.map +0 -1
  182. package/dist/reranker.d.ts +0 -40
  183. package/dist/reranker.d.ts.map +0 -1
  184. package/dist/reranker.js.map +0 -1
  185. package/dist/resource-manager-demo.d.ts +0 -7
  186. package/dist/resource-manager-demo.d.ts.map +0 -1
  187. package/dist/resource-manager-demo.js +0 -52
  188. package/dist/resource-manager-demo.js.map +0 -1
  189. package/dist/resource-manager.d.ts +0 -129
  190. package/dist/resource-manager.d.ts.map +0 -1
  191. package/dist/resource-manager.js +0 -389
  192. package/dist/resource-manager.js.map +0 -1
  193. package/dist/search-standalone.d.ts.map +0 -1
  194. package/dist/search-standalone.js.map +0 -1
  195. package/dist/search.d.ts.map +0 -1
  196. package/dist/search.js.map +0 -1
  197. package/dist/test-utils.d.ts.map +0 -1
  198. package/dist/test-utils.js.map +0 -1
  199. package/dist/tokenizer.d.ts.map +0 -1
  200. package/dist/tokenizer.js.map +0 -1
  201. package/dist/types.d.ts.map +0 -1
  202. package/dist/types.js.map +0 -1
  203. package/dist/vector-index.d.ts.map +0 -1
  204. package/dist/vector-index.js.map +0 -1
@@ -0,0 +1,264 @@
1
+ /**
2
+ * CORE MODULE — Abstract Base Embedder
3
+ *
4
+ * Provides model-agnostic base functionality for all embedder implementations.
5
+ * This is an abstract base class, not a concrete implementation.
6
+ *
7
+ * ARCHITECTURAL NOTE:
8
+ * While this contains implementation logic, it remains in the core layer because:
9
+ * 1. It's model-agnostic (no knowledge of specific models or transformers.js)
10
+ * 2. It's shared by multiple implementation layers (text, multimodal)
11
+ * 3. It provides common infrastructure (lifecycle, validation, batch processing)
12
+ * 4. Moving it would create awkward cross-layer dependencies
13
+ *
14
+ * This follows the "shared base class" pattern common in framework design,
15
+ * similar to React.Component, Django Model, or other framework base classes.
16
+ *
17
+ * RESPONSIBILITIES:
18
+ * - Model lifecycle management (loading, cleanup, disposal)
19
+ * - Batch processing coordination
20
+ * - Input validation and text truncation
21
+ * - Error handling with helpful messages
22
+ * - Embedding ID generation
23
+ * - Common utility methods
24
+ *
25
+ * IMPLEMENTATION LAYERS:
26
+ * - Text: SentenceTransformerEmbedder extends this class
27
+ * - Multimodal: CLIPEmbedder extends this class
28
+ */
29
+ import { ModelRegistry } from './model-registry.js';
30
+ import { validateContentType, createEnhancedEmbeddingResult } from './universal-embedder.js';
31
+ // =============================================================================
32
+ // BASE EMBEDDER ABSTRACT CLASS
33
+ // =============================================================================
34
+ /**
35
+ * Abstract base class for universal embedders
36
+ * Provides common functionality and lifecycle management
37
+ */
38
+ export class BaseUniversalEmbedder {
39
+ modelName;
40
+ options;
41
+ _isLoaded = false;
42
+ _modelInfo;
43
+ constructor(modelName, options = {}) {
44
+ this.modelName = modelName;
45
+ this.options = options;
46
+ const modelInfo = ModelRegistry.getModelInfo(modelName);
47
+ if (!modelInfo) {
48
+ throw new Error(`Model '${modelName}' is not supported. ` +
49
+ `Supported models: ${ModelRegistry.getSupportedModels().join(', ')}`);
50
+ }
51
+ this._modelInfo = modelInfo;
52
+ }
53
+ // =============================================================================
54
+ // PUBLIC INTERFACE IMPLEMENTATION
55
+ // =============================================================================
56
+ get modelType() {
57
+ return this._modelInfo.type;
58
+ }
59
+ get dimensions() {
60
+ return this._modelInfo.dimensions;
61
+ }
62
+ get supportedContentTypes() {
63
+ return this._modelInfo.supportedContentTypes;
64
+ }
65
+ isLoaded() {
66
+ return this._isLoaded;
67
+ }
68
+ getModelInfo() {
69
+ return { ...this._modelInfo }; // Return a copy to prevent mutation
70
+ }
71
+ /**
72
+ * Dispose of all resources and prepare for garbage collection
73
+ * This method should be called when the embedder is no longer needed
74
+ */
75
+ async dispose() {
76
+ try {
77
+ // Call the specific cleanup implementation
78
+ await this.cleanup();
79
+ // Clear internal state
80
+ this._isLoaded = false;
81
+ // Force garbage collection if available
82
+ if (global.gc) {
83
+ global.gc();
84
+ }
85
+ this.logModelLoading('Resources disposed and garbage collection triggered');
86
+ }
87
+ catch (error) {
88
+ console.warn(`Error during resource disposal: ${error instanceof Error ? error.message : 'Unknown error'}`);
89
+ }
90
+ }
91
+ // =============================================================================
92
+ // DEFAULT IMPLEMENTATIONS
93
+ // =============================================================================
94
+ /**
95
+ * Batch embedding with default implementation
96
+ * Subclasses can override for more efficient batch processing
97
+ */
98
+ async embedBatch(items) {
99
+ if (!this._isLoaded) {
100
+ await this.loadModel();
101
+ }
102
+ const results = [];
103
+ const batchSize = this.options.maxBatchSize || this._modelInfo.capabilities.maxBatchSize || 8;
104
+ // Process in batches to avoid memory issues
105
+ for (let i = 0; i < items.length; i += batchSize) {
106
+ const batch = items.slice(i, i + batchSize);
107
+ const batchResults = await this.processBatch(batch);
108
+ results.push(...batchResults);
109
+ }
110
+ return results;
111
+ }
112
+ // =============================================================================
113
+ // PROTECTED HELPER METHODS
114
+ // =============================================================================
115
+ /**
116
+ * Process a single batch of items
117
+ * Can be overridden by subclasses for more efficient batch processing
118
+ */
119
+ async processBatch(batch) {
120
+ const results = [];
121
+ for (const item of batch) {
122
+ try {
123
+ validateContentType(item.contentType, this.supportedContentTypes);
124
+ let result;
125
+ if (item.contentType === 'text') {
126
+ result = await this.embedText(item.content);
127
+ }
128
+ else if (item.contentType === 'image' && this.embedImage) {
129
+ result = await this.embedImage(item.content);
130
+ }
131
+ else {
132
+ throw new Error(`Content type '${item.contentType}' not supported by model '${this.modelName}'`);
133
+ }
134
+ // Enhance the result with content type and metadata
135
+ const enhancedResult = createEnhancedEmbeddingResult(result.embedding_id, result.vector, item.contentType, item.metadata);
136
+ results.push(enhancedResult);
137
+ }
138
+ catch (error) {
139
+ // Log error but continue processing other items
140
+ console.warn(`Failed to embed item: ${error instanceof Error ? error.message : 'Unknown error'}`);
141
+ // Create a placeholder result with zero vector for failed items
142
+ const zeroVector = new Float32Array(this.dimensions).fill(0);
143
+ const failedResult = createEnhancedEmbeddingResult(`failed_${Date.now()}_${Math.random()}`, zeroVector, item.contentType, { ...item.metadata, error: error instanceof Error ? error.message : 'Unknown error' });
144
+ results.push(failedResult);
145
+ }
146
+ }
147
+ return results;
148
+ }
149
+ /**
150
+ * Validate that the model is loaded before operations
151
+ */
152
+ ensureLoaded() {
153
+ if (!this._isLoaded) {
154
+ throw new Error(`Model '${this.modelName}' is not loaded. Call loadModel() first.`);
155
+ }
156
+ }
157
+ /**
158
+ * Generate a unique embedding ID
159
+ */
160
+ generateEmbeddingId(content, contentType = 'text') {
161
+ const timestamp = Date.now();
162
+ const random = Math.random().toString(36).substring(2);
163
+ const contentHash = this.simpleHash(content);
164
+ return `${contentType}_${contentHash}_${timestamp}_${random}`;
165
+ }
166
+ /**
167
+ * Simple hash function for content identification
168
+ */
169
+ simpleHash(str) {
170
+ let hash = 0;
171
+ for (let i = 0; i < str.length; i++) {
172
+ const char = str.charCodeAt(i);
173
+ hash = ((hash << 5) - hash) + char;
174
+ hash = hash & hash; // Convert to 32-bit integer
175
+ }
176
+ return Math.abs(hash).toString(36);
177
+ }
178
+ /**
179
+ * Validate text length against model constraints
180
+ */
181
+ validateTextLength(text) {
182
+ const maxLength = this._modelInfo.capabilities.maxTextLength;
183
+ if (maxLength && text.length > maxLength) {
184
+ console.warn(`Text length (${text.length}) exceeds model maximum (${maxLength}). ` +
185
+ `Text will be truncated.`);
186
+ }
187
+ }
188
+ /**
189
+ * Truncate text to model's maximum length
190
+ */
191
+ truncateText(text) {
192
+ const maxLength = this._modelInfo.capabilities.maxTextLength;
193
+ if (maxLength && text.length > maxLength) {
194
+ return text.substring(0, maxLength);
195
+ }
196
+ return text;
197
+ }
198
+ /**
199
+ * Log model loading progress
200
+ */
201
+ logModelLoading(stage, details) {
202
+ const message = `[${this.modelName}] ${stage}`;
203
+ if (details) {
204
+ console.log(`${message}: ${details}`);
205
+ }
206
+ else {
207
+ console.log(message);
208
+ }
209
+ }
210
+ /**
211
+ * Handle model loading errors with helpful messages
212
+ */
213
+ handleLoadingError(error) {
214
+ const baseMessage = `Failed to load model '${this.modelName}': ${error.message}`;
215
+ // Provide specific guidance based on error type
216
+ if (error.message.includes('network') || error.message.includes('fetch')) {
217
+ return new Error(`${baseMessage}\n` +
218
+ `This appears to be a network error. Please check your internet connection ` +
219
+ `and ensure the model repository is accessible.`);
220
+ }
221
+ if (error.message.includes('memory') || error.message.includes('OOM')) {
222
+ return new Error(`${baseMessage}\n` +
223
+ `This appears to be a memory error. Try using a smaller model or ` +
224
+ `increase available memory. Required: ${this._modelInfo.requirements.minimumMemory}MB`);
225
+ }
226
+ if (error.message.includes('unsupported') || error.message.includes('not found')) {
227
+ const suggestions = ModelRegistry.getSupportedModels(this.modelType);
228
+ return new Error(`${baseMessage}\n` +
229
+ `Model may not be available. Supported ${this.modelType} models: ${suggestions.join(', ')}`);
230
+ }
231
+ return new Error(baseMessage);
232
+ }
233
+ }
234
+ // =============================================================================
235
+ // UTILITY FUNCTIONS
236
+ // =============================================================================
237
+ /**
238
+ * Create embedder options with defaults
239
+ */
240
+ export function createEmbedderOptions(options = {}) {
241
+ return {
242
+ maxBatchSize: 8,
243
+ timeout: 30000, // 30 seconds
244
+ enableGPU: false,
245
+ logLevel: 'info',
246
+ ...options
247
+ };
248
+ }
249
+ /**
250
+ * Validate embedder options
251
+ */
252
+ export function validateEmbedderOptions(options) {
253
+ if (options.maxBatchSize && (options.maxBatchSize < 1 || options.maxBatchSize > 128)) {
254
+ throw new Error('maxBatchSize must be between 1 and 128');
255
+ }
256
+ if (options.timeout && options.timeout < 1000) {
257
+ throw new Error('timeout must be at least 1000ms');
258
+ }
259
+ const validLogLevels = ['debug', 'info', 'warn', 'error', 'silent'];
260
+ if (options.logLevel && !validLogLevels.includes(options.logLevel)) {
261
+ throw new Error(`logLevel must be one of: ${validLogLevels.join(', ')}`);
262
+ }
263
+ }
264
+ //# sourceMappingURL=abstract-embedder.js.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * CORE MODULE — Actionable Error Messages
3
+ * Provides user-friendly, actionable error messages with specific guidance
4
+ * Replaces technical error messages with helpful troubleshooting steps
5
+ */
6
+ /**
7
+ * Configuration for actionable error messages
8
+ */
9
+ export interface ActionableErrorConfig {
10
+ /** Include examples in error messages */
11
+ includeExamples?: boolean;
12
+ /** Include troubleshooting steps */
13
+ includeTroubleshooting?: boolean;
14
+ /** Context about the current operation */
15
+ operationContext?: string;
16
+ }
17
+ /**
18
+ * Create actionable error message for missing files
19
+ */
20
+ export declare function createMissingFileError(filePath: string, fileType: 'index' | 'database' | 'config' | 'content', config?: ActionableErrorConfig): Error;
21
+ /**
22
+ * Create actionable error message for invalid paths
23
+ */
24
+ export declare function createInvalidPathError(paths: {
25
+ name: string;
26
+ value: string | undefined;
27
+ }[], config?: ActionableErrorConfig): Error;
28
+ /**
29
+ * Create actionable error message for model loading failures
30
+ */
31
+ export declare function createModelLoadingError(modelName: string, originalError: string, config?: ActionableErrorConfig): Error;
32
+ /**
33
+ * Create actionable error message for dimension mismatches
34
+ */
35
+ export declare function createDimensionMismatchError(expected: number, actual: number, context: string, config?: ActionableErrorConfig): Error;
36
+ /**
37
+ * Create actionable error message for mode mismatches
38
+ */
39
+ export declare function createModeMismatchError(expectedMode: string, actualMode: string, config?: ActionableErrorConfig): Error;
40
+ /**
41
+ * Create actionable error message for empty or invalid content
42
+ */
43
+ export declare function createInvalidContentError(contentType: string, issue: 'empty' | 'invalid_format' | 'too_large' | 'unsupported', config?: ActionableErrorConfig): Error;
44
+ /**
45
+ * Create actionable error message for missing dependencies
46
+ */
47
+ export declare function createMissingDependencyError(dependencyName: string, dependencyType: 'function' | 'object' | 'service', config?: ActionableErrorConfig): Error;
48
+ /**
49
+ * Create actionable error message for factory creation failures
50
+ */
51
+ export declare function createFactoryCreationError(factoryName: string, originalError: string, config?: ActionableErrorConfig): Error;
52
+ /**
53
+ * Enhance an existing error with actionable information
54
+ */
55
+ export declare function enhanceError(originalError: Error, context: string, suggestions?: string[], config?: ActionableErrorConfig): Error;
56
+ /**
57
+ * Create a user-friendly error message with context
58
+ */
59
+ export declare function createContextualError(message: string, context: string, suggestions?: string[], examples?: string[], config?: ActionableErrorConfig): Error;
60
+ //# sourceMappingURL=actionable-error-messages.d.ts.map