agentic-qe 2.8.0 → 2.8.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/CHANGELOG.md +105 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +128 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +256 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/cli/commands/supabase/index.d.ts +20 -0
- package/dist/cli/commands/supabase/index.d.ts.map +1 -0
- package/dist/cli/commands/supabase/index.js +632 -0
- package/dist/cli/commands/supabase/index.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
- package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
- package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/index.js +9 -0
- package/dist/mcp/handlers/ruvector/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +100 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.js +882 -0
- package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
- package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
- package/dist/nervous-system/index.d.ts +25 -0
- package/dist/nervous-system/index.d.ts.map +1 -0
- package/dist/nervous-system/index.js +80 -0
- package/dist/nervous-system/index.js.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.js +696 -0
- package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
- package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
- package/dist/nervous-system/integration/index.d.ts +22 -0
- package/dist/nervous-system/integration/index.d.ts.map +1 -0
- package/dist/nervous-system/integration/index.js +44 -0
- package/dist/nervous-system/integration/index.js.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
- package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/index.d.ts +22 -0
- package/dist/nervous-system/persistence/index.d.ts.map +1 -0
- package/dist/nervous-system/persistence/index.js +45 -0
- package/dist/nervous-system/persistence/index.js.map +1 -0
- package/dist/nervous-system/wasm-loader.d.ts +52 -0
- package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
- package/dist/nervous-system/wasm-loader.js +188 -0
- package/dist/nervous-system/wasm-loader.js.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.js +1086 -0
- package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
- package/dist/persistence/IPersistenceProvider.d.ts +657 -0
- package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/IPersistenceProvider.js +11 -0
- package/dist/persistence/IPersistenceProvider.js.map +1 -0
- package/dist/persistence/SupabaseConfig.d.ts +176 -0
- package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
- package/dist/persistence/SupabaseConfig.js +277 -0
- package/dist/persistence/SupabaseConfig.js.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.js +955 -0
- package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/index.d.ts +11 -0
- package/dist/persistence/adapters/index.d.ts.map +1 -0
- package/dist/persistence/adapters/index.js +20 -0
- package/dist/persistence/adapters/index.js.map +1 -0
- package/dist/persistence/index.d.ts +14 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +36 -1
- package/dist/persistence/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RuVector GNN Cache Handler
|
|
4
|
+
*
|
|
5
|
+
* MCP handler for the 6 RuVector GNN self-learning cache tools:
|
|
6
|
+
* - ruvector_health: Check cache health and GNN status
|
|
7
|
+
* - ruvector_metrics: Get performance metrics
|
|
8
|
+
* - ruvector_force_learn: Force LoRA learning consolidation
|
|
9
|
+
* - ruvector_store_pattern: Store a pattern in cache
|
|
10
|
+
* - ruvector_search: Search for patterns with GNN-enhanced matching
|
|
11
|
+
* - ruvector_cost_savings: Get cost savings report
|
|
12
|
+
*
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
* @author Agentic QE Team
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.RuVectorHandler = void 0;
|
|
18
|
+
const base_handler_js_1 = require("../base-handler.js");
|
|
19
|
+
const RuVectorPatternStore_js_1 = require("../../../core/memory/RuVectorPatternStore.js");
|
|
20
|
+
/**
|
|
21
|
+
* Singleton instance for the pattern store
|
|
22
|
+
*/
|
|
23
|
+
let patternStoreInstance = null;
|
|
24
|
+
/**
|
|
25
|
+
* Get or create the shared pattern store instance
|
|
26
|
+
*/
|
|
27
|
+
async function getPatternStore() {
|
|
28
|
+
if (!patternStoreInstance) {
|
|
29
|
+
patternStoreInstance = (0, RuVectorPatternStore_js_1.createQEPatternStore)('.agentic-qe/ruvector-cache.db');
|
|
30
|
+
await patternStoreInstance.initialize();
|
|
31
|
+
}
|
|
32
|
+
return patternStoreInstance;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handler for RuVector GNN Cache tools
|
|
36
|
+
*/
|
|
37
|
+
class RuVectorHandler extends base_handler_js_1.BaseHandler {
|
|
38
|
+
constructor(registry, hookExecutor) {
|
|
39
|
+
super();
|
|
40
|
+
this.registry = registry;
|
|
41
|
+
this.hookExecutor = hookExecutor;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Main handler routing (not used - direct method calls from server)
|
|
45
|
+
*/
|
|
46
|
+
async handle(args) {
|
|
47
|
+
return this.createErrorResponse('Use direct method calls for RuVector tools');
|
|
48
|
+
}
|
|
49
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
50
|
+
// RUVECTOR HEALTH CHECK
|
|
51
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
52
|
+
/**
|
|
53
|
+
* Check RuVector GNN cache health and learning status
|
|
54
|
+
*/
|
|
55
|
+
async handleRuvectorHealth(params) {
|
|
56
|
+
return this.safeHandle(async () => {
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
const store = await getPatternStore();
|
|
59
|
+
const stats = await store.getStats();
|
|
60
|
+
const implInfo = store.getImplementationInfo();
|
|
61
|
+
return {
|
|
62
|
+
success: true,
|
|
63
|
+
data: {
|
|
64
|
+
status: 'healthy',
|
|
65
|
+
implementation: implInfo.type,
|
|
66
|
+
version: implInfo.version,
|
|
67
|
+
features: implInfo.features,
|
|
68
|
+
vectorCount: stats.count,
|
|
69
|
+
dimension: stats.dimension,
|
|
70
|
+
metric: stats.metric,
|
|
71
|
+
memoryUsage: stats.memoryUsage,
|
|
72
|
+
gnnStatus: implInfo.features.includes('gnn-learning') ? 'enabled' : 'disabled',
|
|
73
|
+
loraStatus: implInfo.features.includes('lora') ? 'active' : 'inactive',
|
|
74
|
+
},
|
|
75
|
+
metadata: {
|
|
76
|
+
executionTime: Date.now() - startTime,
|
|
77
|
+
timestamp: new Date().toISOString(),
|
|
78
|
+
requestId: `ruvector-health-${Date.now()}`,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
84
|
+
// RUVECTOR METRICS
|
|
85
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
86
|
+
/**
|
|
87
|
+
* Get RuVector cache performance metrics
|
|
88
|
+
*/
|
|
89
|
+
async handleRuvectorMetrics(params) {
|
|
90
|
+
return this.safeHandle(async () => {
|
|
91
|
+
const startTime = Date.now();
|
|
92
|
+
const detailed = params.detailed === true;
|
|
93
|
+
const store = await getPatternStore();
|
|
94
|
+
const stats = await store.getStats();
|
|
95
|
+
const implInfo = store.getImplementationInfo();
|
|
96
|
+
const metrics = {
|
|
97
|
+
patternCount: stats.count,
|
|
98
|
+
qps: stats.qps ?? 0,
|
|
99
|
+
p50LatencyMs: stats.p50Latency ?? 0,
|
|
100
|
+
p99LatencyMs: stats.p99Latency ?? 0,
|
|
101
|
+
memoryUsageMB: stats.memoryUsage ? Math.round(stats.memoryUsage / 1024 / 1024 * 100) / 100 : 0,
|
|
102
|
+
};
|
|
103
|
+
if (detailed) {
|
|
104
|
+
metrics.implementation = implInfo.type;
|
|
105
|
+
metrics.features = implInfo.features;
|
|
106
|
+
metrics.dimension = stats.dimension;
|
|
107
|
+
metrics.metric = stats.metric;
|
|
108
|
+
metrics.indexType = stats.indexType;
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
success: true,
|
|
112
|
+
data: metrics,
|
|
113
|
+
metadata: {
|
|
114
|
+
executionTime: Date.now() - startTime,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
requestId: `ruvector-metrics-${Date.now()}`,
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
122
|
+
// RUVECTOR FORCE LEARN
|
|
123
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
124
|
+
/**
|
|
125
|
+
* Force LoRA learning consolidation in RuVector
|
|
126
|
+
*/
|
|
127
|
+
async handleRuvectorForceLearn(params) {
|
|
128
|
+
return this.safeHandle(async () => {
|
|
129
|
+
const startTime = Date.now();
|
|
130
|
+
const domain = params.domain;
|
|
131
|
+
const store = await getPatternStore();
|
|
132
|
+
// Call forceGNNLearn if available
|
|
133
|
+
let result;
|
|
134
|
+
if (typeof store.forceGNNLearn === 'function') {
|
|
135
|
+
result = await store.forceGNNLearn({ domain });
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// Fallback - just report current state
|
|
139
|
+
const stats = await store.getStats();
|
|
140
|
+
result = {
|
|
141
|
+
success: true,
|
|
142
|
+
patternsConsolidated: stats.count,
|
|
143
|
+
duration: Date.now() - startTime,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
success: result.success,
|
|
148
|
+
data: {
|
|
149
|
+
patternsConsolidated: result.patternsConsolidated,
|
|
150
|
+
ewcLoss: result.ewcLoss,
|
|
151
|
+
learningDuration: result.duration,
|
|
152
|
+
domain: domain ?? 'all',
|
|
153
|
+
},
|
|
154
|
+
metadata: {
|
|
155
|
+
executionTime: Date.now() - startTime,
|
|
156
|
+
timestamp: new Date().toISOString(),
|
|
157
|
+
requestId: `ruvector-learn-${Date.now()}`,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
163
|
+
// RUVECTOR STORE PATTERN
|
|
164
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
165
|
+
/**
|
|
166
|
+
* Store a pattern in RuVector cache
|
|
167
|
+
*/
|
|
168
|
+
async handleRuvectorStorePattern(params) {
|
|
169
|
+
return this.safeHandle(async () => {
|
|
170
|
+
const startTime = Date.now();
|
|
171
|
+
// Validate required fields
|
|
172
|
+
const patternId = params.id;
|
|
173
|
+
const content = params.content;
|
|
174
|
+
const domain = params.domain;
|
|
175
|
+
const embedding = params.embedding;
|
|
176
|
+
if (!patternId) {
|
|
177
|
+
throw new Error('Pattern id is required');
|
|
178
|
+
}
|
|
179
|
+
if (!content) {
|
|
180
|
+
throw new Error('Pattern content is required');
|
|
181
|
+
}
|
|
182
|
+
if (!domain) {
|
|
183
|
+
throw new Error('Pattern domain is required');
|
|
184
|
+
}
|
|
185
|
+
if (!embedding || !Array.isArray(embedding)) {
|
|
186
|
+
throw new Error('Pattern embedding (number array) is required');
|
|
187
|
+
}
|
|
188
|
+
const pattern = {
|
|
189
|
+
id: patternId,
|
|
190
|
+
content,
|
|
191
|
+
domain,
|
|
192
|
+
embedding,
|
|
193
|
+
type: params.type ?? 'test-pattern',
|
|
194
|
+
framework: params.framework,
|
|
195
|
+
coverage: params.coverage,
|
|
196
|
+
flakinessScore: params.flakinessScore,
|
|
197
|
+
verdict: params.verdict ?? 'success',
|
|
198
|
+
metadata: params.metadata,
|
|
199
|
+
};
|
|
200
|
+
const store = await getPatternStore();
|
|
201
|
+
await store.storePattern(pattern);
|
|
202
|
+
return {
|
|
203
|
+
success: true,
|
|
204
|
+
data: {
|
|
205
|
+
patternId: pattern.id,
|
|
206
|
+
domain: pattern.domain,
|
|
207
|
+
storedAt: new Date().toISOString(),
|
|
208
|
+
},
|
|
209
|
+
metadata: {
|
|
210
|
+
executionTime: Date.now() - startTime,
|
|
211
|
+
timestamp: new Date().toISOString(),
|
|
212
|
+
requestId: `ruvector-store-${Date.now()}`,
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
218
|
+
// RUVECTOR SEARCH
|
|
219
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
220
|
+
/**
|
|
221
|
+
* Search RuVector cache for similar patterns
|
|
222
|
+
*/
|
|
223
|
+
async handleRuvectorSearch(params) {
|
|
224
|
+
return this.safeHandle(async () => {
|
|
225
|
+
const startTime = Date.now();
|
|
226
|
+
const embedding = params.embedding;
|
|
227
|
+
if (!embedding || !Array.isArray(embedding)) {
|
|
228
|
+
throw new Error('Search embedding (number array) is required');
|
|
229
|
+
}
|
|
230
|
+
const k = params.k ?? 10;
|
|
231
|
+
const threshold = params.threshold ?? 0;
|
|
232
|
+
const domain = params.domain;
|
|
233
|
+
const type = params.type;
|
|
234
|
+
const framework = params.framework;
|
|
235
|
+
const useMMR = params.useMMR === true;
|
|
236
|
+
const store = await getPatternStore();
|
|
237
|
+
const results = await store.searchSimilar(embedding, {
|
|
238
|
+
k,
|
|
239
|
+
threshold,
|
|
240
|
+
domain,
|
|
241
|
+
type,
|
|
242
|
+
framework,
|
|
243
|
+
useMMR,
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
success: true,
|
|
247
|
+
data: {
|
|
248
|
+
matches: results.map(r => ({
|
|
249
|
+
id: r.pattern.id,
|
|
250
|
+
score: r.score,
|
|
251
|
+
domain: r.pattern.domain,
|
|
252
|
+
content: r.pattern.content,
|
|
253
|
+
type: r.pattern.type,
|
|
254
|
+
framework: r.pattern.framework,
|
|
255
|
+
})),
|
|
256
|
+
totalResults: results.length,
|
|
257
|
+
searchParams: { k, threshold, domain, type, framework, useMMR },
|
|
258
|
+
},
|
|
259
|
+
metadata: {
|
|
260
|
+
executionTime: Date.now() - startTime,
|
|
261
|
+
timestamp: new Date().toISOString(),
|
|
262
|
+
requestId: `ruvector-search-${Date.now()}`,
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
268
|
+
// RUVECTOR COST SAVINGS
|
|
269
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
270
|
+
/**
|
|
271
|
+
* Get cost savings report from RuVector cache usage
|
|
272
|
+
*/
|
|
273
|
+
async handleRuvectorCostSavings(params) {
|
|
274
|
+
return this.safeHandle(async () => {
|
|
275
|
+
const startTime = Date.now();
|
|
276
|
+
const store = await getPatternStore();
|
|
277
|
+
const stats = await store.getStats();
|
|
278
|
+
// Get pattern count as a proxy for cache hits (patterns can be reused)
|
|
279
|
+
const patternCount = stats.count;
|
|
280
|
+
const p50LatencyMs = stats.p50Latency ?? 1;
|
|
281
|
+
// Estimate queries based on pattern count (rough estimation)
|
|
282
|
+
const estimatedQueries = patternCount * 10; // Assume each pattern is used ~10 times on average
|
|
283
|
+
const estimatedCacheHits = Math.round(estimatedQueries * 0.7); // 70% hit rate assumption
|
|
284
|
+
// Estimated cost per LLM call (average)
|
|
285
|
+
const costPerLLMCall = 0.01; // $0.01 per call assumption
|
|
286
|
+
const estimatedSavings = estimatedCacheHits * costPerLLMCall;
|
|
287
|
+
// Time savings (avg LLM call ~500ms, cache hit ~1ms)
|
|
288
|
+
const avgLLMLatencyMs = 500;
|
|
289
|
+
const timeSavedMs = estimatedCacheHits * (avgLLMLatencyMs - p50LatencyMs);
|
|
290
|
+
const timeSavedSeconds = Math.round(timeSavedMs / 1000);
|
|
291
|
+
return {
|
|
292
|
+
success: true,
|
|
293
|
+
data: {
|
|
294
|
+
summary: {
|
|
295
|
+
patternCount,
|
|
296
|
+
estimatedQueries,
|
|
297
|
+
estimatedCacheHits,
|
|
298
|
+
estimatedHitRate: 70, // Percentage
|
|
299
|
+
},
|
|
300
|
+
costSavings: {
|
|
301
|
+
estimatedDollarsSaved: Math.round(estimatedSavings * 100) / 100,
|
|
302
|
+
llmCallsAvoided: estimatedCacheHits,
|
|
303
|
+
costPerLLMCall,
|
|
304
|
+
},
|
|
305
|
+
timeSavings: {
|
|
306
|
+
totalSecondsSaved: timeSavedSeconds,
|
|
307
|
+
avgCacheLatencyMs: Math.round(p50LatencyMs * 100) / 100,
|
|
308
|
+
avgLLMLatencyMs,
|
|
309
|
+
},
|
|
310
|
+
efficiency: {
|
|
311
|
+
qps: stats.qps ?? 0,
|
|
312
|
+
implementation: stats.implementation,
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
metadata: {
|
|
316
|
+
executionTime: Date.now() - startTime,
|
|
317
|
+
timestamp: new Date().toISOString(),
|
|
318
|
+
requestId: `ruvector-cost-${Date.now()}`,
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
exports.RuVectorHandler = RuVectorHandler;
|
|
325
|
+
//# sourceMappingURL=RuVectorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuVectorHandler.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/ruvector/RuVectorHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/ruvector/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RuVectorHandler = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* RuVector Handler exports
|
|
6
|
+
*/
|
|
7
|
+
var RuVectorHandler_js_1 = require("./RuVectorHandler.js");
|
|
8
|
+
Object.defineProperty(exports, "RuVectorHandler", { enumerable: true, get: function () { return RuVectorHandler_js_1.RuVectorHandler; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/ruvector/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,2DAAuD;AAA9C,qHAAA,eAAe,OAAA"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const SERVER_INSTRUCTIONS = "\n# Agentic QE Fleet - MCP Tool Guide\n\n## Overview\nAgentic QE provides 105 specialized quality engineering tools organized into a hierarchical system for efficient context usage.\n\n## Quick Start\n1. **Discover available tools:** Use `tools_discover` to see all domains\n2. **Load domain tools:** Use `tools_load_domain` to load specialized tools\n3. **Auto-loading:** Domain tools auto-load when relevant keywords are detected\n\n---\n\n## Core Tools (Always Available - 14 tools)\n\n### Fleet Management\n- `fleet_init` - Initialize QE fleet with topology\n- `agent_spawn` - Spawn specialized QE agent\n- `fleet_status` - Get fleet and agent status\n\n### Testing\n- `test_generate_enhanced` - AI test generation with pattern recognition\n- `test_execute_parallel` - Parallel test execution with retry\n- `test_report_comprehensive` - Multi-format test reports\n\n### Memory & Coordination\n- `memory_store` - Store data with TTL & namespacing\n- `memory_retrieve` - Retrieve stored data\n- `memory_query` - Pattern-based memory search\n\n### Quality & Orchestration\n- `quality_analyze` - Analyze quality metrics\n- `task_orchestrate` - Orchestrate tasks across agents\n- `task_status` - Check task progress\n\n### Discovery\n- `tools_discover` - List available tool domains\n- `tools_load_domain` - Load tools for a domain\n\n---\n\n## Domain Tools (Load as Needed)\n\n| Domain | Keywords | Tools | Use Case |\n|--------|----------|-------|----------|\n| **Security** | security, vulnerability, audit, owasp | 4 tools | Security scanning, vulnerability detection |\n| **Performance** | benchmark, bottleneck, profiling | 4 tools | Performance testing, bottleneck analysis |\n| **Coverage** | coverage, gap, uncovered | 5 tools | Coverage analysis, gap detection |\n| **Quality** | quality gate, deploy, release | 6 tools | Quality gates, deployment readiness |\n| **Flaky** | flaky, unstable, retry | 3 tools | Flaky test detection and stabilization |\n| **Visual** | screenshot, accessibility, wcag | 3 tools | Visual regression, accessibility testing |\n| **Requirements** | bdd, gherkin, acceptance | 2 tools | Requirements validation, BDD generation |\n\n### Loading Domain Tools\n```\n# Explicit load\ntools_load_domain({ domain: 'security' })\n\n# Auto-load: Just mention keywords in your request\n\"I need to run a security scan\" \u2192 Security tools auto-load\n```\n\n---\n\n## Specialized Tools (Expert Use)\n\n### Learning Domain (4 tools)\nFor persistent learning and pattern storage across sessions.\nLoad with: `tools_load_domain({ domain: 'learning' })`\n\n### Advanced Domain (7 tools)\nFor mutation testing, API contract validation, production incident replay.\nLoad with: `tools_load_domain({ domain: 'advanced' })`\n\n---\n\n## Best Practices\n\n1. **Start with core tools** - They handle 80% of use cases\n2. **Let auto-load work** - Mention keywords naturally\n3. **Use tools_discover** - When unsure what's available\n4. **Batch operations** - Use parallel execution for speed\n5. **Check fleet_status** - Monitor agent health\n\n---\n\n## Common Workflows\n\n### Test Generation & Execution\n1. `test_generate_enhanced` - Generate tests\n2. `test_execute_parallel` - Run tests\n3. `test_report_comprehensive` - Generate report\n\n### Quality Gate Check\n1. Load quality domain if not auto-loaded\n2. `quality_analyze` - Analyze metrics\n3. `qe_qualitygate_evaluate` - Make go/no-go decision\n\n### Security Audit\n1. `tools_load_domain({ domain: 'security' })`\n2. `qe_security_scan_comprehensive` - Full scan\n3. `qe_security_detect_vulnerabilities` - Detailed analysis\n\n---\n\n## Tool Naming Convention\nAll tools follow: `mcp__agentic_qe__<tool_name>`\n\nExample: `mcp__agentic_qe__test_generate_enhanced`\n";
|
|
8
8
|
export declare const SERVER_NAME = "agentic-qe";
|
|
9
|
-
export declare const SERVER_VERSION = "2.8.
|
|
9
|
+
export declare const SERVER_VERSION = "2.8.1";
|
|
10
10
|
/**
|
|
11
11
|
* Get formatted server info for MCP initialization
|
|
12
12
|
*/
|
|
@@ -119,7 +119,7 @@ All tools follow: \`mcp__agentic_qe__<tool_name>\`
|
|
|
119
119
|
Example: \`mcp__agentic_qe__test_generate_enhanced\`
|
|
120
120
|
`;
|
|
121
121
|
exports.SERVER_NAME = 'agentic-qe';
|
|
122
|
-
exports.SERVER_VERSION = '2.8.
|
|
122
|
+
exports.SERVER_VERSION = '2.8.1';
|
|
123
123
|
/**
|
|
124
124
|
* Get formatted server info for MCP initialization
|
|
125
125
|
*/
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AA+IjF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,CAAC,WAAW,CAAmB;IAEtC,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAA+B;;IA+CrD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4K1B;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+pB5B;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5D;;;OAGG;YACW,mBAAmB;IAsCjC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIR;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAIzE;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAuB1C"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -105,14 +105,15 @@ const learning_store_pattern_js_1 = require("./handlers/learning/learning-store-
|
|
|
105
105
|
const LearningEventListener_js_1 = require("./services/LearningEventListener.js");
|
|
106
106
|
const SleepScheduler_js_1 = require("../learning/scheduler/SleepScheduler.js");
|
|
107
107
|
const NewDomainToolsHandler_js_1 = require("./handlers/NewDomainToolsHandler.js");
|
|
108
|
+
const index_js_2 = require("./handlers/ruvector/index.js");
|
|
108
109
|
// Phase 3: Domain-specific tool functions
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const
|
|
110
|
+
const index_js_3 = require("./tools/qe/api-contract/index.js");
|
|
111
|
+
const index_js_4 = require("./tools/qe/accessibility/index.js");
|
|
112
|
+
const index_js_5 = require("./tools/qe/test-data/index.js");
|
|
113
|
+
const index_js_6 = require("./tools/qe/regression/index.js");
|
|
114
|
+
const index_js_7 = require("./tools/qe/requirements/index.js");
|
|
115
|
+
const index_js_8 = require("./tools/qe/code-quality/index.js");
|
|
116
|
+
const index_js_9 = require("./tools/qe/fleet/index.js");
|
|
116
117
|
/**
|
|
117
118
|
* Agentic QE MCP Server
|
|
118
119
|
*
|
|
@@ -302,6 +303,14 @@ class AgenticQEMCPServer {
|
|
|
302
303
|
this.handlers.set(tools_js_1.TOOL_NAMES.TEST_EXECUTE_FILTERED, newDomainHandler);
|
|
303
304
|
this.handlers.set(tools_js_1.TOOL_NAMES.PERFORMANCE_TEST_FILTERED, newDomainHandler);
|
|
304
305
|
this.handlers.set(tools_js_1.TOOL_NAMES.QUALITY_ASSESS_FILTERED, newDomainHandler);
|
|
306
|
+
// Phase 0.5: RuVector GNN Self-Learning Cache Tools (6 tools)
|
|
307
|
+
const ruvectorHandler = new index_js_2.RuVectorHandler(this.registry, this.hookExecutor);
|
|
308
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_HEALTH, ruvectorHandler);
|
|
309
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_METRICS, ruvectorHandler);
|
|
310
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_FORCE_LEARN, ruvectorHandler);
|
|
311
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_STORE_PATTERN, ruvectorHandler);
|
|
312
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_SEARCH, ruvectorHandler);
|
|
313
|
+
this.handlers.set(tools_js_1.TOOL_NAMES.RUVECTOR_COST_SAVINGS, ruvectorHandler);
|
|
305
314
|
}
|
|
306
315
|
/**
|
|
307
316
|
* Initialize Learning Event Listener (Phase 6 - Hybrid Approach)
|
|
@@ -755,61 +764,130 @@ class AgenticQEMCPServer {
|
|
|
755
764
|
}
|
|
756
765
|
// Accessibility Domain (1 tool)
|
|
757
766
|
else if (name === tools_js_1.TOOL_NAMES.A11Y_SCAN_COMPREHENSIVE) {
|
|
758
|
-
result = await (0,
|
|
767
|
+
result = await (0, index_js_4.scanComprehensive)(safeArgs);
|
|
759
768
|
}
|
|
760
769
|
// API-Contract Domain (3 tools)
|
|
761
770
|
else if (name === tools_js_1.TOOL_NAMES.QE_APICONTRACT_VALIDATE) {
|
|
762
|
-
result = await (0,
|
|
771
|
+
result = await (0, index_js_3.validateApiContract)(safeArgs);
|
|
763
772
|
}
|
|
764
773
|
else if (name === tools_js_1.TOOL_NAMES.QE_APICONTRACT_BREAKING_CHANGES) {
|
|
765
|
-
result = await (0,
|
|
774
|
+
result = await (0, index_js_3.detectBreakingChanges)(safeArgs);
|
|
766
775
|
}
|
|
767
776
|
else if (name === tools_js_1.TOOL_NAMES.QE_APICONTRACT_VERSIONING) {
|
|
768
|
-
result = await (0,
|
|
777
|
+
result = await (0, index_js_3.validateApiVersioning)(safeArgs);
|
|
769
778
|
}
|
|
770
779
|
// Test-Data Domain (3 tools)
|
|
771
780
|
else if (name === tools_js_1.TOOL_NAMES.QE_TESTDATA_GENERATE) {
|
|
772
|
-
result = await (0,
|
|
781
|
+
result = await (0, index_js_5.generateTestData)(safeArgs);
|
|
773
782
|
}
|
|
774
783
|
else if (name === tools_js_1.TOOL_NAMES.QE_TESTDATA_MASK) {
|
|
775
|
-
result = await (0,
|
|
784
|
+
result = await (0, index_js_5.maskSensitiveData)(safeArgs);
|
|
776
785
|
}
|
|
777
786
|
else if (name === tools_js_1.TOOL_NAMES.QE_TESTDATA_SCHEMA) {
|
|
778
|
-
result = await (0,
|
|
787
|
+
result = await (0, index_js_5.analyzeSchema)(safeArgs);
|
|
779
788
|
}
|
|
780
789
|
// Regression Domain (2 tools)
|
|
781
790
|
else if (name === tools_js_1.TOOL_NAMES.QE_REGRESSION_ANALYZE_RISK) {
|
|
782
|
-
result = await (0,
|
|
791
|
+
result = await (0, index_js_6.analyzeRegressionRisk)(safeArgs);
|
|
783
792
|
}
|
|
784
793
|
else if (name === tools_js_1.TOOL_NAMES.QE_REGRESSION_SELECT_TESTS) {
|
|
785
|
-
result = await (0,
|
|
794
|
+
result = await (0, index_js_6.selectRegressionTests)(safeArgs);
|
|
786
795
|
}
|
|
787
796
|
// Requirements Domain (2 tools)
|
|
788
797
|
else if (name === tools_js_1.TOOL_NAMES.QE_REQUIREMENTS_VALIDATE) {
|
|
789
|
-
result = await (0,
|
|
798
|
+
result = await (0, index_js_7.validateRequirements)(safeArgs);
|
|
790
799
|
}
|
|
791
800
|
else if (name === tools_js_1.TOOL_NAMES.QE_REQUIREMENTS_BDD) {
|
|
792
|
-
result = await (0,
|
|
801
|
+
result = await (0, index_js_7.generateBddScenarios)(safeArgs);
|
|
793
802
|
}
|
|
794
803
|
// Code-Quality Domain (2 tools)
|
|
795
804
|
else if (name === tools_js_1.TOOL_NAMES.QE_CODEQUALITY_COMPLEXITY) {
|
|
796
|
-
result = await (0,
|
|
805
|
+
result = await (0, index_js_8.analyzeComplexity)(safeArgs);
|
|
797
806
|
}
|
|
798
807
|
else if (name === tools_js_1.TOOL_NAMES.QE_CODEQUALITY_METRICS) {
|
|
799
|
-
result = await (0,
|
|
808
|
+
result = await (0, index_js_8.calculateQualityMetrics)(safeArgs);
|
|
800
809
|
}
|
|
801
810
|
// Fleet Management Domain (2 tools)
|
|
802
811
|
else if (name === tools_js_1.TOOL_NAMES.QE_FLEET_COORDINATE) {
|
|
803
|
-
result = await (0,
|
|
812
|
+
result = await (0, index_js_9.coordinateFleet)(safeArgs);
|
|
804
813
|
}
|
|
805
814
|
else if (name === tools_js_1.TOOL_NAMES.QE_FLEET_STATUS) {
|
|
806
|
-
result = await (0,
|
|
815
|
+
result = await (0, index_js_9.getAgentStatus)(safeArgs);
|
|
807
816
|
}
|
|
808
817
|
else {
|
|
809
818
|
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown Phase 3 tool: ${name}`);
|
|
810
819
|
}
|
|
811
820
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
812
821
|
}
|
|
822
|
+
// New Domain Tools routing (Chaos, Integration, Token-Optimized)
|
|
823
|
+
if (name.startsWith('mcp__agentic_qe__chaos_') ||
|
|
824
|
+
name.startsWith('mcp__agentic_qe__integration_') ||
|
|
825
|
+
name === tools_js_1.TOOL_NAMES.TEST_EXECUTE_FILTERED ||
|
|
826
|
+
name === tools_js_1.TOOL_NAMES.PERFORMANCE_TEST_FILTERED ||
|
|
827
|
+
name === tools_js_1.TOOL_NAMES.QUALITY_ASSESS_FILTERED) {
|
|
828
|
+
const newDomainHandler = handler;
|
|
829
|
+
const safeArgs = args || {};
|
|
830
|
+
let result;
|
|
831
|
+
// Chaos Engineering Tools
|
|
832
|
+
if (name === tools_js_1.TOOL_NAMES.CHAOS_INJECT_LATENCY) {
|
|
833
|
+
result = await newDomainHandler.handleChaosInjectLatency(safeArgs);
|
|
834
|
+
}
|
|
835
|
+
else if (name === tools_js_1.TOOL_NAMES.CHAOS_INJECT_FAILURE) {
|
|
836
|
+
result = await newDomainHandler.handleChaosInjectFailure(safeArgs);
|
|
837
|
+
}
|
|
838
|
+
else if (name === tools_js_1.TOOL_NAMES.CHAOS_RESILIENCE_TEST) {
|
|
839
|
+
result = await newDomainHandler.handleChaosResilienceTest(safeArgs);
|
|
840
|
+
}
|
|
841
|
+
// Integration Testing Tools
|
|
842
|
+
else if (name === tools_js_1.TOOL_NAMES.INTEGRATION_DEPENDENCY_CHECK) {
|
|
843
|
+
result = await newDomainHandler.handleDependencyCheck(safeArgs);
|
|
844
|
+
}
|
|
845
|
+
else if (name === tools_js_1.TOOL_NAMES.INTEGRATION_TEST_ORCHESTRATE) {
|
|
846
|
+
result = await newDomainHandler.handleIntegrationTestOrchestrate(safeArgs);
|
|
847
|
+
}
|
|
848
|
+
// Token-Optimized Tools
|
|
849
|
+
else if (name === tools_js_1.TOOL_NAMES.TEST_EXECUTE_FILTERED) {
|
|
850
|
+
result = await newDomainHandler.handleTestExecuteFiltered(safeArgs);
|
|
851
|
+
}
|
|
852
|
+
else if (name === tools_js_1.TOOL_NAMES.PERFORMANCE_TEST_FILTERED) {
|
|
853
|
+
result = await newDomainHandler.handlePerformanceTestFiltered(safeArgs);
|
|
854
|
+
}
|
|
855
|
+
else if (name === tools_js_1.TOOL_NAMES.QUALITY_ASSESS_FILTERED) {
|
|
856
|
+
result = await newDomainHandler.handleQualityAssessFiltered(safeArgs);
|
|
857
|
+
}
|
|
858
|
+
else {
|
|
859
|
+
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown New Domain tool: ${name}`);
|
|
860
|
+
}
|
|
861
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
862
|
+
}
|
|
863
|
+
// RuVector GNN Cache Tools routing (Phase 0.5)
|
|
864
|
+
if (name.startsWith('mcp__agentic_qe__ruvector_')) {
|
|
865
|
+
const ruvectorHandler = handler;
|
|
866
|
+
const safeArgs = args || {};
|
|
867
|
+
let result;
|
|
868
|
+
if (name === tools_js_1.TOOL_NAMES.RUVECTOR_HEALTH) {
|
|
869
|
+
result = await ruvectorHandler.handleRuvectorHealth(safeArgs);
|
|
870
|
+
}
|
|
871
|
+
else if (name === tools_js_1.TOOL_NAMES.RUVECTOR_METRICS) {
|
|
872
|
+
result = await ruvectorHandler.handleRuvectorMetrics(safeArgs);
|
|
873
|
+
}
|
|
874
|
+
else if (name === tools_js_1.TOOL_NAMES.RUVECTOR_FORCE_LEARN) {
|
|
875
|
+
result = await ruvectorHandler.handleRuvectorForceLearn(safeArgs);
|
|
876
|
+
}
|
|
877
|
+
else if (name === tools_js_1.TOOL_NAMES.RUVECTOR_STORE_PATTERN) {
|
|
878
|
+
result = await ruvectorHandler.handleRuvectorStorePattern(safeArgs);
|
|
879
|
+
}
|
|
880
|
+
else if (name === tools_js_1.TOOL_NAMES.RUVECTOR_SEARCH) {
|
|
881
|
+
result = await ruvectorHandler.handleRuvectorSearch(safeArgs);
|
|
882
|
+
}
|
|
883
|
+
else if (name === tools_js_1.TOOL_NAMES.RUVECTOR_COST_SAVINGS) {
|
|
884
|
+
result = await ruvectorHandler.handleRuvectorCostSavings(safeArgs);
|
|
885
|
+
}
|
|
886
|
+
else {
|
|
887
|
+
throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown RuVector tool: ${name}`);
|
|
888
|
+
}
|
|
889
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
890
|
+
}
|
|
813
891
|
// Check if this is a streaming handler (has execute method returning AsyncGenerator)
|
|
814
892
|
const isStreamingHandler = handler.execute &&
|
|
815
893
|
typeof handler.execute === 'function' &&
|