@claude-flow/plugin-perf-optimizer 3.0.0-alpha.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/README.md +276 -0
- package/dist/bridges/fpga-bridge.d.ts +81 -0
- package/dist/bridges/fpga-bridge.d.ts.map +1 -0
- package/dist/bridges/fpga-bridge.js +499 -0
- package/dist/bridges/fpga-bridge.js.map +1 -0
- package/dist/bridges/index.d.ts +8 -0
- package/dist/bridges/index.d.ts.map +1 -0
- package/dist/bridges/index.js +8 -0
- package/dist/bridges/index.js.map +1 -0
- package/dist/bridges/sparse-bridge.d.ts +78 -0
- package/dist/bridges/sparse-bridge.d.ts.map +1 -0
- package/dist/bridges/sparse-bridge.js +335 -0
- package/dist/bridges/sparse-bridge.js.map +1 -0
- package/dist/index.d.ts +135 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-tools.d.ts +26 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +916 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/types.d.ts +675 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +141 -0
- package/dist/types.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sparse Inference Bridge for Performance Optimizer
|
|
3
|
+
*
|
|
4
|
+
* Provides efficient trace analysis using sparse inference techniques
|
|
5
|
+
* from ruvector-sparse-inference-wasm for processing large performance traces.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Default sparse encoding configuration
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_SPARSE_CONFIG = {
|
|
11
|
+
maxDimensions: 1024,
|
|
12
|
+
sparsityRatio: 0.1,
|
|
13
|
+
hashBuckets: 256,
|
|
14
|
+
featureExtraction: 'auto',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Sparse Inference Bridge Implementation
|
|
18
|
+
*
|
|
19
|
+
* Provides efficient trace analysis capabilities:
|
|
20
|
+
* - Sparse encoding of trace spans for memory efficiency
|
|
21
|
+
* - Anomaly detection using sparse representations
|
|
22
|
+
* - Critical path analysis using dependency graphs
|
|
23
|
+
*/
|
|
24
|
+
export class PerfSparseBridge {
|
|
25
|
+
name = 'perf-optimizer-sparse';
|
|
26
|
+
version = '0.1.0';
|
|
27
|
+
status = 'unloaded';
|
|
28
|
+
config;
|
|
29
|
+
featureHashes = new Map();
|
|
30
|
+
encodingCache = new Map();
|
|
31
|
+
constructor(config) {
|
|
32
|
+
this.config = { ...DEFAULT_SPARSE_CONFIG, ...config };
|
|
33
|
+
}
|
|
34
|
+
async init() {
|
|
35
|
+
if (this.status === 'ready')
|
|
36
|
+
return;
|
|
37
|
+
if (this.status === 'loading')
|
|
38
|
+
return;
|
|
39
|
+
this.status = 'loading';
|
|
40
|
+
try {
|
|
41
|
+
// Try to load WASM module
|
|
42
|
+
// Dynamic import of optional WASM module - use string literal to avoid type error
|
|
43
|
+
const modulePath = '@claude-flow/ruvector-upstream';
|
|
44
|
+
const wasmModule = await import(/* @vite-ignore */ modulePath).catch(() => null);
|
|
45
|
+
if (wasmModule) {
|
|
46
|
+
// Initialize with WASM module
|
|
47
|
+
this.status = 'ready';
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Use mock implementation
|
|
51
|
+
this.initializeFeatureHashes();
|
|
52
|
+
this.status = 'ready';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
this.status = 'error';
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async destroy() {
|
|
61
|
+
this.featureHashes.clear();
|
|
62
|
+
this.encodingCache.clear();
|
|
63
|
+
this.status = 'unloaded';
|
|
64
|
+
}
|
|
65
|
+
isReady() {
|
|
66
|
+
return this.status === 'ready';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Encode traces into sparse representation
|
|
70
|
+
*
|
|
71
|
+
* Uses feature hashing and sparse encoding to efficiently
|
|
72
|
+
* represent trace spans for downstream analysis.
|
|
73
|
+
*/
|
|
74
|
+
async encodeTraces(spans) {
|
|
75
|
+
if (!this.isReady()) {
|
|
76
|
+
throw new Error('Sparse bridge not initialized');
|
|
77
|
+
}
|
|
78
|
+
// Check cache
|
|
79
|
+
const cacheKey = this.computeCacheKey(spans);
|
|
80
|
+
const cached = this.encodingCache.get(cacheKey);
|
|
81
|
+
if (cached)
|
|
82
|
+
return cached;
|
|
83
|
+
const encoding = new Float32Array(this.config.maxDimensions);
|
|
84
|
+
const nonZeroCount = Math.floor(this.config.maxDimensions * this.config.sparsityRatio);
|
|
85
|
+
for (const span of spans) {
|
|
86
|
+
// Extract features from span
|
|
87
|
+
const features = this.extractSpanFeatures(span);
|
|
88
|
+
// Hash features to sparse dimensions
|
|
89
|
+
for (const [feature, value] of Object.entries(features)) {
|
|
90
|
+
const hash = this.hashFeature(feature);
|
|
91
|
+
const dim = hash % this.config.maxDimensions;
|
|
92
|
+
// Accumulate with collision handling
|
|
93
|
+
encoding[dim] += value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Normalize and apply sparsification
|
|
97
|
+
this.normalizeEncoding(encoding);
|
|
98
|
+
this.sparsify(encoding, nonZeroCount);
|
|
99
|
+
// Cache result
|
|
100
|
+
this.encodingCache.set(cacheKey, encoding);
|
|
101
|
+
if (this.encodingCache.size > 1000) {
|
|
102
|
+
// LRU eviction
|
|
103
|
+
const firstKey = this.encodingCache.keys().next().value;
|
|
104
|
+
if (firstKey)
|
|
105
|
+
this.encodingCache.delete(firstKey);
|
|
106
|
+
}
|
|
107
|
+
return encoding;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Detect anomalies in encoded traces
|
|
111
|
+
*
|
|
112
|
+
* Uses sparse representations to identify outliers and anomalous patterns.
|
|
113
|
+
*/
|
|
114
|
+
async detectAnomalies(encoded, threshold) {
|
|
115
|
+
if (!this.isReady()) {
|
|
116
|
+
throw new Error('Sparse bridge not initialized');
|
|
117
|
+
}
|
|
118
|
+
const anomalyIndices = [];
|
|
119
|
+
// Compute statistics
|
|
120
|
+
let sum = 0;
|
|
121
|
+
let sumSq = 0;
|
|
122
|
+
let nonZeroCount = 0;
|
|
123
|
+
for (let i = 0; i < encoded.length; i++) {
|
|
124
|
+
if (encoded[i] !== 0) {
|
|
125
|
+
sum += encoded[i];
|
|
126
|
+
sumSq += encoded[i] * encoded[i];
|
|
127
|
+
nonZeroCount++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (nonZeroCount === 0)
|
|
131
|
+
return anomalyIndices;
|
|
132
|
+
const mean = sum / nonZeroCount;
|
|
133
|
+
const variance = (sumSq / nonZeroCount) - (mean * mean);
|
|
134
|
+
const stdDev = Math.sqrt(Math.max(0, variance));
|
|
135
|
+
// Detect anomalies using z-score
|
|
136
|
+
for (let i = 0; i < encoded.length; i++) {
|
|
137
|
+
if (encoded[i] !== 0) {
|
|
138
|
+
const zScore = Math.abs((encoded[i] - mean) / (stdDev + 1e-8));
|
|
139
|
+
if (zScore > threshold) {
|
|
140
|
+
anomalyIndices.push(i);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return anomalyIndices;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Analyze critical path in traces
|
|
148
|
+
*
|
|
149
|
+
* Uses dependency analysis to identify the critical path through
|
|
150
|
+
* the trace spans.
|
|
151
|
+
*/
|
|
152
|
+
async analyzeCriticalPath(encoded) {
|
|
153
|
+
if (!this.isReady()) {
|
|
154
|
+
throw new Error('Sparse bridge not initialized');
|
|
155
|
+
}
|
|
156
|
+
// Find dimensions with highest values (representing critical operations)
|
|
157
|
+
const indexedValues = [];
|
|
158
|
+
for (let i = 0; i < encoded.length; i++) {
|
|
159
|
+
if (encoded[i] > 0) {
|
|
160
|
+
indexedValues.push({ index: i, value: encoded[i] });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Sort by value descending
|
|
164
|
+
indexedValues.sort((a, b) => b.value - a.value);
|
|
165
|
+
// Map back to operation names using reverse hash lookup
|
|
166
|
+
const criticalPath = [];
|
|
167
|
+
const reverseHashes = new Map();
|
|
168
|
+
for (const [feature, hash] of this.featureHashes) {
|
|
169
|
+
const dim = hash % this.config.maxDimensions;
|
|
170
|
+
if (!reverseHashes.has(dim)) {
|
|
171
|
+
reverseHashes.set(dim, feature);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
for (const { index } of indexedValues.slice(0, 10)) {
|
|
175
|
+
const feature = reverseHashes.get(index);
|
|
176
|
+
if (feature) {
|
|
177
|
+
criticalPath.push(feature);
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
criticalPath.push(`operation_${index}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return criticalPath;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Analyze trace patterns for bottleneck detection
|
|
187
|
+
*/
|
|
188
|
+
analyzePatterns(spans) {
|
|
189
|
+
const patterns = new Map();
|
|
190
|
+
const hotspots = [];
|
|
191
|
+
const dependencies = new Map();
|
|
192
|
+
// Build span tree
|
|
193
|
+
const spanMap = new Map();
|
|
194
|
+
for (const span of spans) {
|
|
195
|
+
spanMap.set(span.spanId, span);
|
|
196
|
+
}
|
|
197
|
+
// Analyze patterns
|
|
198
|
+
for (const span of spans) {
|
|
199
|
+
// Track operation patterns
|
|
200
|
+
const pattern = `${span.serviceName}:${span.operationName}`;
|
|
201
|
+
patterns.set(pattern, (patterns.get(pattern) ?? 0) + 1);
|
|
202
|
+
// Identify hotspots (slow operations)
|
|
203
|
+
if (span.duration > 100) {
|
|
204
|
+
hotspots.push(span.spanId);
|
|
205
|
+
}
|
|
206
|
+
// Build dependency graph
|
|
207
|
+
if (span.parentSpanId) {
|
|
208
|
+
const parent = spanMap.get(span.parentSpanId);
|
|
209
|
+
if (parent) {
|
|
210
|
+
const parentKey = `${parent.serviceName}:${parent.operationName}`;
|
|
211
|
+
const deps = dependencies.get(pattern) ?? [];
|
|
212
|
+
if (!deps.includes(parentKey)) {
|
|
213
|
+
deps.push(parentKey);
|
|
214
|
+
dependencies.set(pattern, deps);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return { patterns, hotspots, dependencies };
|
|
220
|
+
}
|
|
221
|
+
// ============================================================================
|
|
222
|
+
// Private Methods
|
|
223
|
+
// ============================================================================
|
|
224
|
+
initializeFeatureHashes() {
|
|
225
|
+
// Pre-compute hashes for common features
|
|
226
|
+
const commonFeatures = [
|
|
227
|
+
'duration', 'error', 'cpu', 'memory', 'io', 'network',
|
|
228
|
+
'database', 'cache', 'http', 'grpc', 'sql', 'redis',
|
|
229
|
+
];
|
|
230
|
+
for (const feature of commonFeatures) {
|
|
231
|
+
this.featureHashes.set(feature, this.hashString(feature));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
extractSpanFeatures(span) {
|
|
235
|
+
const features = {};
|
|
236
|
+
// Duration features
|
|
237
|
+
features[`duration_${this.bucketize(span.duration, [10, 50, 100, 500, 1000])}`] = 1;
|
|
238
|
+
features['duration_raw'] = Math.log1p(span.duration) / 10;
|
|
239
|
+
// Service and operation
|
|
240
|
+
features[`service:${span.serviceName}`] = 1;
|
|
241
|
+
features[`operation:${span.operationName}`] = 1;
|
|
242
|
+
// Status
|
|
243
|
+
features[`status:${span.status}`] = 1;
|
|
244
|
+
if (span.status === 'error') {
|
|
245
|
+
features['has_error'] = 1;
|
|
246
|
+
}
|
|
247
|
+
// Attributes
|
|
248
|
+
for (const [key, value] of Object.entries(span.attributes)) {
|
|
249
|
+
if (typeof value === 'number') {
|
|
250
|
+
features[`attr:${key}`] = Math.tanh(value / 100);
|
|
251
|
+
}
|
|
252
|
+
else if (typeof value === 'string') {
|
|
253
|
+
features[`attr:${key}:${value.slice(0, 20)}`] = 1;
|
|
254
|
+
}
|
|
255
|
+
else if (typeof value === 'boolean') {
|
|
256
|
+
features[`attr:${key}:${value}`] = 1;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Events
|
|
260
|
+
if (span.events) {
|
|
261
|
+
features['event_count'] = span.events.length / 10;
|
|
262
|
+
for (const event of span.events) {
|
|
263
|
+
features[`event:${event.name}`] = 1;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return features;
|
|
267
|
+
}
|
|
268
|
+
hashFeature(feature) {
|
|
269
|
+
// Check cache
|
|
270
|
+
const cached = this.featureHashes.get(feature);
|
|
271
|
+
if (cached !== undefined)
|
|
272
|
+
return cached;
|
|
273
|
+
// Compute hash
|
|
274
|
+
const hash = this.hashString(feature);
|
|
275
|
+
this.featureHashes.set(feature, hash);
|
|
276
|
+
return hash;
|
|
277
|
+
}
|
|
278
|
+
hashString(str) {
|
|
279
|
+
let hash = 0;
|
|
280
|
+
for (let i = 0; i < str.length; i++) {
|
|
281
|
+
const char = str.charCodeAt(i);
|
|
282
|
+
hash = ((hash << 5) - hash) + char;
|
|
283
|
+
hash = hash & hash;
|
|
284
|
+
}
|
|
285
|
+
return Math.abs(hash);
|
|
286
|
+
}
|
|
287
|
+
bucketize(value, thresholds) {
|
|
288
|
+
for (let i = 0; i < thresholds.length; i++) {
|
|
289
|
+
if (value < thresholds[i]) {
|
|
290
|
+
return `lt${thresholds[i]}`;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return `gte${thresholds[thresholds.length - 1]}`;
|
|
294
|
+
}
|
|
295
|
+
normalizeEncoding(encoding) {
|
|
296
|
+
let norm = 0;
|
|
297
|
+
for (let i = 0; i < encoding.length; i++) {
|
|
298
|
+
norm += encoding[i] * encoding[i];
|
|
299
|
+
}
|
|
300
|
+
norm = Math.sqrt(norm);
|
|
301
|
+
if (norm > 0) {
|
|
302
|
+
for (let i = 0; i < encoding.length; i++) {
|
|
303
|
+
encoding[i] /= norm;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
sparsify(encoding, keepCount) {
|
|
308
|
+
// Find threshold to keep top-k values
|
|
309
|
+
const absValues = Array.from(encoding).map(Math.abs);
|
|
310
|
+
absValues.sort((a, b) => b - a);
|
|
311
|
+
const threshold = absValues[Math.min(keepCount - 1, absValues.length - 1)] ?? 0;
|
|
312
|
+
// Zero out values below threshold
|
|
313
|
+
for (let i = 0; i < encoding.length; i++) {
|
|
314
|
+
if (Math.abs(encoding[i]) < threshold) {
|
|
315
|
+
encoding[i] = 0;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
computeCacheKey(spans) {
|
|
320
|
+
if (spans.length === 0)
|
|
321
|
+
return 'empty';
|
|
322
|
+
if (spans.length > 100) {
|
|
323
|
+
// Sample for large span sets
|
|
324
|
+
return `${spans.length}_${spans[0].traceId}_${spans[spans.length - 1].traceId}`;
|
|
325
|
+
}
|
|
326
|
+
return spans.map(s => s.spanId).join('_');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Create a new sparse bridge instance
|
|
331
|
+
*/
|
|
332
|
+
export function createPerfSparseBridge(config) {
|
|
333
|
+
return new PerfSparseBridge(config);
|
|
334
|
+
}
|
|
335
|
+
//# sourceMappingURL=sparse-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sparse-bridge.js","sourceRoot":"","sources":["../../src/bridges/sparse-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @claude-flow/plugin-perf-optimizer
|
|
3
|
+
*
|
|
4
|
+
* AI-powered performance optimization plugin for Claude Flow V3.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Bottleneck detection using trace analysis
|
|
8
|
+
* - Memory leak detection and analysis
|
|
9
|
+
* - Database query optimization (N+1, missing indexes)
|
|
10
|
+
* - JavaScript bundle optimization
|
|
11
|
+
* - Configuration tuning with SONA learning
|
|
12
|
+
*
|
|
13
|
+
* Uses RuVector WASM packages for high-performance analysis:
|
|
14
|
+
* - ruvector-sparse-inference-wasm: Efficient trace processing
|
|
15
|
+
* - ruvector-fpga-transformer-wasm: Fast configuration optimization
|
|
16
|
+
* - ruvector-gnn-wasm: Dependency chain analysis
|
|
17
|
+
*/
|
|
18
|
+
export * from './types.js';
|
|
19
|
+
export { bottleneckDetectTool, memoryAnalyzeTool, queryOptimizeTool, bundleOptimizeTool, configOptimizeTool, perfOptimizerTools, } from './mcp-tools.js';
|
|
20
|
+
export { PerfSparseBridge, createPerfSparseBridge } from './bridges/sparse-bridge.js';
|
|
21
|
+
export { PerfFpgaBridge, createPerfFpgaBridge } from './bridges/fpga-bridge.js';
|
|
22
|
+
export declare const pluginMetadata: {
|
|
23
|
+
name: string;
|
|
24
|
+
version: string;
|
|
25
|
+
description: string;
|
|
26
|
+
category: string;
|
|
27
|
+
tags: string[];
|
|
28
|
+
author: string;
|
|
29
|
+
license: string;
|
|
30
|
+
repository: string;
|
|
31
|
+
engines: {
|
|
32
|
+
'claude-flow': string;
|
|
33
|
+
node: string;
|
|
34
|
+
};
|
|
35
|
+
capabilities: {
|
|
36
|
+
mcpTools: string[];
|
|
37
|
+
bridges: string[];
|
|
38
|
+
wasmPackages: string[];
|
|
39
|
+
};
|
|
40
|
+
performanceTargets: {
|
|
41
|
+
traceAnalysis: string;
|
|
42
|
+
memoryAnalysis: string;
|
|
43
|
+
queryPatternDetection: string;
|
|
44
|
+
bundleAnalysis: string;
|
|
45
|
+
configOptimization: string;
|
|
46
|
+
};
|
|
47
|
+
supportedFormats: {
|
|
48
|
+
tracing: string[];
|
|
49
|
+
profiling: string[];
|
|
50
|
+
memory: string[];
|
|
51
|
+
bundles: string[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export interface PerfOptimizerPluginOptions {
|
|
55
|
+
sparseConfig?: {
|
|
56
|
+
maxDimensions?: number;
|
|
57
|
+
sparsityRatio?: number;
|
|
58
|
+
hashBuckets?: number;
|
|
59
|
+
};
|
|
60
|
+
fpgaConfig?: {
|
|
61
|
+
modelSize?: 'small' | 'medium' | 'large';
|
|
62
|
+
searchIterations?: number;
|
|
63
|
+
explorationRate?: number;
|
|
64
|
+
bayesianOptimization?: boolean;
|
|
65
|
+
};
|
|
66
|
+
bottleneck?: {
|
|
67
|
+
latencyThresholdMs?: number;
|
|
68
|
+
errorRateThreshold?: number;
|
|
69
|
+
cpuThreshold?: number;
|
|
70
|
+
memoryThreshold?: number;
|
|
71
|
+
};
|
|
72
|
+
memory?: {
|
|
73
|
+
leakThresholdMb?: number;
|
|
74
|
+
gcPressureThreshold?: number;
|
|
75
|
+
maxHeapSize?: number;
|
|
76
|
+
};
|
|
77
|
+
query?: {
|
|
78
|
+
slowQueryThresholdMs?: number;
|
|
79
|
+
maxResultSize?: number;
|
|
80
|
+
indexSuggestionEnabled?: boolean;
|
|
81
|
+
};
|
|
82
|
+
bundle?: {
|
|
83
|
+
maxSizeKb?: number;
|
|
84
|
+
treeshakingEnabled?: boolean;
|
|
85
|
+
codeSplittingEnabled?: boolean;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Initialize the performance optimizer plugin
|
|
90
|
+
*/
|
|
91
|
+
export declare function initializePlugin(options?: PerfOptimizerPluginOptions): Promise<{
|
|
92
|
+
sparseBridge: InstanceType<typeof import('./bridges/sparse-bridge.js').PerfSparseBridge>;
|
|
93
|
+
fpgaBridge: InstanceType<typeof import('./bridges/fpga-bridge.js').PerfFpgaBridge>;
|
|
94
|
+
tools: typeof import('./mcp-tools.js').perfOptimizerTools;
|
|
95
|
+
}>;
|
|
96
|
+
/**
|
|
97
|
+
* Plugin entry point for Claude Flow plugin loader
|
|
98
|
+
*/
|
|
99
|
+
declare const _default: {
|
|
100
|
+
metadata: {
|
|
101
|
+
name: string;
|
|
102
|
+
version: string;
|
|
103
|
+
description: string;
|
|
104
|
+
category: string;
|
|
105
|
+
tags: string[];
|
|
106
|
+
author: string;
|
|
107
|
+
license: string;
|
|
108
|
+
repository: string;
|
|
109
|
+
engines: {
|
|
110
|
+
'claude-flow': string;
|
|
111
|
+
node: string;
|
|
112
|
+
};
|
|
113
|
+
capabilities: {
|
|
114
|
+
mcpTools: string[];
|
|
115
|
+
bridges: string[];
|
|
116
|
+
wasmPackages: string[];
|
|
117
|
+
};
|
|
118
|
+
performanceTargets: {
|
|
119
|
+
traceAnalysis: string;
|
|
120
|
+
memoryAnalysis: string;
|
|
121
|
+
queryPatternDetection: string;
|
|
122
|
+
bundleAnalysis: string;
|
|
123
|
+
configOptimization: string;
|
|
124
|
+
};
|
|
125
|
+
supportedFormats: {
|
|
126
|
+
tracing: string[];
|
|
127
|
+
profiling: string[];
|
|
128
|
+
memory: string[];
|
|
129
|
+
bundles: string[];
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
initialize: typeof initializePlugin;
|
|
133
|
+
};
|
|
134
|
+
export default _default;
|
|
135
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C1B,CAAC;AAGF,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;QACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC;IACT,YAAY,EAAE,YAAY,CAAC,cAAc,4BAA4B,EAAE,gBAAgB,CAAC,CAAC;IACzF,UAAU,EAAE,YAAY,CAAC,cAAc,0BAA0B,EAAE,cAAc,CAAC,CAAC;IACnF,KAAK,EAAE,cAAc,gBAAgB,EAAE,kBAAkB,CAAC;CAC3D,CAAC,CAkBD;AAED;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAGE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @claude-flow/plugin-perf-optimizer
|
|
3
|
+
*
|
|
4
|
+
* AI-powered performance optimization plugin for Claude Flow V3.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Bottleneck detection using trace analysis
|
|
8
|
+
* - Memory leak detection and analysis
|
|
9
|
+
* - Database query optimization (N+1, missing indexes)
|
|
10
|
+
* - JavaScript bundle optimization
|
|
11
|
+
* - Configuration tuning with SONA learning
|
|
12
|
+
*
|
|
13
|
+
* Uses RuVector WASM packages for high-performance analysis:
|
|
14
|
+
* - ruvector-sparse-inference-wasm: Efficient trace processing
|
|
15
|
+
* - ruvector-fpga-transformer-wasm: Fast configuration optimization
|
|
16
|
+
* - ruvector-gnn-wasm: Dependency chain analysis
|
|
17
|
+
*/
|
|
18
|
+
// Types
|
|
19
|
+
export * from './types.js';
|
|
20
|
+
// MCP Tools
|
|
21
|
+
export { bottleneckDetectTool, memoryAnalyzeTool, queryOptimizeTool, bundleOptimizeTool, configOptimizeTool, perfOptimizerTools, } from './mcp-tools.js';
|
|
22
|
+
// Bridges
|
|
23
|
+
export { PerfSparseBridge, createPerfSparseBridge } from './bridges/sparse-bridge.js';
|
|
24
|
+
export { PerfFpgaBridge, createPerfFpgaBridge } from './bridges/fpga-bridge.js';
|
|
25
|
+
// Plugin metadata
|
|
26
|
+
export const pluginMetadata = {
|
|
27
|
+
name: '@claude-flow/plugin-perf-optimizer',
|
|
28
|
+
version: '3.0.0-alpha.1',
|
|
29
|
+
description: 'AI-powered performance optimization for bottleneck detection, memory analysis, and configuration tuning',
|
|
30
|
+
category: 'performance',
|
|
31
|
+
tags: ['performance', 'optimization', 'tracing', 'memory', 'database', 'bundle'],
|
|
32
|
+
author: 'Claude Flow Team',
|
|
33
|
+
license: 'MIT',
|
|
34
|
+
repository: 'https://github.com/ruvnet/claude-flow',
|
|
35
|
+
engines: {
|
|
36
|
+
'claude-flow': '>=3.0.0-alpha.1',
|
|
37
|
+
node: '>=18.0.0',
|
|
38
|
+
},
|
|
39
|
+
capabilities: {
|
|
40
|
+
mcpTools: [
|
|
41
|
+
'perf/bottleneck-detect',
|
|
42
|
+
'perf/memory-analyze',
|
|
43
|
+
'perf/query-optimize',
|
|
44
|
+
'perf/bundle-optimize',
|
|
45
|
+
'perf/config-optimize',
|
|
46
|
+
],
|
|
47
|
+
bridges: ['sparse', 'fpga'],
|
|
48
|
+
wasmPackages: [
|
|
49
|
+
'ruvector-sparse-inference-wasm',
|
|
50
|
+
'ruvector-fpga-transformer-wasm',
|
|
51
|
+
'ruvector-gnn-wasm',
|
|
52
|
+
'micro-hnsw-wasm',
|
|
53
|
+
'sona',
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
performanceTargets: {
|
|
57
|
+
traceAnalysis: '<5s for 1M spans',
|
|
58
|
+
memoryAnalysis: '<30s for 1GB heap',
|
|
59
|
+
queryPatternDetection: '<1s for 10K queries',
|
|
60
|
+
bundleAnalysis: '<10s for 10MB bundle',
|
|
61
|
+
configOptimization: '<1min convergence',
|
|
62
|
+
},
|
|
63
|
+
supportedFormats: {
|
|
64
|
+
tracing: ['otlp', 'jaeger', 'zipkin', 'chrome_devtools'],
|
|
65
|
+
profiling: ['chrome_cpu_profile', 'nodejs_profile', 'pprof'],
|
|
66
|
+
memory: ['chrome_heap_snapshot', 'nodejs_heap'],
|
|
67
|
+
bundles: ['webpack_stats', 'vite_stats', 'rollup'],
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the performance optimizer plugin
|
|
72
|
+
*/
|
|
73
|
+
export async function initializePlugin(options) {
|
|
74
|
+
const { createPerfSparseBridge } = await import('./bridges/sparse-bridge.js');
|
|
75
|
+
const { createPerfFpgaBridge } = await import('./bridges/fpga-bridge.js');
|
|
76
|
+
const { perfOptimizerTools } = await import('./mcp-tools.js');
|
|
77
|
+
const sparseBridge = createPerfSparseBridge(options?.sparseConfig);
|
|
78
|
+
const fpgaBridge = createPerfFpgaBridge(options?.fpgaConfig);
|
|
79
|
+
await Promise.all([
|
|
80
|
+
sparseBridge.init(),
|
|
81
|
+
fpgaBridge.init(),
|
|
82
|
+
]);
|
|
83
|
+
return {
|
|
84
|
+
sparseBridge,
|
|
85
|
+
fpgaBridge,
|
|
86
|
+
tools: perfOptimizerTools,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Plugin entry point for Claude Flow plugin loader
|
|
91
|
+
*/
|
|
92
|
+
export default {
|
|
93
|
+
metadata: pluginMetadata,
|
|
94
|
+
initialize: initializePlugin,
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,kBAAkB;AAClB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,oCAAoC;IAC1C,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,yGAAyG;IACtH,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChF,MAAM,EAAE,kBAAkB;IAC1B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,uCAAuC;IACnD,OAAO,EAAE;QACP,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,UAAU;KACjB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE;YACR,wBAAwB;YACxB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,sBAAsB;SACvB;QACD,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC3B,YAAY,EAAE;YACZ,gCAAgC;YAChC,gCAAgC;YAChC,mBAAmB;YACnB,iBAAiB;YACjB,MAAM;SACP;KACF;IACD,kBAAkB,EAAE;QAClB,aAAa,EAAE,kBAAkB;QACjC,cAAc,EAAE,mBAAmB;QACnC,qBAAqB,EAAE,qBAAqB;QAC5C,cAAc,EAAE,sBAAsB;QACtC,kBAAkB,EAAE,mBAAmB;KACxC;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC;QACxD,SAAS,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAC5D,MAAM,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,CAAC;KACnD;CACF,CAAC;AAsCF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAoC;IAMpC,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC9E,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC1E,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAE7D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,YAAY,CAAC,IAAI,EAAE;QACnB,UAAU,CAAC,IAAI,EAAE;KAClB,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,UAAU;QACV,KAAK,EAAE,kBAAkB;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,eAAe;IACb,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;CAC7B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Optimizer MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* 5 MCP tools for AI-powered performance optimization:
|
|
5
|
+
* 1. perf/bottleneck-detect - Detect performance bottlenecks
|
|
6
|
+
* 2. perf/memory-analyze - Analyze memory usage and leaks
|
|
7
|
+
* 3. perf/query-optimize - Detect and optimize query patterns
|
|
8
|
+
* 4. perf/bundle-optimize - Optimize JavaScript bundles
|
|
9
|
+
* 5. perf/config-optimize - Optimize configuration parameters
|
|
10
|
+
*/
|
|
11
|
+
import type { MCPTool } from './types.js';
|
|
12
|
+
export declare const bottleneckDetectTool: MCPTool;
|
|
13
|
+
export declare const memoryAnalyzeTool: MCPTool;
|
|
14
|
+
export declare const queryOptimizeTool: MCPTool;
|
|
15
|
+
export declare const bundleOptimizeTool: MCPTool;
|
|
16
|
+
export declare const configOptimizeTool: MCPTool;
|
|
17
|
+
export declare const perfOptimizerTools: MCPTool[];
|
|
18
|
+
/**
|
|
19
|
+
* Get a tool by name
|
|
20
|
+
*/
|
|
21
|
+
export declare function getTool(name: string): MCPTool | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Get all tool names
|
|
24
|
+
*/
|
|
25
|
+
export declare function getToolNames(): string[];
|
|
26
|
+
//# sourceMappingURL=mcp-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tools.d.ts","sourceRoot":"","sources":["../src/mcp-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,OAAO,EAgBR,MAAM,YAAY,CAAC;AAkGpB,eAAO,MAAM,oBAAoB,EAAE,OA+BlC,CAAC;AAwDF,eAAO,MAAM,iBAAiB,EAAE,OAiB/B,CAAC;AAmEF,eAAO,MAAM,iBAAiB,EAAE,OA4B/B,CAAC;AAsDF,eAAO,MAAM,kBAAkB,EAAE,OAwBhC,CAAC;AAyEF,eAAO,MAAM,kBAAkB,EAAE,OAwBhC,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAMvC,CAAC;AAgjBF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAEvC"}
|