strray-ai 1.7.2 → 1.7.3
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/.opencode/hooks/post-commit +152 -55
- package/.opencode/hooks/post-commit.backup +110 -174
- package/.opencode/hooks/post-push +47 -64
- package/.opencode/hooks/post-push.backup +34 -38
- package/.opencode/strray/features.json +3 -3
- package/.opencode/strray/routing-mappings.json +90 -34
- package/AGENTS.md +7 -2
- package/dist/analytics/anonymization-engine.d.ts +108 -0
- package/dist/analytics/anonymization-engine.d.ts.map +1 -0
- package/dist/analytics/anonymization-engine.js +352 -0
- package/dist/analytics/anonymization-engine.js.map +1 -0
- package/dist/analytics/consent-manager.d.ts +94 -0
- package/dist/analytics/consent-manager.d.ts.map +1 -0
- package/dist/analytics/consent-manager.js +257 -0
- package/dist/analytics/consent-manager.js.map +1 -0
- package/dist/analytics/emerging-pattern-detector.d.ts +68 -0
- package/dist/analytics/emerging-pattern-detector.d.ts.map +1 -0
- package/dist/analytics/emerging-pattern-detector.js +250 -0
- package/dist/analytics/emerging-pattern-detector.js.map +1 -0
- package/dist/analytics/pattern-learning-engine.d.ts +81 -0
- package/dist/analytics/pattern-learning-engine.d.ts.map +1 -0
- package/dist/analytics/pattern-learning-engine.js +262 -0
- package/dist/analytics/pattern-learning-engine.js.map +1 -0
- package/dist/analytics/pattern-performance-tracker.d.ts +89 -0
- package/dist/analytics/pattern-performance-tracker.d.ts.map +1 -0
- package/dist/analytics/pattern-performance-tracker.js +289 -0
- package/dist/analytics/pattern-performance-tracker.js.map +1 -0
- package/dist/analytics/prompt-pattern-analyzer.d.ts +100 -0
- package/dist/analytics/prompt-pattern-analyzer.d.ts.map +1 -0
- package/dist/analytics/prompt-pattern-analyzer.js +372 -0
- package/dist/analytics/prompt-pattern-analyzer.js.map +1 -0
- package/dist/analytics/routing-performance-analyzer.d.ts +102 -0
- package/dist/analytics/routing-performance-analyzer.d.ts.map +1 -0
- package/dist/analytics/routing-performance-analyzer.js +342 -0
- package/dist/analytics/routing-performance-analyzer.js.map +1 -0
- package/dist/analytics/routing-refiner.d.ts +105 -0
- package/dist/analytics/routing-refiner.d.ts.map +1 -0
- package/dist/analytics/routing-refiner.js +381 -0
- package/dist/analytics/routing-refiner.js.map +1 -0
- package/dist/cli/commands/analytics-disable.d.ts +10 -0
- package/dist/cli/commands/analytics-disable.d.ts.map +1 -0
- package/dist/cli/commands/analytics-disable.js +73 -0
- package/dist/cli/commands/analytics-disable.js.map +1 -0
- package/dist/cli/commands/analytics-enable-action.d.ts +9 -0
- package/dist/cli/commands/analytics-enable-action.d.ts.map +1 -0
- package/dist/cli/commands/analytics-enable-action.js +83 -0
- package/dist/cli/commands/analytics-enable-action.js.map +1 -0
- package/dist/cli/commands/analytics-preview.d.ts +10 -0
- package/dist/cli/commands/analytics-preview.d.ts.map +1 -0
- package/dist/cli/commands/analytics-preview.js +107 -0
- package/dist/cli/commands/analytics-preview.js.map +1 -0
- package/dist/cli/commands/analytics-status.d.ts +10 -0
- package/dist/cli/commands/analytics-status.d.ts.map +1 -0
- package/dist/cli/commands/analytics-status.js +68 -0
- package/dist/cli/commands/analytics-status.js.map +1 -0
- package/dist/cli/index.js +6 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adaptive-kernel.d.ts +110 -0
- package/dist/core/adaptive-kernel.d.ts.map +1 -0
- package/dist/core/adaptive-kernel.js +193 -0
- package/dist/core/adaptive-kernel.js.map +1 -0
- package/dist/core/kernel-patterns.d.ts +105 -0
- package/dist/core/kernel-patterns.d.ts.map +1 -0
- package/dist/core/kernel-patterns.js +328 -0
- package/dist/core/kernel-patterns.js.map +1 -0
- package/dist/core/orchestrator.d.ts +1 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +40 -11
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/delegation/agent-delegator.d.ts +1 -0
- package/dist/delegation/agent-delegator.d.ts.map +1 -1
- package/dist/delegation/agent-delegator.js +24 -2
- package/dist/delegation/agent-delegator.js.map +1 -1
- package/dist/delegation/task-skill-router.d.ts +269 -5
- package/dist/delegation/task-skill-router.d.ts.map +1 -1
- package/dist/delegation/task-skill-router.js +810 -23
- package/dist/delegation/task-skill-router.js.map +1 -1
- package/dist/postprocessor/PostProcessor.d.ts +10 -0
- package/dist/postprocessor/PostProcessor.d.ts.map +1 -1
- package/dist/postprocessor/PostProcessor.js +87 -17
- package/dist/postprocessor/PostProcessor.js.map +1 -1
- package/dist/processors/agents-md-validation-processor.d.ts +1 -0
- package/dist/processors/agents-md-validation-processor.d.ts.map +1 -1
- package/dist/processors/agents-md-validation-processor.js +34 -12
- package/dist/processors/agents-md-validation-processor.js.map +1 -1
- package/dist/processors/processor-manager.d.ts +7 -0
- package/dist/processors/processor-manager.d.ts.map +1 -1
- package/dist/processors/processor-manager.js +93 -0
- package/dist/processors/processor-manager.js.map +1 -1
- package/dist/processors/test-auto-creation-processor.d.ts.map +1 -1
- package/dist/processors/test-auto-creation-processor.js +52 -38
- package/dist/processors/test-auto-creation-processor.js.map +1 -1
- package/dist/scripts/analytics/daily-routing-analysis.d.ts +18 -0
- package/dist/scripts/analytics/daily-routing-analysis.d.ts.map +1 -0
- package/dist/scripts/analytics/daily-routing-analysis.js +268 -0
- package/dist/scripts/analytics/daily-routing-analysis.js.map +1 -0
- package/dist/scripts/analytics/index.d.ts +15 -0
- package/dist/scripts/analytics/index.d.ts.map +1 -0
- package/dist/scripts/analytics/index.js +17 -0
- package/dist/scripts/analytics/index.js.map +1 -0
- package/dist/scripts/test-p9.d.ts +15 -0
- package/dist/scripts/test-p9.d.ts.map +1 -0
- package/dist/scripts/test-p9.js +220 -0
- package/dist/scripts/test-p9.js.map +1 -0
- package/package.json +6 -2
- package/scripts/node/kernel-e2e-test.mjs +168 -0
- package/scripts/node/kernel-framework-test.mjs +127 -0
- package/scripts/node/kernel-live-test.mjs +147 -0
- package/scripts/node/kernel-real-framework-test.mjs +103 -0
- package/scripts/node/kernel-update.cjs +379 -0
- package/scripts/node/reflection-check.sh +245 -27
- package/scripts/node/test-simple-names-comprehensive.mjs +221 -0
- package/scripts/node/test-simple-names.mjs +39 -0
- package/dist/agents/documentation-writer.d.ts +0 -9
- package/dist/agents/documentation-writer.d.ts.map +0 -1
- package/dist/agents/documentation-writer.js +0 -85
- package/dist/agents/documentation-writer.js.map +0 -1
- package/dist/agents/explore.d.ts +0 -8
- package/dist/agents/explore.d.ts.map +0 -1
- package/dist/agents/explore.js +0 -55
- package/dist/agents/explore.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -3
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -84
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/marketing-expert.d.ts +0 -9
- package/dist/agents/marketing-expert.d.ts.map +0 -1
- package/dist/agents/marketing-expert.js +0 -112
- package/dist/agents/marketing-expert.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -8
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -51
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/seo-copywriter.d.ts +0 -10
- package/dist/agents/seo-copywriter.d.ts.map +0 -1
- package/dist/agents/seo-copywriter.js +0 -73
- package/dist/agents/seo-copywriter.js.map +0 -1
- package/dist/agents/seo-specialist.d.ts +0 -9
- package/dist/agents/seo-specialist.d.ts.map +0 -1
- package/dist/agents/seo-specialist.js +0 -54
- package/dist/agents/seo-specialist.js.map +0 -1
- package/dist/agents/test-architect.d.ts +0 -3
- package/dist/agents/test-architect.d.ts.map +0 -1
- package/dist/agents/test-architect.js +0 -96
- package/dist/agents/test-architect.js.map +0 -1
- package/dist/mcps/enhanced-orchestrator.server.d.ts +0 -14
- package/dist/mcps/enhanced-orchestrator.server.d.ts.map +0 -1
- package/dist/mcps/enhanced-orchestrator.server.js +0 -266
- package/dist/mcps/enhanced-orchestrator.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/analyzer.server.d.ts +0 -7
- package/dist/mcps/knowledge-skills/analyzer.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/analyzer.server.js +0 -282
- package/dist/mcps/knowledge-skills/analyzer.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts +0 -48
- package/dist/mcps/knowledge-skills/documentation-generation.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/documentation-generation.server.js +0 -1238
- package/dist/mcps/knowledge-skills/documentation-generation.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/explore.server.d.ts +0 -21
- package/dist/mcps/knowledge-skills/explore.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/explore.server.js +0 -582
- package/dist/mcps/knowledge-skills/explore.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts +0 -8
- package/dist/mcps/knowledge-skills/marketing-expert.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/marketing-expert.server.js +0 -356
- package/dist/mcps/knowledge-skills/marketing-expert.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/oracle.server.d.ts +0 -25
- package/dist/mcps/knowledge-skills/oracle.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/oracle.server.js +0 -569
- package/dist/mcps/knowledge-skills/oracle.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts +0 -8
- package/dist/mcps/knowledge-skills/seo-copywriter.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/seo-copywriter.server.js +0 -251
- package/dist/mcps/knowledge-skills/seo-copywriter.server.js.map +0 -1
- package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts +0 -8
- package/dist/mcps/knowledge-skills/seo-specialist.server.d.ts.map +0 -1
- package/dist/mcps/knowledge-skills/seo-specialist.server.js +0 -211
- package/dist/mcps/knowledge-skills/seo-specialist.server.js.map +0 -1
- package/dist/mcps/librarian.server.d.ts +0 -17
- package/dist/mcps/librarian.server.d.ts.map +0 -1
- package/dist/mcps/librarian.server.js +0 -382
- package/dist/mcps/librarian.server.js.map +0 -1
- package/dist/optimization/performance-optimizer.d.ts +0 -179
- package/dist/optimization/performance-optimizer.d.ts.map +0 -1
- package/dist/optimization/performance-optimizer.js +0 -556
- package/dist/optimization/performance-optimizer.js.map +0 -1
- package/dist/utils/memory-pool.d.ts +0 -90
- package/dist/utils/memory-pool.d.ts.map +0 -1
- package/dist/utils/memory-pool.js +0 -245
- package/dist/utils/memory-pool.js.map +0 -1
|
@@ -1,556 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Performance Optimization System
|
|
3
|
-
*
|
|
4
|
-
* Sub-millisecond optimization techniques for minimal overhead operations.
|
|
5
|
-
* Implements advanced caching, memory optimization, and computational efficiency.
|
|
6
|
-
*
|
|
7
|
-
* @version 1.0.0
|
|
8
|
-
* @since 2026-01-07
|
|
9
|
-
*/
|
|
10
|
-
import { MemoryPoolManager, createMetricsPool, } from "../utils/memory-pool.js";
|
|
11
|
-
/**
|
|
12
|
-
* LRU Cache with automatic eviction policies for performance optimization
|
|
13
|
-
*/
|
|
14
|
-
export class LRUCache {
|
|
15
|
-
cache = new Map();
|
|
16
|
-
accessOrder = [];
|
|
17
|
-
maxSize;
|
|
18
|
-
defaultTTL;
|
|
19
|
-
constructor(maxSize = 1000, defaultTTL = 300000) {
|
|
20
|
-
// 5 minutes default TTL
|
|
21
|
-
this.maxSize = maxSize;
|
|
22
|
-
this.defaultTTL = defaultTTL;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get value from cache with LRU update
|
|
26
|
-
*/
|
|
27
|
-
get(key) {
|
|
28
|
-
const entry = this.cache.get(key);
|
|
29
|
-
if (!entry)
|
|
30
|
-
return undefined;
|
|
31
|
-
// Check if expired
|
|
32
|
-
if (Date.now() - entry.timestamp > this.defaultTTL) {
|
|
33
|
-
this.delete(key);
|
|
34
|
-
return undefined;
|
|
35
|
-
}
|
|
36
|
-
// Update LRU order
|
|
37
|
-
this.updateAccessOrder(key);
|
|
38
|
-
entry.lastAccessed = Date.now();
|
|
39
|
-
entry.accessCount++;
|
|
40
|
-
return entry.value;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Set value in cache with LRU eviction
|
|
44
|
-
*/
|
|
45
|
-
set(key, value, ttl) {
|
|
46
|
-
const now = Date.now();
|
|
47
|
-
if (this.cache.has(key)) {
|
|
48
|
-
// Update existing entry
|
|
49
|
-
const entry = this.cache.get(key);
|
|
50
|
-
entry.value = value;
|
|
51
|
-
entry.timestamp = now;
|
|
52
|
-
entry.lastAccessed = now;
|
|
53
|
-
entry.accessCount++;
|
|
54
|
-
this.updateAccessOrder(key);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
// Add new entry
|
|
58
|
-
if (this.cache.size >= this.maxSize) {
|
|
59
|
-
this.evictLRU();
|
|
60
|
-
}
|
|
61
|
-
const entry = {
|
|
62
|
-
value,
|
|
63
|
-
timestamp: now,
|
|
64
|
-
accessCount: 1,
|
|
65
|
-
lastAccessed: now,
|
|
66
|
-
size: this.estimateSize(value),
|
|
67
|
-
};
|
|
68
|
-
this.cache.set(key, entry);
|
|
69
|
-
this.accessOrder.push(key);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Delete entry from cache
|
|
74
|
-
*/
|
|
75
|
-
delete(key) {
|
|
76
|
-
const deleted = this.cache.delete(key);
|
|
77
|
-
if (deleted) {
|
|
78
|
-
const index = this.accessOrder.indexOf(key);
|
|
79
|
-
if (index > -1) {
|
|
80
|
-
this.accessOrder.splice(index, 1);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return deleted;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Clear expired entries
|
|
87
|
-
*/
|
|
88
|
-
cleanupExpired() {
|
|
89
|
-
let cleaned = 0;
|
|
90
|
-
const now = Date.now();
|
|
91
|
-
for (const [key, entry] of this.cache.entries()) {
|
|
92
|
-
if (now - entry.timestamp > this.defaultTTL) {
|
|
93
|
-
this.delete(key);
|
|
94
|
-
cleaned++;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return cleaned;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Get cache statistics
|
|
101
|
-
*/
|
|
102
|
-
getStats() {
|
|
103
|
-
const totalAccesses = Array.from(this.cache.values()).reduce((sum, entry) => sum + entry.accessCount, 0);
|
|
104
|
-
const totalHits = Array.from(this.cache.values())
|
|
105
|
-
.filter((entry) => entry.accessCount > 1)
|
|
106
|
-
.reduce((sum, entry) => sum + (entry.accessCount - 1), 0);
|
|
107
|
-
const hitRate = totalAccesses > 0 ? totalHits / totalAccesses : 0;
|
|
108
|
-
const now = Date.now();
|
|
109
|
-
const averageTTL = this.cache.size > 0
|
|
110
|
-
? Array.from(this.cache.values()).reduce((sum, entry) => sum + (now - entry.timestamp), 0) / this.cache.size
|
|
111
|
-
: 0;
|
|
112
|
-
return {
|
|
113
|
-
size: this.cache.size,
|
|
114
|
-
maxSize: this.maxSize,
|
|
115
|
-
utilization: this.cache.size / this.maxSize,
|
|
116
|
-
hitRate,
|
|
117
|
-
totalAccesses,
|
|
118
|
-
averageTTL,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Update access order for LRU
|
|
123
|
-
*/
|
|
124
|
-
updateAccessOrder(key) {
|
|
125
|
-
const index = this.accessOrder.indexOf(key);
|
|
126
|
-
if (index > -1) {
|
|
127
|
-
this.accessOrder.splice(index, 1);
|
|
128
|
-
}
|
|
129
|
-
this.accessOrder.push(key);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Evict least recently used entry
|
|
133
|
-
*/
|
|
134
|
-
evictLRU() {
|
|
135
|
-
if (this.accessOrder.length === 0)
|
|
136
|
-
return;
|
|
137
|
-
const lruKey = this.accessOrder.shift();
|
|
138
|
-
this.cache.delete(lruKey);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Estimate object size (simplified)
|
|
142
|
-
*/
|
|
143
|
-
estimateSize(obj) {
|
|
144
|
-
try {
|
|
145
|
-
const str = JSON.stringify(obj);
|
|
146
|
-
return str.length;
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
return 1000; // Default estimate
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
export class HighPerformanceCache {
|
|
154
|
-
cache = new Map();
|
|
155
|
-
config;
|
|
156
|
-
totalMemory = 0;
|
|
157
|
-
constructor(config = {}) {
|
|
158
|
-
this.config = {
|
|
159
|
-
maxSize: 1000,
|
|
160
|
-
maxMemory: 50 * 1024 * 1024, // 50MB
|
|
161
|
-
ttl: 300000, // 5 minutes
|
|
162
|
-
evictionPolicy: "lru",
|
|
163
|
-
...config,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Get cached value with high-performance lookup
|
|
168
|
-
*/
|
|
169
|
-
get(key) {
|
|
170
|
-
const entry = this.cache.get(key);
|
|
171
|
-
if (!entry)
|
|
172
|
-
return undefined;
|
|
173
|
-
if (Date.now() - entry.timestamp > this.config.ttl) {
|
|
174
|
-
this.cache.delete(key);
|
|
175
|
-
this.totalMemory -= entry.size;
|
|
176
|
-
return undefined;
|
|
177
|
-
}
|
|
178
|
-
entry.accessCount++;
|
|
179
|
-
entry.lastAccessed = Date.now();
|
|
180
|
-
return entry.value;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Set cached value with memory tracking
|
|
184
|
-
*/
|
|
185
|
-
set(key, value) {
|
|
186
|
-
const size = this.estimateSize(value);
|
|
187
|
-
const entry = {
|
|
188
|
-
value,
|
|
189
|
-
timestamp: Date.now(),
|
|
190
|
-
accessCount: 0,
|
|
191
|
-
lastAccessed: Date.now(),
|
|
192
|
-
size,
|
|
193
|
-
};
|
|
194
|
-
if (this.cache.size >= this.config.maxSize ||
|
|
195
|
-
this.totalMemory + size > this.config.maxMemory) {
|
|
196
|
-
this.evictEntries(size);
|
|
197
|
-
}
|
|
198
|
-
const oldEntry = this.cache.get(key);
|
|
199
|
-
if (oldEntry) {
|
|
200
|
-
this.totalMemory -= oldEntry.size;
|
|
201
|
-
}
|
|
202
|
-
this.cache.set(key, entry);
|
|
203
|
-
this.totalMemory += size;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Delete cached entry
|
|
207
|
-
*/
|
|
208
|
-
delete(key) {
|
|
209
|
-
const entry = this.cache.get(key);
|
|
210
|
-
if (entry) {
|
|
211
|
-
this.totalMemory -= entry.size;
|
|
212
|
-
return this.cache.delete(key);
|
|
213
|
-
}
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Clear all cached entries
|
|
218
|
-
*/
|
|
219
|
-
clear() {
|
|
220
|
-
this.cache.clear();
|
|
221
|
-
this.totalMemory = 0;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Get cache statistics
|
|
225
|
-
*/
|
|
226
|
-
getStats() {
|
|
227
|
-
const totalRequests = Array.from(this.cache.values()).reduce((sum, entry) => sum + entry.accessCount, 0);
|
|
228
|
-
// Simplified hit rate calculation (would need total requests in real implementation)
|
|
229
|
-
const hitRate = totalRequests > 0 ? 0.85 : 0; // Assume 85% hit rate for demo
|
|
230
|
-
return {
|
|
231
|
-
size: this.cache.size,
|
|
232
|
-
memoryUsage: this.totalMemory,
|
|
233
|
-
hitRate,
|
|
234
|
-
averageAccessTime: 0.1, // ~100 microseconds
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
evictEntries(requiredSize) {
|
|
238
|
-
const entries = Array.from(this.cache.entries());
|
|
239
|
-
switch (this.config.evictionPolicy) {
|
|
240
|
-
case "lru":
|
|
241
|
-
entries.sort(([, a], [, b]) => a.lastAccessed - b.lastAccessed);
|
|
242
|
-
break;
|
|
243
|
-
case "lfu":
|
|
244
|
-
entries.sort(([, a], [, b]) => a.accessCount - b.accessCount);
|
|
245
|
-
break;
|
|
246
|
-
case "size":
|
|
247
|
-
entries.sort(([, a], [, b]) => b.size - a.size);
|
|
248
|
-
break;
|
|
249
|
-
case "ttl":
|
|
250
|
-
entries.sort(([, a], [, b]) => a.timestamp - b.timestamp);
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
let freedMemory = 0;
|
|
254
|
-
for (const [key, entry] of entries) {
|
|
255
|
-
if (this.cache.size <= this.config.maxSize * 0.8 &&
|
|
256
|
-
this.totalMemory - freedMemory <= this.config.maxMemory - requiredSize) {
|
|
257
|
-
break;
|
|
258
|
-
}
|
|
259
|
-
this.cache.delete(key);
|
|
260
|
-
freedMemory += entry.size;
|
|
261
|
-
}
|
|
262
|
-
this.totalMemory -= freedMemory;
|
|
263
|
-
}
|
|
264
|
-
estimateSize(value) {
|
|
265
|
-
// Rough estimation - in production, use a more sophisticated approach
|
|
266
|
-
if (typeof value === "string")
|
|
267
|
-
return value.length * 2;
|
|
268
|
-
if (typeof value === "number")
|
|
269
|
-
return 8;
|
|
270
|
-
if (typeof value === "boolean")
|
|
271
|
-
return 1;
|
|
272
|
-
if (Array.isArray(value))
|
|
273
|
-
return value.length * 8; // Assume 8 bytes per element
|
|
274
|
-
if (typeof value === "object" && value !== null) {
|
|
275
|
-
return JSON.stringify(value).length * 2;
|
|
276
|
-
}
|
|
277
|
-
return 16; // Default object size
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
export class OptimizedTaskProcessor {
|
|
281
|
-
cache = new HighPerformanceCache();
|
|
282
|
-
resultPool = createMetricsPool(500);
|
|
283
|
-
/**
|
|
284
|
-
* Process task with optimizations
|
|
285
|
-
*/
|
|
286
|
-
async processTask(task) {
|
|
287
|
-
const cacheKey = this.generateCacheKey(task);
|
|
288
|
-
const cachedResult = this.cache.get(cacheKey);
|
|
289
|
-
if (cachedResult) {
|
|
290
|
-
return cachedResult;
|
|
291
|
-
}
|
|
292
|
-
const result = this.resultPool.get();
|
|
293
|
-
try {
|
|
294
|
-
const processedResult = await this.executeOptimizedTask(task, result);
|
|
295
|
-
if (this.isCacheable(task)) {
|
|
296
|
-
this.cache.set(cacheKey, processedResult);
|
|
297
|
-
}
|
|
298
|
-
return processedResult;
|
|
299
|
-
}
|
|
300
|
-
finally {
|
|
301
|
-
// Result is returned to caller, so don't release back to pool
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Batch process multiple tasks efficiently
|
|
306
|
-
*/
|
|
307
|
-
async processBatch(tasks) {
|
|
308
|
-
const results = [];
|
|
309
|
-
// Group tasks by type for optimized processing
|
|
310
|
-
const taskGroups = new Map();
|
|
311
|
-
for (const task of tasks) {
|
|
312
|
-
const type = task.type || "default";
|
|
313
|
-
if (!taskGroups.has(type)) {
|
|
314
|
-
taskGroups.set(type, []);
|
|
315
|
-
}
|
|
316
|
-
taskGroups.get(type).push(task);
|
|
317
|
-
}
|
|
318
|
-
// Process each group
|
|
319
|
-
for (const [type, groupTasks] of taskGroups) {
|
|
320
|
-
const groupResults = await this.processTaskGroup(type, groupTasks);
|
|
321
|
-
results.push(...groupResults);
|
|
322
|
-
}
|
|
323
|
-
return results;
|
|
324
|
-
}
|
|
325
|
-
async executeOptimizedTask(task, result) {
|
|
326
|
-
// Apply various optimizations based on task type
|
|
327
|
-
switch (task.type) {
|
|
328
|
-
case "validation":
|
|
329
|
-
return this.optimizeValidation(task, result);
|
|
330
|
-
case "computation":
|
|
331
|
-
return this.optimizeComputation(task, result);
|
|
332
|
-
case "data_processing":
|
|
333
|
-
return this.optimizeDataProcessing(task, result);
|
|
334
|
-
default:
|
|
335
|
-
return this.executeStandardTask(task, result);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
async optimizeValidation(task, result) {
|
|
339
|
-
// Use SIMD-like operations for bulk validation
|
|
340
|
-
const items = task.items || [];
|
|
341
|
-
const results = new Array(items.length);
|
|
342
|
-
// Process in chunks for better cache locality
|
|
343
|
-
const chunkSize = 64;
|
|
344
|
-
for (let i = 0; i < items.length; i += chunkSize) {
|
|
345
|
-
const chunk = items.slice(i, i + chunkSize);
|
|
346
|
-
const chunkResults = await this.validateChunk(chunk);
|
|
347
|
-
results.splice(i, chunk.length, ...chunkResults);
|
|
348
|
-
}
|
|
349
|
-
result.valid = results.every((r) => r);
|
|
350
|
-
result.results = results;
|
|
351
|
-
return result;
|
|
352
|
-
}
|
|
353
|
-
async optimizeComputation(task, result) {
|
|
354
|
-
// Use optimized mathematical operations
|
|
355
|
-
const { operation, operands } = task;
|
|
356
|
-
switch (operation) {
|
|
357
|
-
case "sum":
|
|
358
|
-
result.value = operands.reduce((a, b) => a + b, 0);
|
|
359
|
-
break;
|
|
360
|
-
case "average":
|
|
361
|
-
result.value =
|
|
362
|
-
operands.reduce((a, b) => a + b, 0) / operands.length;
|
|
363
|
-
break;
|
|
364
|
-
case "max":
|
|
365
|
-
result.value = Math.max(...operands);
|
|
366
|
-
break;
|
|
367
|
-
case "min":
|
|
368
|
-
result.value = Math.min(...operands);
|
|
369
|
-
break;
|
|
370
|
-
default:
|
|
371
|
-
result.value = this.computeCustom(operation, operands);
|
|
372
|
-
}
|
|
373
|
-
return result;
|
|
374
|
-
}
|
|
375
|
-
async optimizeDataProcessing(task, result) {
|
|
376
|
-
// Use streaming and buffering for large datasets
|
|
377
|
-
const data = task.data || [];
|
|
378
|
-
const operations = task.operations || [];
|
|
379
|
-
let processedData = data;
|
|
380
|
-
for (const operation of operations) {
|
|
381
|
-
processedData = await this.applyDataOperation(processedData, operation);
|
|
382
|
-
}
|
|
383
|
-
result.data = processedData;
|
|
384
|
-
result.processedCount = processedData.length;
|
|
385
|
-
return result;
|
|
386
|
-
}
|
|
387
|
-
async executeStandardTask(task, result) {
|
|
388
|
-
// Fallback to standard processing
|
|
389
|
-
result.output = `Processed ${JSON.stringify(task)}`;
|
|
390
|
-
return result;
|
|
391
|
-
}
|
|
392
|
-
generateCacheKey(task) {
|
|
393
|
-
// Generate efficient cache key
|
|
394
|
-
const relevantProps = ["type", "operation", "id", "params"];
|
|
395
|
-
const keyParts = [];
|
|
396
|
-
for (const prop of relevantProps) {
|
|
397
|
-
if (task[prop] !== undefined) {
|
|
398
|
-
keyParts.push(`${prop}:${JSON.stringify(task[prop])}`);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
return keyParts.join("|");
|
|
402
|
-
}
|
|
403
|
-
isCacheable(task) {
|
|
404
|
-
// Determine if task result should be cached
|
|
405
|
-
return !task.noCache && !task.dynamic && task.type !== "mutation";
|
|
406
|
-
}
|
|
407
|
-
async validateChunk(items) {
|
|
408
|
-
// Optimized validation for chunks
|
|
409
|
-
return items.map((item) => {
|
|
410
|
-
// Simple validation - in practice, this would be more complex
|
|
411
|
-
return item !== null && item !== undefined;
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
computeCustom(operation, operands) {
|
|
415
|
-
// Placeholder for custom computations
|
|
416
|
-
return operands[0] || 0;
|
|
417
|
-
}
|
|
418
|
-
async applyDataOperation(data, operation) {
|
|
419
|
-
// Placeholder for data operations
|
|
420
|
-
switch (operation.type) {
|
|
421
|
-
case "filter":
|
|
422
|
-
return data.filter((item) => item[operation.field] === operation.value);
|
|
423
|
-
case "map":
|
|
424
|
-
return data.map((item) => ({
|
|
425
|
-
...item,
|
|
426
|
-
[operation.field]: operation.value,
|
|
427
|
-
}));
|
|
428
|
-
case "sort":
|
|
429
|
-
return [...data].sort((a, b) => a[operation.field] - b[operation.field]);
|
|
430
|
-
default:
|
|
431
|
-
return data;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
async processTaskGroup(type, tasks) {
|
|
435
|
-
// Process group of similar tasks efficiently
|
|
436
|
-
const results = [];
|
|
437
|
-
// Use batch processing for similar tasks
|
|
438
|
-
if (type === "validation" && tasks.length > 10) {
|
|
439
|
-
const allItems = tasks.flatMap((t) => t.items || []);
|
|
440
|
-
const batchResult = await this.processTask({
|
|
441
|
-
type: "validation",
|
|
442
|
-
items: allItems,
|
|
443
|
-
});
|
|
444
|
-
// Split results back to individual tasks
|
|
445
|
-
let offset = 0;
|
|
446
|
-
for (const task of tasks) {
|
|
447
|
-
const count = task.items?.length || 0;
|
|
448
|
-
const taskResults = batchResult.results.slice(offset, offset + count);
|
|
449
|
-
results.push({
|
|
450
|
-
valid: taskResults.every((r) => r),
|
|
451
|
-
results: taskResults,
|
|
452
|
-
});
|
|
453
|
-
offset += count;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
else {
|
|
457
|
-
// Process individually
|
|
458
|
-
for (const task of tasks) {
|
|
459
|
-
results.push(await this.processTask(task));
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
return results;
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
export class PerformanceOptimizer {
|
|
466
|
-
optimizations = [];
|
|
467
|
-
taskProcessor = new OptimizedTaskProcessor();
|
|
468
|
-
poolManager = new MemoryPoolManager();
|
|
469
|
-
/**
|
|
470
|
-
* Apply performance optimizations to framework operations
|
|
471
|
-
*/
|
|
472
|
-
async optimizeOperation(operation, originalFn, optimizedFn) {
|
|
473
|
-
const startMemory = process.memoryUsage().heapUsed;
|
|
474
|
-
// Measure original performance
|
|
475
|
-
const originalStart = performance.now();
|
|
476
|
-
const originalResult = await originalFn();
|
|
477
|
-
const originalTime = performance.now() - originalStart;
|
|
478
|
-
// Measure optimized performance
|
|
479
|
-
const optimizedStart = performance.now();
|
|
480
|
-
const optimizedResult = await optimizedFn();
|
|
481
|
-
const optimizedTime = performance.now() - optimizedStart;
|
|
482
|
-
const endMemory = process.memoryUsage().heapUsed;
|
|
483
|
-
const memorySaved = startMemory - endMemory;
|
|
484
|
-
const metrics = {
|
|
485
|
-
operation,
|
|
486
|
-
originalTime,
|
|
487
|
-
optimizedTime,
|
|
488
|
-
improvement: originalTime > 0
|
|
489
|
-
? ((originalTime - optimizedTime) / originalTime) * 100
|
|
490
|
-
: 0,
|
|
491
|
-
memoryBefore: startMemory,
|
|
492
|
-
memoryAfter: endMemory,
|
|
493
|
-
memorySaved,
|
|
494
|
-
timestamp: Date.now(),
|
|
495
|
-
};
|
|
496
|
-
this.optimizations.push(metrics);
|
|
497
|
-
return optimizedResult;
|
|
498
|
-
}
|
|
499
|
-
/**
|
|
500
|
-
* Get optimization statistics
|
|
501
|
-
*/
|
|
502
|
-
getOptimizationStats() {
|
|
503
|
-
if (this.optimizations.length === 0) {
|
|
504
|
-
return {
|
|
505
|
-
totalOptimizations: 0,
|
|
506
|
-
averageImprovement: 0,
|
|
507
|
-
totalMemorySaved: 0,
|
|
508
|
-
bestOptimization: "",
|
|
509
|
-
worstOptimization: "",
|
|
510
|
-
};
|
|
511
|
-
}
|
|
512
|
-
const improvements = this.optimizations.map((o) => o.improvement);
|
|
513
|
-
const avgImprovement = improvements.reduce((a, b) => a + b, 0) / improvements.length;
|
|
514
|
-
const totalMemorySaved = this.optimizations.reduce((sum, o) => sum + o.memorySaved, 0);
|
|
515
|
-
const bestOpt = this.optimizations.reduce((best, current) => current.improvement > best.improvement ? current : best);
|
|
516
|
-
const worstOpt = this.optimizations.reduce((worst, current) => current.improvement < worst.improvement ? current : worst);
|
|
517
|
-
return {
|
|
518
|
-
totalOptimizations: this.optimizations.length,
|
|
519
|
-
averageImprovement: avgImprovement,
|
|
520
|
-
totalMemorySaved,
|
|
521
|
-
bestOptimization: bestOpt.operation,
|
|
522
|
-
worstOptimization: worstOpt.operation,
|
|
523
|
-
};
|
|
524
|
-
}
|
|
525
|
-
/**
|
|
526
|
-
* Create optimized memory pool for specific object type
|
|
527
|
-
*/
|
|
528
|
-
createMemoryPool(name, config) {
|
|
529
|
-
return this.poolManager.getPool(name, {
|
|
530
|
-
maxSize: config.maxSize || 1000,
|
|
531
|
-
factory: config.factory,
|
|
532
|
-
reset: config.reset,
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
/**
|
|
536
|
-
* Process task with optimizations
|
|
537
|
-
*/
|
|
538
|
-
async processOptimizedTask(task) {
|
|
539
|
-
return this.taskProcessor.processTask(task);
|
|
540
|
-
}
|
|
541
|
-
/**
|
|
542
|
-
* Get memory pool statistics
|
|
543
|
-
*/
|
|
544
|
-
getMemoryPoolStats() {
|
|
545
|
-
return this.poolManager.getAllMetrics();
|
|
546
|
-
}
|
|
547
|
-
/**
|
|
548
|
-
* Clear optimization history
|
|
549
|
-
*/
|
|
550
|
-
clearOptimizationHistory() {
|
|
551
|
-
this.optimizations = [];
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
// Export singleton instances
|
|
555
|
-
export const performanceOptimizer = new PerformanceOptimizer();
|
|
556
|
-
//# sourceMappingURL=performance-optimizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"performance-optimizer.js","sourceRoot":"","sources":["../../src/optimization/performance-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "events";
|
|
2
|
-
/**
|
|
3
|
-
* Memory Pool System - Reusable object pooling to reduce GC pressure
|
|
4
|
-
* Implements efficient object reuse for frequently allocated objects
|
|
5
|
-
*/
|
|
6
|
-
export interface MemoryPoolConfig {
|
|
7
|
-
maxSize: number;
|
|
8
|
-
factory: () => any;
|
|
9
|
-
reset?: ((obj: any) => void) | undefined;
|
|
10
|
-
validate?: (obj: any) => boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface PoolMetrics {
|
|
13
|
-
name: string;
|
|
14
|
-
allocated: number;
|
|
15
|
-
available: number;
|
|
16
|
-
totalCreated: number;
|
|
17
|
-
hitRate: number;
|
|
18
|
-
averageUsage: number;
|
|
19
|
-
}
|
|
20
|
-
export declare class MemoryPool<T = any> extends EventEmitter {
|
|
21
|
-
private available;
|
|
22
|
-
private created;
|
|
23
|
-
private totalRequests;
|
|
24
|
-
private cacheHits;
|
|
25
|
-
private config;
|
|
26
|
-
constructor(config: MemoryPoolConfig);
|
|
27
|
-
/**
|
|
28
|
-
* Get an object from the pool or create a new one
|
|
29
|
-
*/
|
|
30
|
-
get(): T;
|
|
31
|
-
/**
|
|
32
|
-
* Return an object to the pool for reuse
|
|
33
|
-
*/
|
|
34
|
-
release(obj: T): void;
|
|
35
|
-
/**
|
|
36
|
-
* Create a new object using the factory
|
|
37
|
-
*/
|
|
38
|
-
private createNew;
|
|
39
|
-
/**
|
|
40
|
-
* Get pool metrics and statistics
|
|
41
|
-
*/
|
|
42
|
-
getMetrics(): PoolMetrics;
|
|
43
|
-
/**
|
|
44
|
-
* Clear all objects from the pool
|
|
45
|
-
*/
|
|
46
|
-
clear(): void;
|
|
47
|
-
/**
|
|
48
|
-
* Get current pool status
|
|
49
|
-
*/
|
|
50
|
-
getStatus(): {
|
|
51
|
-
available: number;
|
|
52
|
-
created: number;
|
|
53
|
-
maxSize: number;
|
|
54
|
-
utilization: number;
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Global Memory Pool Manager
|
|
59
|
-
* Manages multiple memory pools and provides optimization recommendations
|
|
60
|
-
*/
|
|
61
|
-
export declare class MemoryPoolManager extends EventEmitter {
|
|
62
|
-
private pools;
|
|
63
|
-
private monitoringInterval;
|
|
64
|
-
constructor();
|
|
65
|
-
/**
|
|
66
|
-
* Create or get a memory pool
|
|
67
|
-
*/
|
|
68
|
-
getPool<T>(name: string, config: MemoryPoolConfig): MemoryPool<T>;
|
|
69
|
-
/**
|
|
70
|
-
* Get metrics for all pools
|
|
71
|
-
*/
|
|
72
|
-
getAllMetrics(): Record<string, PoolMetrics>;
|
|
73
|
-
/**
|
|
74
|
-
* Get optimization recommendations
|
|
75
|
-
*/
|
|
76
|
-
getOptimizationRecommendations(): string[];
|
|
77
|
-
/**
|
|
78
|
-
* Start monitoring pools and emitting metrics
|
|
79
|
-
*/
|
|
80
|
-
private startMonitoring;
|
|
81
|
-
/**
|
|
82
|
-
* Stop monitoring and clear all pools
|
|
83
|
-
*/
|
|
84
|
-
stop(): void;
|
|
85
|
-
}
|
|
86
|
-
export declare const memoryPoolManager: MemoryPoolManager;
|
|
87
|
-
export declare function createSessionPool(maxSize?: number): MemoryPool<any>;
|
|
88
|
-
export declare function createMetricsPool(maxSize?: number): MemoryPool<any>;
|
|
89
|
-
export declare function createAlertPool(maxSize?: number): MemoryPool<any>;
|
|
90
|
-
//# sourceMappingURL=memory-pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-pool.d.ts","sourceRoot":"","sources":["../../src/utils/memory-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,YAAY;IACnD,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACH,GAAG,IAAI,CAAC;IAmBR;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;IAmBrB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,UAAU,IAAI,WAAW;IAezB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,SAAS;;;;;;CAWV;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,kBAAkB,CAA+B;;IAOzD;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC;IAiBjE;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAU5C;;OAEG;IACH,8BAA8B,IAAI,MAAM,EAAE;IA8B1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,IAAI,IAAI,IAAI;CAYb;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,wBAAgB,iBAAiB,CAAC,OAAO,SAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAkBhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAgBhE;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAoB7D"}
|