thoughtmcp
Version:
AI that thinks more like humans do - MCP server with human-like cognitive architecture for enhanced reasoning, memory, and self-monitoring
130 lines ⢠5.57 kB
JavaScript
/**
* Example demonstrating performance monitoring capabilities
*/
import { PerformanceMonitor, createCLIDashboard, } from "../utils/index.js";
// Create a performance monitor
const monitor = new PerformanceMonitor({
responseTimeWarning: 1000,
responseTimeCritical: 5000,
memoryUsageWarning: 100 * 1024 * 1024, // 100MB
memoryUsageCritical: 500 * 1024 * 1024, // 500MB
confidenceThreshold: 0.5,
});
// Example: Simulate some cognitive operations
async function simulateCognitiveOperations() {
console.log("š§ Simulating cognitive operations...\n");
// Simulate different types of operations
const operations = [
{ name: "think", responseTime: 150, confidence: 0.8 },
{ name: "remember", responseTime: 50, confidence: 1.0 },
{ name: "recall", responseTime: 200, confidence: 0.6 },
{ name: "analyze_reasoning", responseTime: 300, confidence: 0.9 },
{ name: "think", responseTime: 2500, confidence: 0.3 }, // Slow operation
];
for (let i = 0; i < operations.length; i++) {
const op = operations[i];
const measurement = monitor.startMeasurement(`req_${i}`, op.name);
// Simulate processing time
await new Promise((resolve) => setTimeout(resolve, Math.min(op.responseTime / 10, 50)));
// Record cognitive metrics
measurement.recordCognitiveMetrics({
confidenceScore: op.confidence,
reasoningDepth: Math.floor(Math.random() * 5) + 1,
memoryRetrievals: Math.floor(Math.random() * 3),
workingMemoryLoad: Math.random(),
emotionalProcessingTime: op.name === "think" ? Math.random() * 100 : undefined,
metacognitionTime: op.name === "analyze_reasoning" ? Math.random() * 200 : undefined,
});
// Complete measurement
const metrics = measurement.complete();
console.log(`ā
${op.name} completed in ${metrics.responseTime}ms (confidence: ${op.confidence})`);
}
}
// Example: Display performance statistics
function displayStatistics() {
console.log("\nš Performance Statistics:");
console.log("=".repeat(50));
const stats = monitor.getStatistics();
console.log(`Total Requests: ${stats.totalRequests}`);
console.log(`Average Response Time: ${stats.averageResponseTime.toFixed(1)}ms`);
console.log(`Median Response Time: ${stats.medianResponseTime.toFixed(1)}ms`);
console.log(`95th Percentile: ${stats.p95ResponseTime.toFixed(1)}ms`);
console.log(`99th Percentile: ${stats.p99ResponseTime.toFixed(1)}ms`);
console.log(`Average Confidence: ${(stats.averageConfidence * 100).toFixed(1)}%`);
console.log(`Low Confidence Requests: ${stats.lowConfidenceRequests}`);
console.log("\nš§ Tool Usage:");
Object.entries(stats.toolUsageStats).forEach(([tool, toolStats]) => {
console.log(` ${tool}: ${toolStats.count} calls (${toolStats.averageResponseTime.toFixed(1)}ms avg, ${(toolStats.averageConfidence * 100).toFixed(1)}% confidence)`);
});
const currentMemory = monitor.getMemoryUsage();
console.log(`\nš¾ Current Memory Usage: ${(currentMemory.heapUsed /
1024 /
1024).toFixed(1)}MB`);
}
// Example: Display alerts
function displayAlerts() {
const alerts = monitor.getAlerts();
if (alerts.length > 0) {
console.log("\nšØ Performance Alerts:");
console.log("=".repeat(50));
alerts.forEach((alert) => {
const icon = alert.type === "critical" ? "š“" : "š”";
const timestamp = new Date(alert.timestamp).toLocaleTimeString();
console.log(`${icon} [${timestamp}] ${alert.message}`);
});
}
else {
console.log("\nā
No performance alerts");
}
}
// Example: Export metrics for external monitoring
function exportMetricsExample() {
console.log("\nš¤ Exporting Metrics:");
console.log("=".repeat(50));
const exportedMetrics = monitor.exportMetrics();
console.log(`Exported ${exportedMetrics.length} metric records`);
// Example: Save to file (in real usage)
// fs.writeFileSync('performance-metrics.json', JSON.stringify(exportedMetrics, null, 2));
// Show sample metric
if (exportedMetrics.length > 0) {
console.log("\nSample metric record:");
console.log(JSON.stringify(exportedMetrics[0], null, 2));
}
}
// Example: CLI Dashboard
async function dashboardExample() {
console.log("\nš„ļø Starting CLI Dashboard (5 seconds)...");
console.log("=".repeat(50));
const dashboard = createCLIDashboard(monitor);
dashboard.start();
// Let it run for a few seconds
await new Promise((resolve) => setTimeout(resolve, 5000));
dashboard.stop();
}
// Main example function
async function main() {
console.log("š Performance Monitoring Example");
console.log("=".repeat(50));
try {
// Simulate operations
await simulateCognitiveOperations();
// Display statistics
displayStatistics();
// Display alerts
displayAlerts();
// Export metrics
exportMetricsExample();
// Dashboard example
await dashboardExample();
console.log("\n⨠Performance monitoring example completed!");
}
catch (error) {
console.error("ā Error running example:", error);
}
}
// Run the example
if (import.meta.url === `file://${process.argv[1]}`) {
main().catch(console.error);
}
export { main as runPerformanceMonitoringExample };
//# sourceMappingURL=performance-monitoring-example.js.map