@danielsimonjr/memory-mcp 11.0.1 → 11.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -22
- package/dist/core/EntityManager.d.ts +10 -15
- package/dist/core/EntityManager.d.ts.map +1 -1
- package/dist/core/EntityManager.js +21 -54
- package/dist/core/GraphStorage.d.ts +0 -51
- package/dist/core/GraphStorage.d.ts.map +1 -1
- package/dist/core/GraphStorage.js +2 -79
- package/dist/core/GraphTraversal.d.ts +2 -7
- package/dist/core/GraphTraversal.d.ts.map +1 -1
- package/dist/core/GraphTraversal.js +2 -19
- package/dist/core/ManagerContext.d.ts +0 -4
- package/dist/core/ManagerContext.d.ts.map +1 -1
- package/dist/core/ManagerContext.js +2 -12
- package/dist/core/RelationManager.d.ts.map +1 -1
- package/dist/core/RelationManager.js +4 -5
- package/dist/core/SQLiteStorage.d.ts.map +1 -1
- package/dist/core/SQLiteStorage.js +2 -3
- package/dist/core/TransactionManager.d.ts +2 -207
- package/dist/core/TransactionManager.d.ts.map +1 -1
- package/dist/core/TransactionManager.js +6 -482
- package/dist/core/index.d.ts +1 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -3
- package/dist/features/ArchiveManager.d.ts +2 -14
- package/dist/features/ArchiveManager.d.ts.map +1 -1
- package/dist/features/ArchiveManager.js +3 -44
- package/dist/features/CompressionManager.d.ts +4 -14
- package/dist/features/CompressionManager.d.ts.map +1 -1
- package/dist/features/CompressionManager.js +9 -74
- package/dist/features/IOManager.d.ts +2 -6
- package/dist/features/IOManager.d.ts.map +1 -1
- package/dist/features/IOManager.js +10 -105
- package/dist/features/StreamingExporter.d.ts +4 -27
- package/dist/features/StreamingExporter.d.ts.map +1 -1
- package/dist/features/StreamingExporter.js +4 -65
- package/dist/features/index.d.ts +0 -2
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +0 -3
- package/dist/search/EmbeddingService.d.ts +9 -108
- package/dist/search/EmbeddingService.d.ts.map +1 -1
- package/dist/search/EmbeddingService.js +15 -187
- package/dist/search/FuzzySearch.js +1 -1
- package/dist/search/SavedSearchManager.d.ts.map +1 -1
- package/dist/search/SavedSearchManager.js +2 -3
- package/dist/search/SearchManager.d.ts +1 -42
- package/dist/search/SearchManager.d.ts.map +1 -1
- package/dist/search/SearchManager.js +0 -115
- package/dist/search/SemanticSearch.d.ts +1 -4
- package/dist/search/SemanticSearch.d.ts.map +1 -1
- package/dist/search/SemanticSearch.js +2 -12
- package/dist/search/TFIDFIndexManager.d.ts +0 -88
- package/dist/search/TFIDFIndexManager.d.ts.map +1 -1
- package/dist/search/TFIDFIndexManager.js +0 -217
- package/dist/search/index.d.ts +1 -18
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +1 -32
- package/dist/server/MCPServer.d.ts.map +1 -1
- package/dist/server/MCPServer.js +4 -1
- package/dist/server/responseCompressor.js +5 -5
- package/dist/server/toolDefinitions.d.ts.map +1 -1
- package/dist/server/toolDefinitions.js +5 -1
- package/dist/server/toolHandlers.d.ts +9 -5
- package/dist/server/toolHandlers.d.ts.map +1 -1
- package/dist/server/toolHandlers.js +23 -8
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +2 -579
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/compressedCache.d.ts +0 -29
- package/dist/utils/compressedCache.d.ts.map +1 -1
- package/dist/utils/compressedCache.js +0 -39
- package/dist/utils/entityUtils.d.ts +1 -59
- package/dist/utils/entityUtils.d.ts.map +1 -1
- package/dist/utils/entityUtils.js +3 -113
- package/dist/utils/errors.d.ts +0 -18
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +0 -24
- package/dist/utils/index.d.ts +2 -6
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -14
- package/dist/utils/logger.d.ts +0 -7
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -9
- package/dist/utils/parallelUtils.d.ts +1 -5
- package/dist/utils/parallelUtils.d.ts.map +1 -1
- package/dist/utils/parallelUtils.js +1 -23
- package/dist/utils/schemas.d.ts +16 -16
- package/dist/utils/schemas.d.ts.map +1 -1
- package/dist/utils/schemas.js +12 -12
- package/dist/utils/taskScheduler.d.ts +0 -4
- package/dist/utils/taskScheduler.d.ts.map +1 -1
- package/dist/utils/taskScheduler.js +1 -21
- package/dist/workers/WorkerPool.d.ts +81 -0
- package/dist/workers/WorkerPool.d.ts.map +1 -0
- package/dist/workers/WorkerPool.js +121 -0
- package/dist/workers/index.d.ts +1 -1
- package/dist/workers/index.d.ts.map +1 -1
- package/dist/workers/levenshteinWorker.js +1 -1
- package/package.json +1 -4
- package/dist/__tests__/file-path.test.js +0 -119
- package/dist/__tests__/knowledge-graph.test.js +0 -318
- package/dist/core/GraphEventEmitter.d.ts +0 -202
- package/dist/core/GraphEventEmitter.d.ts.map +0 -1
- package/dist/core/GraphEventEmitter.js +0 -346
- package/dist/features/KeywordExtractor.d.ts +0 -61
- package/dist/features/KeywordExtractor.d.ts.map +0 -1
- package/dist/features/KeywordExtractor.js +0 -126
- package/dist/features/ObservationNormalizer.d.ts +0 -90
- package/dist/features/ObservationNormalizer.d.ts.map +0 -1
- package/dist/features/ObservationNormalizer.js +0 -193
- package/dist/memory.jsonl +0 -1
- package/dist/search/BM25Search.d.ts +0 -148
- package/dist/search/BM25Search.d.ts.map +0 -1
- package/dist/search/BM25Search.js +0 -339
- package/dist/search/EarlyTerminationManager.d.ts +0 -140
- package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
- package/dist/search/EarlyTerminationManager.js +0 -279
- package/dist/search/EmbeddingCache.d.ts +0 -175
- package/dist/search/EmbeddingCache.d.ts.map +0 -1
- package/dist/search/EmbeddingCache.js +0 -246
- package/dist/search/HybridScorer.d.ts +0 -181
- package/dist/search/HybridScorer.d.ts.map +0 -1
- package/dist/search/HybridScorer.js +0 -257
- package/dist/search/HybridSearchManager.d.ts +0 -80
- package/dist/search/HybridSearchManager.d.ts.map +0 -1
- package/dist/search/HybridSearchManager.js +0 -187
- package/dist/search/IncrementalIndexer.d.ts +0 -201
- package/dist/search/IncrementalIndexer.d.ts.map +0 -1
- package/dist/search/IncrementalIndexer.js +0 -342
- package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
- package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
- package/dist/search/OptimizedInvertedIndex.js +0 -358
- package/dist/search/ParallelSearchExecutor.d.ts +0 -172
- package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
- package/dist/search/ParallelSearchExecutor.js +0 -309
- package/dist/search/QuantizedVectorStore.d.ts +0 -171
- package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
- package/dist/search/QuantizedVectorStore.js +0 -307
- package/dist/search/QueryAnalyzer.d.ts +0 -76
- package/dist/search/QueryAnalyzer.d.ts.map +0 -1
- package/dist/search/QueryAnalyzer.js +0 -227
- package/dist/search/QueryCostEstimator.d.ts +0 -244
- package/dist/search/QueryCostEstimator.d.ts.map +0 -1
- package/dist/search/QueryCostEstimator.js +0 -652
- package/dist/search/QueryPlanCache.d.ts +0 -220
- package/dist/search/QueryPlanCache.d.ts.map +0 -1
- package/dist/search/QueryPlanCache.js +0 -379
- package/dist/search/QueryPlanner.d.ts +0 -58
- package/dist/search/QueryPlanner.d.ts.map +0 -1
- package/dist/search/QueryPlanner.js +0 -137
- package/dist/search/ReflectionManager.d.ts +0 -120
- package/dist/search/ReflectionManager.d.ts.map +0 -1
- package/dist/search/ReflectionManager.js +0 -231
- package/dist/search/SymbolicSearch.d.ts +0 -61
- package/dist/search/SymbolicSearch.d.ts.map +0 -1
- package/dist/search/SymbolicSearch.js +0 -163
- package/dist/search/TFIDFEventSync.d.ts +0 -85
- package/dist/search/TFIDFEventSync.d.ts.map +0 -1
- package/dist/search/TFIDFEventSync.js +0 -133
- package/dist/utils/BatchProcessor.d.ts +0 -271
- package/dist/utils/BatchProcessor.d.ts.map +0 -1
- package/dist/utils/BatchProcessor.js +0 -376
- package/dist/utils/MemoryMonitor.d.ts +0 -176
- package/dist/utils/MemoryMonitor.d.ts.map +0 -1
- package/dist/utils/MemoryMonitor.js +0 -305
- package/dist/utils/WorkerPoolManager.d.ts +0 -233
- package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
- package/dist/utils/WorkerPoolManager.js +0 -420
- package/dist/utils/operationUtils.d.ts +0 -124
- package/dist/utils/operationUtils.d.ts.map +0 -1
- package/dist/utils/operationUtils.js +0 -175
- package/dist/vitest.config.js +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallelUtils.d.ts","sourceRoot":"","sources":["../../src/utils/parallelUtils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"parallelUtils.d.ts","sourceRoot":"","sources":["../../src/utils/parallelUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,UAAU,MAAM,kCAAkC,CAAC;AAoC1D;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,CAAC,EAAE,CAAC,CAwCd;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,EAC/B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,CAAC,EAAE,CAAC,CAwCd;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAAC,SAAS,GAAG,IAAI,CAK1D"}
|
|
@@ -4,27 +4,9 @@
|
|
|
4
4
|
* Utilities for parallel array operations using workerpool.
|
|
5
5
|
* Phase 8 Sprint 3: Parallel array operations for improved performance.
|
|
6
6
|
*
|
|
7
|
-
* **SECURITY WARNING:** These functions use `new Function()` internally for worker serialization.
|
|
8
|
-
* The `fn` parameter MUST be a real function object, never a user-provided string.
|
|
9
|
-
* Runtime validation ensures only function objects are accepted.
|
|
10
|
-
*
|
|
11
7
|
* @module utils/parallelUtils
|
|
12
8
|
*/
|
|
13
|
-
import workerpool from '@danielsimonjr/workerpool';
|
|
14
|
-
/**
|
|
15
|
-
* Validates that the input is a real function object.
|
|
16
|
-
* Prevents code injection through string masquerading as functions.
|
|
17
|
-
*
|
|
18
|
-
* @param fn - Function to validate
|
|
19
|
-
* @param paramName - Parameter name for error message
|
|
20
|
-
* @throws {TypeError} If fn is not a function
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
function validateFunction(fn, paramName) {
|
|
24
|
-
if (typeof fn !== 'function') {
|
|
25
|
-
throw new TypeError(`${paramName} must be a function, got ${typeof fn}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
9
|
+
import workerpool from '@danielsimonjr/workerpool/modern';
|
|
28
10
|
/**
|
|
29
11
|
* Default chunk size for parallel operations.
|
|
30
12
|
* Can be overridden per operation.
|
|
@@ -91,8 +73,6 @@ export async function shutdownParallelUtils() {
|
|
|
91
73
|
* ```
|
|
92
74
|
*/
|
|
93
75
|
export async function parallelMap(items, fn, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
94
|
-
// Security: Validate that fn is a real function, not a user-provided string
|
|
95
|
-
validateFunction(fn, 'fn');
|
|
96
76
|
// Fall back to single-threaded for small arrays
|
|
97
77
|
if (items.length < MIN_PARALLEL_SIZE) {
|
|
98
78
|
return items.map(fn);
|
|
@@ -147,8 +127,6 @@ export async function parallelMap(items, fn, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
|
147
127
|
* ```
|
|
148
128
|
*/
|
|
149
129
|
export async function parallelFilter(items, predicate, chunkSize = DEFAULT_CHUNK_SIZE) {
|
|
150
|
-
// Security: Validate that predicate is a real function, not a user-provided string
|
|
151
|
-
validateFunction(predicate, 'predicate');
|
|
152
130
|
// Fall back to single-threaded for small arrays
|
|
153
131
|
if (items.length < MIN_PARALLEL_SIZE) {
|
|
154
132
|
return items.filter(predicate);
|
package/dist/utils/schemas.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export declare const CreateEntitySchema: z.ZodObject<{
|
|
|
35
35
|
parentId: z.ZodOptional<z.ZodString>;
|
|
36
36
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
37
37
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
38
|
-
}, z.core.$
|
|
38
|
+
}, z.core.$strip>;
|
|
39
39
|
/**
|
|
40
40
|
* Entity update input schema.
|
|
41
41
|
* All fields are optional for partial updates.
|
|
@@ -47,7 +47,7 @@ export declare const UpdateEntitySchema: z.ZodObject<{
|
|
|
47
47
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
48
|
importance: z.ZodOptional<z.ZodNumber>;
|
|
49
49
|
parentId: z.ZodOptional<z.ZodString>;
|
|
50
|
-
}, z.core.$
|
|
50
|
+
}, z.core.$strip>;
|
|
51
51
|
/**
|
|
52
52
|
* Complete Relation schema with all fields.
|
|
53
53
|
* Used for validating full relation objects including timestamps.
|
|
@@ -70,7 +70,7 @@ export declare const CreateRelationSchema: z.ZodObject<{
|
|
|
70
70
|
relationType: z.ZodString;
|
|
71
71
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
72
72
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
73
|
-
}, z.core.$
|
|
73
|
+
}, z.core.$strip>;
|
|
74
74
|
/**
|
|
75
75
|
* Search query validation.
|
|
76
76
|
* Validates text search queries with reasonable length constraints.
|
|
@@ -82,14 +82,14 @@ export declare const SearchQuerySchema: z.ZodString;
|
|
|
82
82
|
export declare const DateRangeSchema: z.ZodObject<{
|
|
83
83
|
start: z.ZodString;
|
|
84
84
|
end: z.ZodString;
|
|
85
|
-
}, z.core.$
|
|
85
|
+
}, z.core.$strip>;
|
|
86
86
|
/**
|
|
87
87
|
* Tag alias validation for TagManager.
|
|
88
88
|
*/
|
|
89
89
|
export declare const TagAliasSchema: z.ZodObject<{
|
|
90
90
|
canonical: z.ZodString;
|
|
91
91
|
aliases: z.ZodArray<z.ZodString>;
|
|
92
|
-
}, z.core.$
|
|
92
|
+
}, z.core.$strip>;
|
|
93
93
|
/**
|
|
94
94
|
* Export format validation.
|
|
95
95
|
*/
|
|
@@ -112,7 +112,7 @@ export declare const BatchCreateEntitiesSchema: z.ZodArray<z.ZodObject<{
|
|
|
112
112
|
parentId: z.ZodOptional<z.ZodString>;
|
|
113
113
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
114
114
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
115
|
-
}, z.core.$
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
116
|
/**
|
|
117
117
|
* Batch relation creation validation.
|
|
118
118
|
* Validates array of relations with maximum constraints.
|
|
@@ -124,7 +124,7 @@ export declare const BatchCreateRelationsSchema: z.ZodArray<z.ZodObject<{
|
|
|
124
124
|
relationType: z.ZodString;
|
|
125
125
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
126
126
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
127
|
-
}, z.core.$
|
|
127
|
+
}, z.core.$strip>>;
|
|
128
128
|
/**
|
|
129
129
|
* Entity name array validation for batch deletion.
|
|
130
130
|
*/
|
|
@@ -138,7 +138,7 @@ export declare const DeleteRelationsSchema: z.ZodArray<z.ZodObject<{
|
|
|
138
138
|
relationType: z.ZodString;
|
|
139
139
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
140
140
|
lastModified: z.ZodOptional<z.ZodString>;
|
|
141
|
-
}, z.core.$
|
|
141
|
+
}, z.core.$strip>>;
|
|
142
142
|
/**
|
|
143
143
|
* Single observation input for add operations.
|
|
144
144
|
* Empty contents array is allowed (no-op).
|
|
@@ -146,7 +146,7 @@ export declare const DeleteRelationsSchema: z.ZodArray<z.ZodObject<{
|
|
|
146
146
|
export declare const AddObservationInputSchema: z.ZodObject<{
|
|
147
147
|
entityName: z.ZodString;
|
|
148
148
|
contents: z.ZodArray<z.ZodString>;
|
|
149
|
-
}, z.core.$
|
|
149
|
+
}, z.core.$strip>;
|
|
150
150
|
/**
|
|
151
151
|
* Batch observation addition validation.
|
|
152
152
|
* Empty array is allowed (no-op).
|
|
@@ -154,7 +154,7 @@ export declare const AddObservationInputSchema: z.ZodObject<{
|
|
|
154
154
|
export declare const AddObservationsInputSchema: z.ZodArray<z.ZodObject<{
|
|
155
155
|
entityName: z.ZodString;
|
|
156
156
|
contents: z.ZodArray<z.ZodString>;
|
|
157
|
-
}, z.core.$
|
|
157
|
+
}, z.core.$strip>>;
|
|
158
158
|
/**
|
|
159
159
|
* Single observation deletion input.
|
|
160
160
|
* Empty observations array is allowed (no-op).
|
|
@@ -163,7 +163,7 @@ export declare const AddObservationsInputSchema: z.ZodArray<z.ZodObject<{
|
|
|
163
163
|
export declare const DeleteObservationInputSchema: z.ZodObject<{
|
|
164
164
|
entityName: z.ZodString;
|
|
165
165
|
observations: z.ZodArray<z.ZodString>;
|
|
166
|
-
}, z.core.$
|
|
166
|
+
}, z.core.$strip>;
|
|
167
167
|
/**
|
|
168
168
|
* Batch observation deletion validation.
|
|
169
169
|
* Empty array is allowed (no-op).
|
|
@@ -171,7 +171,7 @@ export declare const DeleteObservationInputSchema: z.ZodObject<{
|
|
|
171
171
|
export declare const DeleteObservationsInputSchema: z.ZodArray<z.ZodObject<{
|
|
172
172
|
entityName: z.ZodString;
|
|
173
173
|
observations: z.ZodArray<z.ZodString>;
|
|
174
|
-
}, z.core.$
|
|
174
|
+
}, z.core.$strip>>;
|
|
175
175
|
/**
|
|
176
176
|
* Archive criteria validation.
|
|
177
177
|
* All fields are optional - the manager handles the case when no criteria provided.
|
|
@@ -180,7 +180,7 @@ export declare const ArchiveCriteriaSchema: z.ZodObject<{
|
|
|
180
180
|
olderThan: z.ZodOptional<z.ZodString>;
|
|
181
181
|
importanceLessThan: z.ZodOptional<z.ZodNumber>;
|
|
182
182
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
183
|
-
}, z.core.$
|
|
183
|
+
}, z.core.$strip>;
|
|
184
184
|
/**
|
|
185
185
|
* Saved search creation input validation.
|
|
186
186
|
*/
|
|
@@ -192,7 +192,7 @@ export declare const SavedSearchInputSchema: z.ZodObject<{
|
|
|
192
192
|
minImportance: z.ZodOptional<z.ZodNumber>;
|
|
193
193
|
maxImportance: z.ZodOptional<z.ZodNumber>;
|
|
194
194
|
entityType: z.ZodOptional<z.ZodString>;
|
|
195
|
-
}, z.core.$
|
|
195
|
+
}, z.core.$strip>;
|
|
196
196
|
/**
|
|
197
197
|
* Saved search update validation.
|
|
198
198
|
* All fields are optional for partial updates.
|
|
@@ -204,7 +204,7 @@ export declare const SavedSearchUpdateSchema: z.ZodObject<{
|
|
|
204
204
|
minImportance: z.ZodOptional<z.ZodNumber>;
|
|
205
205
|
maxImportance: z.ZodOptional<z.ZodNumber>;
|
|
206
206
|
entityType: z.ZodOptional<z.ZodString>;
|
|
207
|
-
}, z.core.$
|
|
207
|
+
}, z.core.$strip>;
|
|
208
208
|
/**
|
|
209
209
|
* Import format validation.
|
|
210
210
|
*/
|
|
@@ -242,7 +242,7 @@ export declare const ExportFilterSchema: z.ZodObject<{
|
|
|
242
242
|
endDate: z.ZodOptional<z.ZodString>;
|
|
243
243
|
entityType: z.ZodOptional<z.ZodString>;
|
|
244
244
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
245
|
-
}, z.core.$
|
|
245
|
+
}, z.core.$strip>;
|
|
246
246
|
/**
|
|
247
247
|
* Tags array validation (optional, for search filters).
|
|
248
248
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAC;AA4EvD;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;kBASd,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/utils/schemas.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/schemas.js
CHANGED
|
@@ -98,7 +98,7 @@ export const CreateEntitySchema = z.object({
|
|
|
98
98
|
parentId: entityNameSchema.optional(),
|
|
99
99
|
createdAt: isoDateSchema.optional(),
|
|
100
100
|
lastModified: isoDateSchema.optional(),
|
|
101
|
-
})
|
|
101
|
+
});
|
|
102
102
|
/**
|
|
103
103
|
* Entity update input schema.
|
|
104
104
|
* All fields are optional for partial updates.
|
|
@@ -110,7 +110,7 @@ export const UpdateEntitySchema = z.object({
|
|
|
110
110
|
tags: z.array(tagSchema).optional(),
|
|
111
111
|
importance: importanceSchema.optional(),
|
|
112
112
|
parentId: entityNameSchema.optional(),
|
|
113
|
-
})
|
|
113
|
+
});
|
|
114
114
|
// ==================== Relation Schemas ====================
|
|
115
115
|
/**
|
|
116
116
|
* Complete Relation schema with all fields.
|
|
@@ -134,7 +134,7 @@ export const CreateRelationSchema = z.object({
|
|
|
134
134
|
relationType: relationTypeSchema,
|
|
135
135
|
createdAt: isoDateSchema.optional(),
|
|
136
136
|
lastModified: isoDateSchema.optional(),
|
|
137
|
-
})
|
|
137
|
+
});
|
|
138
138
|
// ==================== Search Schemas ====================
|
|
139
139
|
/**
|
|
140
140
|
* Search query validation.
|
|
@@ -150,7 +150,7 @@ export const SearchQuerySchema = z.string()
|
|
|
150
150
|
export const DateRangeSchema = z.object({
|
|
151
151
|
start: isoDateSchema,
|
|
152
152
|
end: isoDateSchema,
|
|
153
|
-
}).
|
|
153
|
+
}).refine((data) => new Date(data.start) <= new Date(data.end), { message: 'Start date must be before or equal to end date' });
|
|
154
154
|
// ==================== Tag Schemas ====================
|
|
155
155
|
/**
|
|
156
156
|
* Tag alias validation for TagManager.
|
|
@@ -158,7 +158,7 @@ export const DateRangeSchema = z.object({
|
|
|
158
158
|
export const TagAliasSchema = z.object({
|
|
159
159
|
canonical: tagSchema,
|
|
160
160
|
aliases: z.array(tagSchema).min(1, 'Must have at least one alias'),
|
|
161
|
-
})
|
|
161
|
+
});
|
|
162
162
|
// ==================== Export Schemas ====================
|
|
163
163
|
/**
|
|
164
164
|
* Export format validation.
|
|
@@ -199,7 +199,7 @@ export const DeleteRelationsSchema = z.array(CreateRelationSchema)
|
|
|
199
199
|
export const AddObservationInputSchema = z.object({
|
|
200
200
|
entityName: entityNameSchema,
|
|
201
201
|
contents: z.array(observationSchema),
|
|
202
|
-
})
|
|
202
|
+
});
|
|
203
203
|
/**
|
|
204
204
|
* Batch observation addition validation.
|
|
205
205
|
* Empty array is allowed (no-op).
|
|
@@ -214,7 +214,7 @@ export const AddObservationsInputSchema = z.array(AddObservationInputSchema)
|
|
|
214
214
|
export const DeleteObservationInputSchema = z.object({
|
|
215
215
|
entityName: entityNameSchema,
|
|
216
216
|
observations: z.array(observationSchema),
|
|
217
|
-
})
|
|
217
|
+
});
|
|
218
218
|
/**
|
|
219
219
|
* Batch observation deletion validation.
|
|
220
220
|
* Empty array is allowed (no-op).
|
|
@@ -227,10 +227,10 @@ export const DeleteObservationsInputSchema = z.array(DeleteObservationInputSchem
|
|
|
227
227
|
* All fields are optional - the manager handles the case when no criteria provided.
|
|
228
228
|
*/
|
|
229
229
|
export const ArchiveCriteriaSchema = z.object({
|
|
230
|
-
olderThan:
|
|
230
|
+
olderThan: z.string().optional(),
|
|
231
231
|
importanceLessThan: z.number().min(0).max(10).optional(),
|
|
232
232
|
tags: z.array(tagSchema).optional(),
|
|
233
|
-
})
|
|
233
|
+
});
|
|
234
234
|
// ==================== Saved Search Schemas ====================
|
|
235
235
|
/**
|
|
236
236
|
* Saved search creation input validation.
|
|
@@ -243,7 +243,7 @@ export const SavedSearchInputSchema = z.object({
|
|
|
243
243
|
minImportance: importanceSchema.optional(),
|
|
244
244
|
maxImportance: importanceSchema.optional(),
|
|
245
245
|
entityType: entityTypeSchema.optional(),
|
|
246
|
-
})
|
|
246
|
+
});
|
|
247
247
|
/**
|
|
248
248
|
* Saved search update validation.
|
|
249
249
|
* All fields are optional for partial updates.
|
|
@@ -255,7 +255,7 @@ export const SavedSearchUpdateSchema = z.object({
|
|
|
255
255
|
minImportance: importanceSchema.optional(),
|
|
256
256
|
maxImportance: importanceSchema.optional(),
|
|
257
257
|
entityType: entityTypeSchema.optional(),
|
|
258
|
-
})
|
|
258
|
+
});
|
|
259
259
|
// ==================== Import/Export Schemas ====================
|
|
260
260
|
/**
|
|
261
261
|
* Import format validation.
|
|
@@ -277,7 +277,7 @@ export const ExportFilterSchema = z.object({
|
|
|
277
277
|
endDate: isoDateSchema.optional(),
|
|
278
278
|
entityType: entityTypeSchema.optional(),
|
|
279
279
|
tags: z.array(tagSchema).optional(),
|
|
280
|
-
})
|
|
280
|
+
});
|
|
281
281
|
// ==================== Search Parameter Schemas ====================
|
|
282
282
|
/**
|
|
283
283
|
* Tags array validation (optional, for search filters).
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
* Advanced task scheduling utilities using workerpool.
|
|
5
5
|
* Phase 8 Sprint 4: Priority queues, concurrency control, progress tracking.
|
|
6
6
|
*
|
|
7
|
-
* **SECURITY WARNING:** TaskQueue uses `new Function()` internally for worker serialization.
|
|
8
|
-
* Task functions MUST be real function objects, never user-provided strings.
|
|
9
|
-
* Runtime validation ensures only function objects are accepted.
|
|
10
|
-
*
|
|
11
7
|
* @module utils/taskScheduler
|
|
12
8
|
*/
|
|
13
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskScheduler.d.ts","sourceRoot":"","sources":["../../src/utils/taskScheduler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"taskScheduler.d.ts","sourceRoot":"","sources":["../../src/utils/taskScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,27 +4,9 @@
|
|
|
4
4
|
* Advanced task scheduling utilities using workerpool.
|
|
5
5
|
* Phase 8 Sprint 4: Priority queues, concurrency control, progress tracking.
|
|
6
6
|
*
|
|
7
|
-
* **SECURITY WARNING:** TaskQueue uses `new Function()` internally for worker serialization.
|
|
8
|
-
* Task functions MUST be real function objects, never user-provided strings.
|
|
9
|
-
* Runtime validation ensures only function objects are accepted.
|
|
10
|
-
*
|
|
11
7
|
* @module utils/taskScheduler
|
|
12
8
|
*/
|
|
13
|
-
import workerpool from '@danielsimonjr/workerpool';
|
|
14
|
-
/**
|
|
15
|
-
* Validates that the input is a real function object.
|
|
16
|
-
* Prevents code injection through string masquerading as functions.
|
|
17
|
-
*
|
|
18
|
-
* @param fn - Function to validate
|
|
19
|
-
* @param paramName - Parameter name for error message
|
|
20
|
-
* @throws {TypeError} If fn is not a function
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
function validateFunction(fn, paramName) {
|
|
24
|
-
if (typeof fn !== 'function') {
|
|
25
|
-
throw new TypeError(`${paramName} must be a function, got ${typeof fn}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
9
|
+
import workerpool from '@danielsimonjr/workerpool/modern';
|
|
28
10
|
// ==================== Types ====================
|
|
29
11
|
/**
|
|
30
12
|
* Task priority levels.
|
|
@@ -109,8 +91,6 @@ export class TaskQueue {
|
|
|
109
91
|
* @returns Promise that resolves when the task completes
|
|
110
92
|
*/
|
|
111
93
|
enqueue(task) {
|
|
112
|
-
// Security: Validate that task.fn is a real function, not a user-provided string
|
|
113
|
-
validateFunction(task.fn, 'task.fn');
|
|
114
94
|
return new Promise((resolve, reject) => {
|
|
115
95
|
const queuedTask = {
|
|
116
96
|
...task,
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerPool
|
|
3
|
+
*
|
|
4
|
+
* Manages a pool of worker threads for parallel task execution.
|
|
5
|
+
*
|
|
6
|
+
* @module workers/WorkerPool
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Worker pool configuration options.
|
|
10
|
+
*/
|
|
11
|
+
interface PoolOptions {
|
|
12
|
+
/** Maximum number of concurrent workers (default: CPU count - 1) */
|
|
13
|
+
maxWorkers?: number;
|
|
14
|
+
/** Absolute path to the worker script */
|
|
15
|
+
workerPath: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Statistics about the worker pool.
|
|
19
|
+
*/
|
|
20
|
+
export interface PoolStats {
|
|
21
|
+
/** Number of currently active workers */
|
|
22
|
+
activeWorkers: number;
|
|
23
|
+
/** Number of tasks waiting in queue */
|
|
24
|
+
queueSize: number;
|
|
25
|
+
/** Maximum number of concurrent workers */
|
|
26
|
+
maxWorkers: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Worker pool for parallel task execution.
|
|
30
|
+
*
|
|
31
|
+
* Features:
|
|
32
|
+
* - Limits concurrent workers to maxWorkers
|
|
33
|
+
* - Queues tasks when all workers are busy
|
|
34
|
+
* - Automatically terminates workers after task completion
|
|
35
|
+
* - Supports batch execution with executeAll()
|
|
36
|
+
*/
|
|
37
|
+
export declare class WorkerPool<TInput, TOutput> {
|
|
38
|
+
private taskQueue;
|
|
39
|
+
private activeWorkers;
|
|
40
|
+
private readonly maxWorkers;
|
|
41
|
+
private readonly workerPath;
|
|
42
|
+
constructor(options: PoolOptions);
|
|
43
|
+
/**
|
|
44
|
+
* Execute a single task in a worker thread.
|
|
45
|
+
*
|
|
46
|
+
* @param data - Input data for the worker
|
|
47
|
+
* @returns Promise that resolves with the worker's output
|
|
48
|
+
*/
|
|
49
|
+
execute(data: TInput): Promise<TOutput>;
|
|
50
|
+
/**
|
|
51
|
+
* Execute multiple tasks in parallel.
|
|
52
|
+
*
|
|
53
|
+
* @param items - Array of input data for workers
|
|
54
|
+
* @returns Promise that resolves with array of outputs
|
|
55
|
+
*/
|
|
56
|
+
executeAll(items: TInput[]): Promise<TOutput[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Process the task queue, spawning workers as needed.
|
|
59
|
+
*/
|
|
60
|
+
private processQueue;
|
|
61
|
+
/**
|
|
62
|
+
* Run a single task in a worker thread.
|
|
63
|
+
*
|
|
64
|
+
* @param task - Task to execute
|
|
65
|
+
*/
|
|
66
|
+
private runTask;
|
|
67
|
+
/**
|
|
68
|
+
* Wait for all active workers to complete.
|
|
69
|
+
*
|
|
70
|
+
* @returns Promise that resolves when all workers are done
|
|
71
|
+
*/
|
|
72
|
+
shutdown(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Get current statistics about the worker pool.
|
|
75
|
+
*
|
|
76
|
+
* @returns Pool statistics
|
|
77
|
+
*/
|
|
78
|
+
getStats(): PoolStats;
|
|
79
|
+
}
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=WorkerPool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerPool.d.ts","sourceRoot":"","sources":["../../src/workers/WorkerPool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH;;GAEG;AACH,UAAU,WAAW;IACnB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU,CAAC,MAAM,EAAE,OAAO;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,WAAW;IAKhC;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO7C;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKrD;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAsCf;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;;;OAIG;IACH,QAAQ,IAAI,SAAS;CAOtB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkerPool
|
|
3
|
+
*
|
|
4
|
+
* Manages a pool of worker threads for parallel task execution.
|
|
5
|
+
*
|
|
6
|
+
* @module workers/WorkerPool
|
|
7
|
+
*/
|
|
8
|
+
import { Worker } from 'worker_threads';
|
|
9
|
+
import { cpus } from 'os';
|
|
10
|
+
/**
|
|
11
|
+
* Worker pool for parallel task execution.
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Limits concurrent workers to maxWorkers
|
|
15
|
+
* - Queues tasks when all workers are busy
|
|
16
|
+
* - Automatically terminates workers after task completion
|
|
17
|
+
* - Supports batch execution with executeAll()
|
|
18
|
+
*/
|
|
19
|
+
export class WorkerPool {
|
|
20
|
+
taskQueue = [];
|
|
21
|
+
activeWorkers = 0;
|
|
22
|
+
maxWorkers;
|
|
23
|
+
workerPath;
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.maxWorkers = options.maxWorkers ?? Math.max(1, cpus().length - 1);
|
|
26
|
+
this.workerPath = options.workerPath;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Execute a single task in a worker thread.
|
|
30
|
+
*
|
|
31
|
+
* @param data - Input data for the worker
|
|
32
|
+
* @returns Promise that resolves with the worker's output
|
|
33
|
+
*/
|
|
34
|
+
async execute(data) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
this.taskQueue.push({ data, resolve, reject });
|
|
37
|
+
this.processQueue();
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Execute multiple tasks in parallel.
|
|
42
|
+
*
|
|
43
|
+
* @param items - Array of input data for workers
|
|
44
|
+
* @returns Promise that resolves with array of outputs
|
|
45
|
+
*/
|
|
46
|
+
async executeAll(items) {
|
|
47
|
+
const promises = items.map(item => this.execute(item));
|
|
48
|
+
return Promise.all(promises);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Process the task queue, spawning workers as needed.
|
|
52
|
+
*/
|
|
53
|
+
processQueue() {
|
|
54
|
+
while (this.taskQueue.length > 0 && this.activeWorkers < this.maxWorkers) {
|
|
55
|
+
const task = this.taskQueue.shift();
|
|
56
|
+
if (task) {
|
|
57
|
+
this.runTask(task);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run a single task in a worker thread.
|
|
63
|
+
*
|
|
64
|
+
* @param task - Task to execute
|
|
65
|
+
*/
|
|
66
|
+
runTask(task) {
|
|
67
|
+
this.activeWorkers++;
|
|
68
|
+
let taskCompleted = false;
|
|
69
|
+
const worker = new Worker(this.workerPath, {
|
|
70
|
+
workerData: task.data,
|
|
71
|
+
});
|
|
72
|
+
worker.on('message', (result) => {
|
|
73
|
+
if (!taskCompleted) {
|
|
74
|
+
taskCompleted = true;
|
|
75
|
+
task.resolve(result);
|
|
76
|
+
this.activeWorkers--;
|
|
77
|
+
worker.terminate();
|
|
78
|
+
this.processQueue();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
worker.on('error', (error) => {
|
|
82
|
+
if (!taskCompleted) {
|
|
83
|
+
taskCompleted = true;
|
|
84
|
+
task.reject(error);
|
|
85
|
+
this.activeWorkers--;
|
|
86
|
+
worker.terminate();
|
|
87
|
+
this.processQueue();
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
worker.on('exit', (code) => {
|
|
91
|
+
if (!taskCompleted && code !== 0) {
|
|
92
|
+
taskCompleted = true;
|
|
93
|
+
task.reject(new Error(`Worker stopped with exit code ${code}`));
|
|
94
|
+
this.activeWorkers--;
|
|
95
|
+
this.processQueue();
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Wait for all active workers to complete.
|
|
101
|
+
*
|
|
102
|
+
* @returns Promise that resolves when all workers are done
|
|
103
|
+
*/
|
|
104
|
+
async shutdown() {
|
|
105
|
+
while (this.activeWorkers > 0) {
|
|
106
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get current statistics about the worker pool.
|
|
111
|
+
*
|
|
112
|
+
* @returns Pool statistics
|
|
113
|
+
*/
|
|
114
|
+
getStats() {
|
|
115
|
+
return {
|
|
116
|
+
activeWorkers: this.activeWorkers,
|
|
117
|
+
queueSize: this.taskQueue.length,
|
|
118
|
+
maxWorkers: this.maxWorkers,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
package/dist/workers/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module workers
|
|
8
8
|
*/
|
|
9
|
-
export type { Pool, PoolStats } from '@danielsimonjr/workerpool';
|
|
9
|
+
export type { Pool, PoolStats } from '@danielsimonjr/workerpool/modern';
|
|
10
10
|
export type { WorkerInput, MatchResult } from './levenshteinWorker.js';
|
|
11
11
|
export { levenshteinDistance, similarity, searchEntities } from './levenshteinWorker.js';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAGxE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danielsimonjr/memory-mcp",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.1.1",
|
|
4
4
|
"description": "Enhanced MCP memory server with hierarchies, compression, archiving, graph algorithms, semantic search, and 59 advanced tools",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -63,11 +63,8 @@
|
|
|
63
63
|
"zod": "^3.24.1"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@types/better-sqlite3": "^7.6.12",
|
|
67
|
-
"@types/js-yaml": "^4.0.9",
|
|
68
66
|
"@types/node": "^22",
|
|
69
67
|
"@vitest/coverage-v8": "^4.0.13",
|
|
70
|
-
"js-yaml": "^4.1.1",
|
|
71
68
|
"shx": "^0.4.0",
|
|
72
69
|
"typescript": "^5.6.2",
|
|
73
70
|
"vitest": "^4.0.13"
|