mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
fd2f37eaa0
Changes: - Fix README.md agent counts (48 QE agents = 41 main + 7 subagents) - Fix README.md skill counts (15 QE-specific skills) - Fix v3/README.md agent counts (47 → 48) - Fix init-wizard.ts hooks from 'npx @agentic-qe/v3' to 'npx agentic-qe' - Complete v2 → v2/ folder reorganization (54 items moved) - Update root package.json to point to v3 as main version Verified claims: - 48 QE agents (41 main + 7 TDD subagents) - 15 QE-specific skills - 12 DDD bounded contexts - ~5,600+ tests - HNSW, ReasoningBank, Queen Coordinator features exist Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
109 lines
4.6 KiB
TypeScript
109 lines
4.6 KiB
TypeScript
/**
|
|
* Usage Tracking and Caching Example
|
|
* Demonstrates the new usage tracking and frequency-based preloading features
|
|
*
|
|
* Issue #115 Phase 3 Track I Implementation
|
|
*/
|
|
|
|
import { getToolLoader } from '../src/mcp/lazy-loader.js';
|
|
|
|
// Get the singleton loader instance
|
|
const loader = getToolLoader();
|
|
|
|
console.log('=== Usage Tracking and Caching Demo ===\n');
|
|
|
|
// 1. Simulate tool usage patterns
|
|
console.log('1. Simulating tool usage...');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_generate_enhanced');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_execute');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_detect_gaps_ml');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_recommend_tests');
|
|
loader.trackToolUsage('mcp__agentic_qe__test_generate_enhanced'); // Used again
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream'); // Used again
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_qualitygate_evaluate');
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_code_quality_complexity');
|
|
|
|
// 2. Load some domains to track domain usage
|
|
console.log('\n2. Loading domains...');
|
|
loader.loadDomain('coverage');
|
|
loader.loadDomain('quality');
|
|
loader.loadDomain('coverage'); // Load again (should show already loaded)
|
|
|
|
// 3. Simulate more tool usage
|
|
console.log('\n3. Simulating more tool usage...');
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_analyze_stream'); // Coverage tool
|
|
loader.trackToolUsage('mcp__agentic_qe__coverage_detect_gaps_ml'); // Coverage tool
|
|
loader.trackToolUsage('mcp__agentic_qe__qe_qualitygate_evaluate'); // Quality tool
|
|
loader.trackToolUsage('mcp__agentic_qe__performance_run_benchmark');
|
|
|
|
// 4. Get top tools usage statistics
|
|
console.log('\n4. Top 5 Most Used Tools:');
|
|
const topTools = loader.getTopTools(5);
|
|
topTools.forEach((stat, index) => {
|
|
console.log(` ${index + 1}. ${stat.toolName}`);
|
|
console.log(` - Call count: ${stat.callCount}`);
|
|
console.log(` - Domain: ${stat.domain || 'unknown'}`);
|
|
console.log(` - Last used: ${new Date(stat.lastUsed).toLocaleString()}`);
|
|
});
|
|
|
|
// 5. Get domain usage statistics
|
|
console.log('\n5. Domain Usage Statistics:');
|
|
const domainStats = loader.getDomainUsageStats();
|
|
domainStats.forEach((stat) => {
|
|
console.log(` ${stat.domain}:`);
|
|
console.log(` - Load count: ${stat.loadCount}`);
|
|
console.log(` - Tool usage count: ${stat.toolUsageCount}`);
|
|
console.log(` - Average tools per load: ${stat.averageToolsPerLoad.toFixed(2)}`);
|
|
console.log(` - Last loaded: ${new Date(stat.lastLoaded).toLocaleString()}`);
|
|
});
|
|
|
|
// 6. Demonstrate preloading frequent domains
|
|
console.log('\n6. Preloading frequently used domains (threshold: 2)...');
|
|
const preloadResults = loader.preloadFrequentDomains(2);
|
|
preloadResults.forEach((result) => {
|
|
console.log(` - Loaded ${result.domain}: ${result.toolsLoaded.length} tools`);
|
|
});
|
|
|
|
// 7. Export usage statistics
|
|
console.log('\n7. Exporting usage statistics...');
|
|
const exportedStats = loader.exportUsageStats();
|
|
console.log(` - Exported ${exportedStats.toolStats.length} tool stats`);
|
|
console.log(` - Exported ${exportedStats.domainStats.length} domain stats`);
|
|
console.log(` - Export timestamp: ${new Date(exportedStats.exportedAt).toLocaleString()}`);
|
|
|
|
// 8. Show current loader state
|
|
console.log('\n8. Current Loader State:');
|
|
const stats = loader.getStats();
|
|
console.log(` - Core tools: ${stats.coreTools}`);
|
|
console.log(` - Loaded domains: ${stats.loadedDomains.join(', ')}`);
|
|
console.log(` - Available domains: ${stats.availableDomains.join(', ')}`);
|
|
console.log(` - Total loaded: ${stats.totalLoaded}`);
|
|
console.log(` - Total available: ${stats.totalAvailable}`);
|
|
|
|
// 9. Demonstrate import/export cycle
|
|
console.log('\n9. Testing import/export cycle...');
|
|
const savedStats = loader.exportUsageStats();
|
|
loader.clearUsageStats();
|
|
console.log(' - Cleared all usage stats');
|
|
|
|
const emptyStats = loader.getToolUsageStats();
|
|
console.log(` - Tool stats after clear: ${emptyStats.length}`);
|
|
|
|
loader.importUsageStats(savedStats);
|
|
const restoredStats = loader.getToolUsageStats();
|
|
console.log(` - Tool stats after import: ${restoredStats.length}`);
|
|
|
|
// 10. Show tracking state
|
|
console.log('\n10. Usage Tracking State:');
|
|
console.log(` - Tracking enabled: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
// Disable and re-enable tracking
|
|
loader.setUsageTracking(false);
|
|
console.log(` - After disable: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
loader.setUsageTracking(true);
|
|
console.log(` - After enable: ${loader.isUsageTrackingEnabled()}`);
|
|
|
|
console.log('\n=== Demo Complete ===');
|