snow-flow 1.1.75 → 1.1.77
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/.claude-flow/queen/queen-memory.db +0 -0
- package/.claude-flow/queen-test/test-memory.db +0 -0
- package/.claude-flow/queen-test/test-memory.db-agents +0 -0
- package/.claude-flow/queen-test/test-memory.db-import +0 -0
- package/.claude-flow/queen-test/test-memory.db-memory +0 -0
- package/.claude-flow/queen-test/test-memory.db-neural +0 -0
- package/CLAUDE.md +145 -13
- package/README.md +117 -50
- package/dist/agents/base-agent.d.ts +92 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +228 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/coordinator.d.ts +200 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +775 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/flow-builder-agent.d.ts +18 -0
- package/dist/agents/flow-builder-agent.d.ts.map +1 -0
- package/dist/agents/flow-builder-agent.js +536 -0
- package/dist/agents/flow-builder-agent.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +61 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/queen-agent-example.d.ts +23 -0
- package/dist/agents/queen-agent-example.d.ts.map +1 -0
- package/dist/agents/queen-agent-example.js +241 -0
- package/dist/agents/queen-agent-example.js.map +1 -0
- package/dist/agents/queen-agent.d.ts +180 -0
- package/dist/agents/queen-agent.d.ts.map +1 -0
- package/dist/agents/queen-agent.js +909 -0
- package/dist/agents/queen-agent.js.map +1 -0
- package/dist/agents/queen-agent.test.d.ts +6 -0
- package/dist/agents/queen-agent.test.d.ts.map +1 -0
- package/dist/agents/queen-agent.test.js.map +1 -0
- package/dist/agents/script-writer-agent.d.ts +22 -0
- package/dist/agents/script-writer-agent.d.ts.map +1 -0
- package/dist/agents/script-writer-agent.js +695 -0
- package/dist/agents/script-writer-agent.js.map +1 -0
- package/dist/agents/security-agent.d.ts +23 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +619 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/test-agent.d.ts +26 -0
- package/dist/agents/test-agent.d.ts.map +1 -0
- package/dist/agents/test-agent.js +735 -0
- package/dist/agents/test-agent.js.map +1 -0
- package/dist/agents/test-agents.d.ts +7 -0
- package/dist/agents/test-agents.d.ts.map +1 -0
- package/dist/agents/test-agents.js +65 -0
- package/dist/agents/test-agents.js.map +1 -0
- package/dist/agents/widget-creator-agent.d.ts +18 -0
- package/dist/agents/widget-creator-agent.d.ts.map +1 -0
- package/dist/agents/widget-creator-agent.js +440 -0
- package/dist/agents/widget-creator-agent.js.map +1 -0
- package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
- package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
- package/dist/cli/snow-flow-cli-integration.js +385 -0
- package/dist/cli/snow-flow-cli-integration.js.map +1 -0
- package/dist/cli.js +692 -150
- package/dist/cli.js.map +1 -1
- package/dist/config/snow-flow-config.d.ts +1454 -0
- package/dist/config/snow-flow-config.d.ts.map +1 -0
- package/dist/config/snow-flow-config.js +403 -0
- package/dist/config/snow-flow-config.js.map +1 -0
- package/dist/health/system-health.d.ts +123 -0
- package/dist/health/system-health.d.ts.map +1 -0
- package/dist/health/system-health.js +580 -0
- package/dist/health/system-health.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-transport-wrapper.d.ts +29 -0
- package/dist/mcp/http-transport-wrapper.d.ts.map +1 -0
- package/dist/mcp/http-transport-wrapper.js +318 -0
- package/dist/mcp/http-transport-wrapper.js.map +1 -0
- package/dist/mcp/service-discovery-client.d.ts +83 -0
- package/dist/mcp/service-discovery-client.d.ts.map +1 -0
- package/dist/mcp/service-discovery-client.js +211 -0
- package/dist/mcp/service-discovery-client.js.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp.js +116 -23
- package/dist/mcp/servicenow-deployment-mcp.js.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
- package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp.js +254 -18
- package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
- package/dist/mcp/servicenow-operations-mcp.js +170 -32
- package/dist/mcp/servicenow-operations-mcp.js.map +1 -1
- package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
- package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
- package/dist/mcp/shared/agent-context-provider.js +292 -0
- package/dist/mcp/shared/agent-context-provider.js.map +1 -0
- package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
- package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
- package/dist/mcp/shared/base-mcp-server.js +216 -0
- package/dist/mcp/shared/base-mcp-server.js.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.js +423 -0
- package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +20 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/mcp-integration-example.d.ts +6 -0
- package/dist/memory/mcp-integration-example.d.ts.map +1 -0
- package/dist/memory/mcp-integration-example.js +282 -0
- package/dist/memory/mcp-integration-example.js.map +1 -0
- package/dist/memory/memory-client.d.ts +184 -0
- package/dist/memory/memory-client.d.ts.map +1 -0
- package/dist/memory/memory-client.js +325 -0
- package/dist/memory/memory-client.js.map +1 -0
- package/dist/memory/memory-operations.d.ts +170 -0
- package/dist/memory/memory-operations.d.ts.map +1 -0
- package/dist/memory/memory-operations.js +639 -0
- package/dist/memory/memory-operations.js.map +1 -0
- package/dist/memory/memory-system.d.ts +118 -0
- package/dist/memory/memory-system.d.ts.map +1 -0
- package/dist/memory/memory-system.js +477 -0
- package/dist/memory/memory-system.js.map +1 -0
- package/dist/memory/memory-test.d.ts +6 -0
- package/dist/memory/memory-test.d.ts.map +1 -0
- package/dist/memory/memory-test.js +162 -0
- package/dist/memory/memory-test.js.map +1 -0
- package/dist/memory/swarm-memory.d.ts +135 -0
- package/dist/memory/swarm-memory.d.ts.map +1 -0
- package/dist/memory/swarm-memory.js +378 -0
- package/dist/memory/swarm-memory.js.map +1 -0
- package/dist/monitoring/performance-tracker.d.ts +157 -0
- package/dist/monitoring/performance-tracker.d.ts.map +1 -0
- package/dist/monitoring/performance-tracker.js +571 -0
- package/dist/monitoring/performance-tracker.js.map +1 -0
- package/dist/orchestration/discovery/service-discovery.d.ts +81 -0
- package/dist/orchestration/discovery/service-discovery.d.ts.map +1 -0
- package/dist/orchestration/discovery/service-discovery.js +808 -0
- package/dist/orchestration/discovery/service-discovery.js.map +1 -0
- package/dist/orchestration/distributed-orchestrator.d.ts +131 -0
- package/dist/orchestration/distributed-orchestrator.d.ts.map +1 -0
- package/dist/orchestration/distributed-orchestrator.js +712 -0
- package/dist/orchestration/distributed-orchestrator.js.map +1 -0
- package/dist/orchestration/distribution/task-distribution-engine.d.ts +53 -0
- package/dist/orchestration/distribution/task-distribution-engine.d.ts.map +1 -0
- package/dist/orchestration/distribution/task-distribution-engine.js +586 -0
- package/dist/orchestration/distribution/task-distribution-engine.js.map +1 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts +606 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts.map +1 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.js +65 -0
- package/dist/orchestration/interfaces/distributed-orchestration.interface.js.map +1 -0
- package/dist/orchestration/protocols/mcpx-protocol.d.ts +71 -0
- package/dist/orchestration/protocols/mcpx-protocol.d.ts.map +1 -0
- package/dist/orchestration/protocols/mcpx-protocol.js +668 -0
- package/dist/orchestration/protocols/mcpx-protocol.js.map +1 -0
- package/dist/orchestration/state/distributed-state-manager.d.ts +89 -0
- package/dist/orchestration/state/distributed-state-manager.d.ts.map +1 -0
- package/dist/orchestration/state/distributed-state-manager.js +716 -0
- package/dist/orchestration/state/distributed-state-manager.js.map +1 -0
- package/dist/queen/advanced-integration-test.d.ts +48 -0
- package/dist/queen/advanced-integration-test.d.ts.map +1 -0
- package/dist/queen/advanced-integration-test.js +474 -0
- package/dist/queen/advanced-integration-test.js.map +1 -0
- package/dist/queen/agent-factory.d.ts +43 -0
- package/dist/queen/agent-factory.d.ts.map +1 -0
- package/dist/queen/agent-factory.js +485 -0
- package/dist/queen/agent-factory.js.map +1 -0
- package/dist/queen/index.d.ts +58 -0
- package/dist/queen/index.d.ts.map +1 -0
- package/dist/queen/index.js +79 -0
- package/dist/queen/index.js.map +1 -0
- package/dist/queen/integration-example.d.ts +82 -0
- package/dist/queen/integration-example.d.ts.map +1 -0
- package/dist/queen/integration-example.js +220 -0
- package/dist/queen/integration-example.js.map +1 -0
- package/dist/queen/integration-test.d.ts +72 -0
- package/dist/queen/integration-test.d.ts.map +1 -0
- package/dist/queen/integration-test.js +564 -0
- package/dist/queen/integration-test.js.map +1 -0
- package/dist/queen/mock-mcp-client.d.ts +66 -0
- package/dist/queen/mock-mcp-client.d.ts.map +1 -0
- package/dist/queen/mock-mcp-client.js +297 -0
- package/dist/queen/mock-mcp-client.js.map +1 -0
- package/dist/queen/neural-learning.d.ts +28 -0
- package/dist/queen/neural-learning.d.ts.map +1 -0
- package/dist/queen/neural-learning.js +244 -0
- package/dist/queen/neural-learning.js.map +1 -0
- package/dist/queen/queen-memory.d.ts +31 -0
- package/dist/queen/queen-memory.d.ts.map +1 -0
- package/dist/queen/queen-memory.js +315 -0
- package/dist/queen/queen-memory.js.map +1 -0
- package/dist/queen/run-integration-tests.d.ts +9 -0
- package/dist/queen/run-integration-tests.d.ts.map +1 -0
- package/dist/queen/run-integration-tests.js +28 -0
- package/dist/queen/run-integration-tests.js.map +1 -0
- package/dist/queen/servicenow-queen.d.ts +56 -0
- package/dist/queen/servicenow-queen.d.ts.map +1 -0
- package/dist/queen/servicenow-queen.js +659 -0
- package/dist/queen/servicenow-queen.js.map +1 -0
- package/dist/queen/types.d.ts +58 -0
- package/dist/queen/types.d.ts.map +1 -0
- package/dist/queen/types.js +7 -0
- package/dist/queen/types.js.map +1 -0
- package/dist/snow-flow-system.d.ts +132 -0
- package/dist/snow-flow-system.d.ts.map +1 -0
- package/dist/snow-flow-system.js +396 -0
- package/dist/snow-flow-system.js.map +1 -0
- package/dist/types/todo.types.d.ts +61 -0
- package/dist/types/todo.types.d.ts.map +1 -0
- package/dist/types/todo.types.js +7 -0
- package/dist/types/todo.types.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +101 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +548 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/version.d.ts +2 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +16 -2
- package/dist/version.js.map +1 -1
- package/package.json +8 -3
- package/test-clean-install/.claude/config.json +0 -12
- package/test-clean-install/.env.example +0 -49
- package/test-clean-install/CLAUDE.md +0 -26
- package/test-clean-install/README.md +0 -23
- package/test-global-install/.claude/config.json +0 -12
- package/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
- package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/test-global-install/README.md +0 -23
- package/test-init-debug/.claude/config.json +0 -12
- package/test-init-debug/CLAUDE.md +0 -693
- package/test-init-debug/README.md +0 -392
- package/test-init-real/.claude/config.json +0 -12
- package/test-init-real/.claude/mcp-config.json +0 -128
- package/test-init-real/.claude/settings.json +0 -37
- package/test-init-real/CLAUDE.md +0 -693
- package/test-init-real/README.md +0 -392
- package/test-init-real/activate-mcp.sh +0 -15
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Snow-Flow Performance Monitoring System
|
|
4
|
+
* Real-time metrics collection and analysis
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PerformanceTracker = void 0;
|
|
8
|
+
const events_1 = require("events");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
class PerformanceTracker extends events_1.EventEmitter {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super();
|
|
13
|
+
this.activeOperations = new Map();
|
|
14
|
+
this.metricsBuffer = [];
|
|
15
|
+
this.initialized = false;
|
|
16
|
+
this.memory = options.memory;
|
|
17
|
+
this.config = options.config;
|
|
18
|
+
this.logger = new logger_1.Logger('PerformanceTracker');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize the performance tracker
|
|
22
|
+
*/
|
|
23
|
+
async initialize() {
|
|
24
|
+
if (this.initialized)
|
|
25
|
+
return;
|
|
26
|
+
this.logger.info('Initializing Performance Tracker...');
|
|
27
|
+
// Create performance tables if not exist
|
|
28
|
+
await this.createPerformanceTables();
|
|
29
|
+
// Start aggregation timer
|
|
30
|
+
this.startAggregation();
|
|
31
|
+
// Monitor system resources
|
|
32
|
+
this.startResourceMonitoring();
|
|
33
|
+
this.initialized = true;
|
|
34
|
+
this.logger.info('Performance Tracker initialized');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Start tracking an operation
|
|
38
|
+
*/
|
|
39
|
+
async startOperation(operation, metadata = {}) {
|
|
40
|
+
// Apply sampling rate
|
|
41
|
+
if (Math.random() > this.config.sampleRate) {
|
|
42
|
+
return 'not_sampled';
|
|
43
|
+
}
|
|
44
|
+
const id = this.generateMetricId();
|
|
45
|
+
const metric = {
|
|
46
|
+
id,
|
|
47
|
+
operation,
|
|
48
|
+
startTime: Date.now(),
|
|
49
|
+
success: false,
|
|
50
|
+
metadata,
|
|
51
|
+
sessionId: metadata.sessionId,
|
|
52
|
+
agentId: metadata.agentId,
|
|
53
|
+
resourceUsage: this.captureResourceUsage()
|
|
54
|
+
};
|
|
55
|
+
this.activeOperations.set(id, metric);
|
|
56
|
+
// Emit start event
|
|
57
|
+
this.emit('operation:start', {
|
|
58
|
+
id,
|
|
59
|
+
operation,
|
|
60
|
+
metadata
|
|
61
|
+
});
|
|
62
|
+
return id;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* End tracking an operation
|
|
66
|
+
*/
|
|
67
|
+
async endOperation(operationId, result) {
|
|
68
|
+
const metric = this.activeOperations.get(operationId);
|
|
69
|
+
if (!metric || operationId === 'not_sampled')
|
|
70
|
+
return;
|
|
71
|
+
metric.endTime = Date.now();
|
|
72
|
+
metric.duration = metric.endTime - metric.startTime;
|
|
73
|
+
metric.success = result.success;
|
|
74
|
+
metric.error = result.error;
|
|
75
|
+
if (result.metadata) {
|
|
76
|
+
Object.assign(metric.metadata, result.metadata);
|
|
77
|
+
}
|
|
78
|
+
// Capture final resource usage
|
|
79
|
+
const finalResourceUsage = this.captureResourceUsage();
|
|
80
|
+
metric.resourceUsage = this.calculateResourceDelta(metric.resourceUsage, finalResourceUsage);
|
|
81
|
+
// Remove from active and add to buffer
|
|
82
|
+
this.activeOperations.delete(operationId);
|
|
83
|
+
this.metricsBuffer.push(metric);
|
|
84
|
+
// Store immediately if buffer is large
|
|
85
|
+
if (this.metricsBuffer.length >= 100) {
|
|
86
|
+
await this.flushMetrics();
|
|
87
|
+
}
|
|
88
|
+
// Emit end event
|
|
89
|
+
this.emit('operation:end', {
|
|
90
|
+
id: operationId,
|
|
91
|
+
operation: metric.operation,
|
|
92
|
+
duration: metric.duration,
|
|
93
|
+
success: metric.success
|
|
94
|
+
});
|
|
95
|
+
// Check for performance issues
|
|
96
|
+
this.checkPerformanceThresholds(metric);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Track a complete operation (convenience method)
|
|
100
|
+
*/
|
|
101
|
+
async trackOperation(operation, metadata, fn) {
|
|
102
|
+
const id = await this.startOperation(operation, metadata);
|
|
103
|
+
try {
|
|
104
|
+
const result = await fn();
|
|
105
|
+
await this.endOperation(id, { success: true });
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
await this.endOperation(id, {
|
|
110
|
+
success: false,
|
|
111
|
+
error: error.message
|
|
112
|
+
});
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get metrics for a specific session
|
|
118
|
+
*/
|
|
119
|
+
async getSessionMetrics(sessionId) {
|
|
120
|
+
const metrics = await this.memory.query(`
|
|
121
|
+
SELECT * FROM performance_metrics
|
|
122
|
+
WHERE session_id = ?
|
|
123
|
+
ORDER BY start_time
|
|
124
|
+
`, [sessionId]);
|
|
125
|
+
if (metrics.length === 0) {
|
|
126
|
+
return {
|
|
127
|
+
sessionId,
|
|
128
|
+
startTime: new Date(),
|
|
129
|
+
operationCount: 0,
|
|
130
|
+
successCount: 0,
|
|
131
|
+
failureCount: 0,
|
|
132
|
+
agentCount: 0,
|
|
133
|
+
artifactCount: 0,
|
|
134
|
+
averageOperationTime: 0,
|
|
135
|
+
resourceUsage: []
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const startTime = new Date(metrics[0].startTime);
|
|
139
|
+
const endTime = metrics[metrics.length - 1].endTime ?
|
|
140
|
+
new Date(metrics[metrics.length - 1].endTime) : undefined;
|
|
141
|
+
const successCount = metrics.filter(m => m.success).length;
|
|
142
|
+
const totalDuration = metrics.reduce((sum, m) => sum + (m.duration || 0), 0);
|
|
143
|
+
const agentIds = new Set(metrics.map(m => m.agentId).filter(Boolean));
|
|
144
|
+
return {
|
|
145
|
+
sessionId,
|
|
146
|
+
startTime,
|
|
147
|
+
endTime,
|
|
148
|
+
duration: endTime ? endTime.getTime() - startTime.getTime() : undefined,
|
|
149
|
+
operationCount: metrics.length,
|
|
150
|
+
successCount,
|
|
151
|
+
failureCount: metrics.length - successCount,
|
|
152
|
+
agentCount: agentIds.size,
|
|
153
|
+
artifactCount: await this.countSessionArtifacts(sessionId),
|
|
154
|
+
averageOperationTime: metrics.length > 0 ? totalDuration / metrics.length : 0,
|
|
155
|
+
resourceUsage: metrics.map(m => m.resourceUsage).filter(Boolean)
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get aggregate metrics for an operation
|
|
160
|
+
*/
|
|
161
|
+
async getAggregateMetrics(operation, timeframe) {
|
|
162
|
+
const since = timeframe ? Date.now() - timeframe : 0;
|
|
163
|
+
const metrics = await this.memory.query(`
|
|
164
|
+
SELECT * FROM performance_metrics
|
|
165
|
+
WHERE operation = ? AND start_time > ?
|
|
166
|
+
ORDER BY duration
|
|
167
|
+
`, [operation, since]);
|
|
168
|
+
if (metrics.length === 0) {
|
|
169
|
+
return {
|
|
170
|
+
operation,
|
|
171
|
+
count: 0,
|
|
172
|
+
successCount: 0,
|
|
173
|
+
failureCount: 0,
|
|
174
|
+
averageDuration: 0,
|
|
175
|
+
minDuration: 0,
|
|
176
|
+
maxDuration: 0,
|
|
177
|
+
percentile95: 0,
|
|
178
|
+
percentile99: 0,
|
|
179
|
+
errorRate: 0,
|
|
180
|
+
throughput: 0
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const successCount = metrics.filter(m => m.success).length;
|
|
184
|
+
const durations = metrics.map(m => m.duration || 0).filter(d => d > 0);
|
|
185
|
+
durations.sort((a, b) => a - b);
|
|
186
|
+
const timeRange = metrics[metrics.length - 1].startTime - metrics[0].startTime;
|
|
187
|
+
const throughput = timeRange > 0 ? (metrics.length / timeRange) * 1000 : 0;
|
|
188
|
+
return {
|
|
189
|
+
operation,
|
|
190
|
+
count: metrics.length,
|
|
191
|
+
successCount,
|
|
192
|
+
failureCount: metrics.length - successCount,
|
|
193
|
+
averageDuration: durations.reduce((a, b) => a + b, 0) / durations.length,
|
|
194
|
+
minDuration: durations[0] || 0,
|
|
195
|
+
maxDuration: durations[durations.length - 1] || 0,
|
|
196
|
+
percentile95: this.calculatePercentile(durations, 0.95),
|
|
197
|
+
percentile99: this.calculatePercentile(durations, 0.99),
|
|
198
|
+
errorRate: metrics.length > 0 ? (metrics.length - successCount) / metrics.length : 0,
|
|
199
|
+
throughput
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Generate performance report
|
|
204
|
+
*/
|
|
205
|
+
async generateReport(period = 'day') {
|
|
206
|
+
const timeframe = this.getTimeframe(period);
|
|
207
|
+
const since = Date.now() - timeframe;
|
|
208
|
+
// Get all metrics for the period
|
|
209
|
+
const allMetrics = await this.memory.query(`
|
|
210
|
+
SELECT * FROM performance_metrics
|
|
211
|
+
WHERE start_time > ?
|
|
212
|
+
`, [since]);
|
|
213
|
+
// Get unique operations
|
|
214
|
+
const operations = [...new Set(allMetrics.map(m => m.operation))];
|
|
215
|
+
// Calculate operation metrics
|
|
216
|
+
const operationMetrics = await Promise.all(operations.map(op => this.getAggregateMetrics(op, timeframe)));
|
|
217
|
+
// Get session metrics
|
|
218
|
+
const sessionIds = [...new Set(allMetrics.map(m => m.sessionId).filter(Boolean))];
|
|
219
|
+
const sessionMetrics = await Promise.all(sessionIds.map(id => this.getSessionMetrics(id)));
|
|
220
|
+
// Identify bottlenecks
|
|
221
|
+
const bottlenecks = await this.identifyBottlenecks(allMetrics);
|
|
222
|
+
// Generate recommendations
|
|
223
|
+
const recommendations = this.generateRecommendations(operationMetrics, sessionMetrics, bottlenecks);
|
|
224
|
+
// Calculate summary
|
|
225
|
+
const totalOperations = allMetrics.length;
|
|
226
|
+
const successCount = allMetrics.filter(m => m.success).length;
|
|
227
|
+
const totalDuration = allMetrics.reduce((sum, m) => sum + (m.duration || 0), 0);
|
|
228
|
+
const report = {
|
|
229
|
+
timestamp: new Date(),
|
|
230
|
+
period,
|
|
231
|
+
summary: {
|
|
232
|
+
totalOperations,
|
|
233
|
+
successRate: totalOperations > 0 ? (successCount / totalOperations) * 100 : 0,
|
|
234
|
+
averageResponseTime: totalOperations > 0 ? totalDuration / totalOperations : 0,
|
|
235
|
+
peakConcurrency: this.calculatePeakConcurrency(allMetrics),
|
|
236
|
+
errorRate: totalOperations > 0 ? ((totalOperations - successCount) / totalOperations) * 100 : 0
|
|
237
|
+
},
|
|
238
|
+
operationMetrics,
|
|
239
|
+
sessionMetrics,
|
|
240
|
+
bottlenecks,
|
|
241
|
+
recommendations
|
|
242
|
+
};
|
|
243
|
+
// Store report
|
|
244
|
+
await this.memory.store(`performance_report_${period}_${Date.now()}`, report);
|
|
245
|
+
return report;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Identify performance bottlenecks
|
|
249
|
+
*/
|
|
250
|
+
async identifyBottlenecks(metrics) {
|
|
251
|
+
const bottlenecks = [];
|
|
252
|
+
// Group by operation
|
|
253
|
+
const operationGroups = this.groupBy(metrics, 'operation');
|
|
254
|
+
for (const [operation, operationMetrics] of Object.entries(operationGroups)) {
|
|
255
|
+
const durations = operationMetrics.map(m => m.duration || 0);
|
|
256
|
+
const avgDuration = durations.reduce((a, b) => a + b, 0) / durations.length;
|
|
257
|
+
const p95Duration = this.calculatePercentile(durations, 0.95);
|
|
258
|
+
// Check for slow operations
|
|
259
|
+
if (avgDuration > 5000) { // > 5 seconds average
|
|
260
|
+
bottlenecks.push({
|
|
261
|
+
operation,
|
|
262
|
+
severity: avgDuration > 30000 ? 'critical' : avgDuration > 15000 ? 'high' : 'medium',
|
|
263
|
+
impact: `Average response time of ${(avgDuration / 1000).toFixed(2)}s`,
|
|
264
|
+
occurrences: operationMetrics.length,
|
|
265
|
+
averageDelay: avgDuration - 5000,
|
|
266
|
+
recommendation: 'Optimize operation logic or add caching'
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
// Check for high variance
|
|
270
|
+
const variance = this.calculateVariance(durations);
|
|
271
|
+
if (variance > avgDuration * 2) {
|
|
272
|
+
bottlenecks.push({
|
|
273
|
+
operation,
|
|
274
|
+
severity: 'medium',
|
|
275
|
+
impact: 'High response time variance',
|
|
276
|
+
occurrences: operationMetrics.length,
|
|
277
|
+
averageDelay: 0,
|
|
278
|
+
recommendation: 'Investigate inconsistent performance patterns'
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
// Check for high error rate
|
|
282
|
+
const errorCount = operationMetrics.filter(m => !m.success).length;
|
|
283
|
+
const errorRate = errorCount / operationMetrics.length;
|
|
284
|
+
if (errorRate > 0.1) { // > 10% error rate
|
|
285
|
+
bottlenecks.push({
|
|
286
|
+
operation,
|
|
287
|
+
severity: errorRate > 0.5 ? 'critical' : errorRate > 0.25 ? 'high' : 'medium',
|
|
288
|
+
impact: `${(errorRate * 100).toFixed(1)}% error rate`,
|
|
289
|
+
occurrences: errorCount,
|
|
290
|
+
averageDelay: 0,
|
|
291
|
+
recommendation: 'Review error handling and retry logic'
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return bottlenecks.sort((a, b) => this.severityScore(b.severity) - this.severityScore(a.severity));
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Shutdown the tracker
|
|
299
|
+
*/
|
|
300
|
+
async shutdown() {
|
|
301
|
+
this.logger.info('Shutting down Performance Tracker...');
|
|
302
|
+
// Stop timers
|
|
303
|
+
if (this.aggregationTimer) {
|
|
304
|
+
clearInterval(this.aggregationTimer);
|
|
305
|
+
}
|
|
306
|
+
// Flush remaining metrics
|
|
307
|
+
await this.flushMetrics();
|
|
308
|
+
this.initialized = false;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Private helper methods
|
|
312
|
+
*/
|
|
313
|
+
async createPerformanceTables() {
|
|
314
|
+
await this.memory.execute(`
|
|
315
|
+
CREATE TABLE IF NOT EXISTS performance_metrics (
|
|
316
|
+
id TEXT PRIMARY KEY,
|
|
317
|
+
operation TEXT NOT NULL,
|
|
318
|
+
start_time INTEGER NOT NULL,
|
|
319
|
+
end_time INTEGER,
|
|
320
|
+
duration INTEGER,
|
|
321
|
+
success BOOLEAN NOT NULL,
|
|
322
|
+
session_id TEXT,
|
|
323
|
+
agent_id TEXT,
|
|
324
|
+
metadata TEXT,
|
|
325
|
+
resource_usage TEXT,
|
|
326
|
+
error TEXT,
|
|
327
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
328
|
+
);
|
|
329
|
+
|
|
330
|
+
CREATE INDEX IF NOT EXISTS idx_performance_operation ON performance_metrics(operation);
|
|
331
|
+
CREATE INDEX IF NOT EXISTS idx_performance_session ON performance_metrics(session_id);
|
|
332
|
+
CREATE INDEX IF NOT EXISTS idx_performance_time ON performance_metrics(start_time);
|
|
333
|
+
|
|
334
|
+
CREATE TABLE IF NOT EXISTS performance_aggregates (
|
|
335
|
+
id TEXT PRIMARY KEY,
|
|
336
|
+
operation TEXT NOT NULL,
|
|
337
|
+
period TEXT NOT NULL,
|
|
338
|
+
timestamp INTEGER NOT NULL,
|
|
339
|
+
metrics TEXT NOT NULL,
|
|
340
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
341
|
+
);
|
|
342
|
+
`);
|
|
343
|
+
}
|
|
344
|
+
startAggregation() {
|
|
345
|
+
this.aggregationTimer = setInterval(async () => {
|
|
346
|
+
await this.flushMetrics();
|
|
347
|
+
await this.aggregateMetrics();
|
|
348
|
+
}, this.config.aggregationInterval);
|
|
349
|
+
}
|
|
350
|
+
startResourceMonitoring() {
|
|
351
|
+
// Monitor Node.js process resources
|
|
352
|
+
setInterval(() => {
|
|
353
|
+
const usage = this.captureResourceUsage();
|
|
354
|
+
// Check thresholds
|
|
355
|
+
if (usage.memoryUsage > 0.8) {
|
|
356
|
+
this.emit('resource:warning', {
|
|
357
|
+
type: 'memory',
|
|
358
|
+
usage: usage.memoryUsage,
|
|
359
|
+
threshold: 0.8
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
if (usage.cpuUsage > 0.8) {
|
|
363
|
+
this.emit('resource:warning', {
|
|
364
|
+
type: 'cpu',
|
|
365
|
+
usage: usage.cpuUsage,
|
|
366
|
+
threshold: 0.8
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}, 10000); // Every 10 seconds
|
|
370
|
+
}
|
|
371
|
+
captureResourceUsage() {
|
|
372
|
+
const usage = process.cpuUsage();
|
|
373
|
+
const memory = process.memoryUsage();
|
|
374
|
+
return {
|
|
375
|
+
cpuUsage: (usage.user + usage.system) / 1000000, // Convert to seconds
|
|
376
|
+
memoryUsage: memory.rss / 1024 / 1024, // Convert to MB
|
|
377
|
+
heapUsed: memory.heapUsed / 1024 / 1024,
|
|
378
|
+
heapTotal: memory.heapTotal / 1024 / 1024,
|
|
379
|
+
external: memory.external / 1024 / 1024,
|
|
380
|
+
arrayBuffers: memory.arrayBuffers / 1024 / 1024
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
calculateResourceDelta(start, end) {
|
|
384
|
+
return {
|
|
385
|
+
cpuUsage: end.cpuUsage - start.cpuUsage,
|
|
386
|
+
memoryUsage: end.memoryUsage - start.memoryUsage,
|
|
387
|
+
heapUsed: end.heapUsed - start.heapUsed,
|
|
388
|
+
heapTotal: end.heapTotal,
|
|
389
|
+
external: end.external - start.external,
|
|
390
|
+
arrayBuffers: end.arrayBuffers - start.arrayBuffers
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
async flushMetrics() {
|
|
394
|
+
if (this.metricsBuffer.length === 0)
|
|
395
|
+
return;
|
|
396
|
+
const metrics = [...this.metricsBuffer];
|
|
397
|
+
this.metricsBuffer = [];
|
|
398
|
+
// Store metrics in database
|
|
399
|
+
for (const metric of metrics) {
|
|
400
|
+
await this.memory.insert('performance_metrics', {
|
|
401
|
+
id: metric.id,
|
|
402
|
+
operation: metric.operation,
|
|
403
|
+
start_time: metric.startTime,
|
|
404
|
+
end_time: metric.endTime,
|
|
405
|
+
duration: metric.duration,
|
|
406
|
+
success: metric.success,
|
|
407
|
+
session_id: metric.sessionId,
|
|
408
|
+
agent_id: metric.agentId,
|
|
409
|
+
metadata: JSON.stringify(metric.metadata),
|
|
410
|
+
resource_usage: JSON.stringify(metric.resourceUsage),
|
|
411
|
+
error: metric.error
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
this.emit('metrics:flushed', { count: metrics.length });
|
|
415
|
+
}
|
|
416
|
+
async aggregateMetrics() {
|
|
417
|
+
// Aggregate metrics for different time periods
|
|
418
|
+
const operations = await this.memory.query(`
|
|
419
|
+
SELECT DISTINCT operation FROM performance_metrics
|
|
420
|
+
WHERE start_time > ?
|
|
421
|
+
`, [Date.now() - this.config.aggregationInterval]);
|
|
422
|
+
for (const { operation } of operations) {
|
|
423
|
+
const aggregate = await this.getAggregateMetrics(operation, this.config.aggregationInterval);
|
|
424
|
+
await this.memory.insert('performance_aggregates', {
|
|
425
|
+
id: `${operation}_${Date.now()}`,
|
|
426
|
+
operation,
|
|
427
|
+
period: 'interval',
|
|
428
|
+
timestamp: Date.now(),
|
|
429
|
+
metrics: JSON.stringify(aggregate)
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
// Clean up old metrics
|
|
433
|
+
await this.cleanupOldMetrics();
|
|
434
|
+
}
|
|
435
|
+
async cleanupOldMetrics() {
|
|
436
|
+
const cutoff = Date.now() - this.config.metricsRetention;
|
|
437
|
+
await this.memory.execute(`
|
|
438
|
+
DELETE FROM performance_metrics WHERE start_time < ?
|
|
439
|
+
`, [cutoff]);
|
|
440
|
+
await this.memory.execute(`
|
|
441
|
+
DELETE FROM performance_aggregates WHERE timestamp < ?
|
|
442
|
+
`, [cutoff]);
|
|
443
|
+
}
|
|
444
|
+
checkPerformanceThresholds(metric) {
|
|
445
|
+
// Check for slow operations
|
|
446
|
+
if (metric.duration && metric.duration > 10000) { // > 10 seconds
|
|
447
|
+
this.emit('performance:slow', {
|
|
448
|
+
operation: metric.operation,
|
|
449
|
+
duration: metric.duration,
|
|
450
|
+
metadata: metric.metadata
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
// Check for failures
|
|
454
|
+
if (!metric.success) {
|
|
455
|
+
this.emit('performance:failure', {
|
|
456
|
+
operation: metric.operation,
|
|
457
|
+
error: metric.error,
|
|
458
|
+
metadata: metric.metadata
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
// Check for high resource usage
|
|
462
|
+
if (metric.resourceUsage && metric.resourceUsage.memoryUsage > 100) { // > 100MB
|
|
463
|
+
this.emit('performance:high-memory', {
|
|
464
|
+
operation: metric.operation,
|
|
465
|
+
memoryUsage: metric.resourceUsage.memoryUsage,
|
|
466
|
+
metadata: metric.metadata
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
generateMetricId() {
|
|
471
|
+
return `metric_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
472
|
+
}
|
|
473
|
+
calculatePercentile(values, percentile) {
|
|
474
|
+
if (values.length === 0)
|
|
475
|
+
return 0;
|
|
476
|
+
const index = Math.ceil(values.length * percentile) - 1;
|
|
477
|
+
return values[index] || 0;
|
|
478
|
+
}
|
|
479
|
+
calculateVariance(values) {
|
|
480
|
+
if (values.length === 0)
|
|
481
|
+
return 0;
|
|
482
|
+
const mean = values.reduce((a, b) => a + b, 0) / values.length;
|
|
483
|
+
const squaredDiffs = values.map(v => Math.pow(v - mean, 2));
|
|
484
|
+
return squaredDiffs.reduce((a, b) => a + b, 0) / values.length;
|
|
485
|
+
}
|
|
486
|
+
calculatePeakConcurrency(metrics) {
|
|
487
|
+
if (metrics.length === 0)
|
|
488
|
+
return 0;
|
|
489
|
+
const events = [];
|
|
490
|
+
for (const metric of metrics) {
|
|
491
|
+
events.push({ time: metric.startTime, type: 'start' });
|
|
492
|
+
if (metric.endTime) {
|
|
493
|
+
events.push({ time: metric.endTime, type: 'end' });
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
events.sort((a, b) => a.time - b.time);
|
|
497
|
+
let concurrent = 0;
|
|
498
|
+
let peak = 0;
|
|
499
|
+
for (const event of events) {
|
|
500
|
+
if (event.type === 'start') {
|
|
501
|
+
concurrent++;
|
|
502
|
+
peak = Math.max(peak, concurrent);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
concurrent--;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
return peak;
|
|
509
|
+
}
|
|
510
|
+
async countSessionArtifacts(sessionId) {
|
|
511
|
+
const result = await this.memory.query(`
|
|
512
|
+
SELECT COUNT(*) as count FROM servicenow_artifacts
|
|
513
|
+
WHERE session_id = ?
|
|
514
|
+
`, [sessionId]);
|
|
515
|
+
return result[0]?.count || 0;
|
|
516
|
+
}
|
|
517
|
+
groupBy(array, key) {
|
|
518
|
+
return array.reduce((groups, item) => {
|
|
519
|
+
const group = String(item[key]);
|
|
520
|
+
if (!groups[group])
|
|
521
|
+
groups[group] = [];
|
|
522
|
+
groups[group].push(item);
|
|
523
|
+
return groups;
|
|
524
|
+
}, {});
|
|
525
|
+
}
|
|
526
|
+
getTimeframe(period) {
|
|
527
|
+
const timeframes = {
|
|
528
|
+
hour: 3600000,
|
|
529
|
+
day: 86400000,
|
|
530
|
+
week: 604800000,
|
|
531
|
+
month: 2592000000
|
|
532
|
+
};
|
|
533
|
+
return timeframes[period] || timeframes.day;
|
|
534
|
+
}
|
|
535
|
+
severityScore(severity) {
|
|
536
|
+
const scores = {
|
|
537
|
+
low: 1,
|
|
538
|
+
medium: 2,
|
|
539
|
+
high: 3,
|
|
540
|
+
critical: 4
|
|
541
|
+
};
|
|
542
|
+
return scores[severity] || 0;
|
|
543
|
+
}
|
|
544
|
+
generateRecommendations(operationMetrics, sessionMetrics, bottlenecks) {
|
|
545
|
+
const recommendations = [];
|
|
546
|
+
// Check for slow operations
|
|
547
|
+
const slowOps = operationMetrics.filter(m => m.averageDuration > 5000);
|
|
548
|
+
if (slowOps.length > 0) {
|
|
549
|
+
recommendations.push(`Optimize slow operations: ${slowOps.map(op => op.operation).join(', ')}`);
|
|
550
|
+
}
|
|
551
|
+
// Check for high error rates
|
|
552
|
+
const errorOps = operationMetrics.filter(m => m.errorRate > 0.1);
|
|
553
|
+
if (errorOps.length > 0) {
|
|
554
|
+
recommendations.push(`Review error handling for: ${errorOps.map(op => op.operation).join(', ')}`);
|
|
555
|
+
}
|
|
556
|
+
// Check for resource usage
|
|
557
|
+
const highMemorySessions = sessionMetrics.filter(s => s.resourceUsage.some(r => r.memoryUsage > 500));
|
|
558
|
+
if (highMemorySessions.length > 0) {
|
|
559
|
+
recommendations.push('Consider implementing memory optimization strategies');
|
|
560
|
+
}
|
|
561
|
+
// Add bottleneck recommendations
|
|
562
|
+
bottlenecks.forEach(b => {
|
|
563
|
+
if (!recommendations.includes(b.recommendation)) {
|
|
564
|
+
recommendations.push(b.recommendation);
|
|
565
|
+
}
|
|
566
|
+
});
|
|
567
|
+
return recommendations;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
exports.PerformanceTracker = PerformanceTracker;
|
|
571
|
+
//# sourceMappingURL=performance-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-tracker.js","sourceRoot":"","sources":["../../src/monitoring/performance-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Discovery System
|
|
3
|
+
*
|
|
4
|
+
* Handles automatic discovery and registration of Claude Code instances and MCP servers
|
|
5
|
+
* in the distributed orchestration environment.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { ClaudeCodeInstance, DiscoveryCriteria, MCPServerInfo, MCPRequirements } from '../interfaces/distributed-orchestration.interface';
|
|
9
|
+
export declare class AgentDiscoveryService extends EventEmitter {
|
|
10
|
+
private registry;
|
|
11
|
+
private healthChecker;
|
|
12
|
+
private announcer;
|
|
13
|
+
private capabilityMatcher;
|
|
14
|
+
private loadMonitor;
|
|
15
|
+
private discoveryConfig;
|
|
16
|
+
constructor(config: DiscoveryConfig);
|
|
17
|
+
discoverAgents(criteria?: DiscoveryCriteria): Promise<ClaudeCodeInstance[]>;
|
|
18
|
+
discoverAgentsByCapability(capabilities: string[]): Promise<ClaudeCodeInstance[]>;
|
|
19
|
+
discoverAgentsByRegion(regions: string[]): Promise<Map<string, ClaudeCodeInstance[]>>;
|
|
20
|
+
announceService(instance: ClaudeCodeInstance): Promise<void>;
|
|
21
|
+
deannounceService(instanceId: string): Promise<void>;
|
|
22
|
+
watchAgents(criteria: DiscoveryCriteria, callback: (agents: ClaudeCodeInstance[]) => void): Promise<string>;
|
|
23
|
+
unwatchAgents(watchId: string): Promise<void>;
|
|
24
|
+
private filterHealthyAgents;
|
|
25
|
+
private convertServicesToInstances;
|
|
26
|
+
private determineInstanceStatus;
|
|
27
|
+
private extractTags;
|
|
28
|
+
private applyFilters;
|
|
29
|
+
private evaluateFilter;
|
|
30
|
+
private getPropertyValue;
|
|
31
|
+
private sortByRelevance;
|
|
32
|
+
private calculateRelevanceScore;
|
|
33
|
+
private calculatePerformanceScore;
|
|
34
|
+
private calculateHealthScore;
|
|
35
|
+
private startPeriodicDiscovery;
|
|
36
|
+
private getDefaultMetrics;
|
|
37
|
+
private watchMappings;
|
|
38
|
+
private generateWatchId;
|
|
39
|
+
private storeWatchMapping;
|
|
40
|
+
private getServiceWatchId;
|
|
41
|
+
private cleanupWatchMapping;
|
|
42
|
+
}
|
|
43
|
+
export declare class MCPServiceDiscovery extends EventEmitter {
|
|
44
|
+
private mcpRegistry;
|
|
45
|
+
private capabilityMatcher;
|
|
46
|
+
private performanceTracker;
|
|
47
|
+
constructor();
|
|
48
|
+
discoverMCPServers(requirements: MCPRequirements): Promise<MCPServerInfo[]>;
|
|
49
|
+
registerMCPServer(serverInfo: MCPServerInfo): Promise<void>;
|
|
50
|
+
deregisterMCPServer(serverId: string): Promise<void>;
|
|
51
|
+
private filterByPerformance;
|
|
52
|
+
private meetsPerformanceRequirement;
|
|
53
|
+
private rankMCPServers;
|
|
54
|
+
private calculateMCPScore;
|
|
55
|
+
private calculateMCPPerformanceScore;
|
|
56
|
+
private calculateRecencyScore;
|
|
57
|
+
private validateMCPServer;
|
|
58
|
+
private introspectCapabilities;
|
|
59
|
+
}
|
|
60
|
+
interface DiscoveryConfig {
|
|
61
|
+
healthCheck: HealthCheckConfig;
|
|
62
|
+
announcement: AnnouncementConfig;
|
|
63
|
+
discoveryInterval: number;
|
|
64
|
+
}
|
|
65
|
+
interface HealthCheckConfig {
|
|
66
|
+
interval: number;
|
|
67
|
+
timeout: number;
|
|
68
|
+
retries: number;
|
|
69
|
+
}
|
|
70
|
+
interface AnnouncementConfig {
|
|
71
|
+
enabled: boolean;
|
|
72
|
+
services: string[];
|
|
73
|
+
}
|
|
74
|
+
declare class AgentDiscoveryError extends Error {
|
|
75
|
+
constructor(message: string);
|
|
76
|
+
}
|
|
77
|
+
declare class MCPDiscoveryError extends Error {
|
|
78
|
+
constructor(message: string);
|
|
79
|
+
}
|
|
80
|
+
export { AgentDiscoveryError, MCPDiscoveryError };
|
|
81
|
+
//# sourceMappingURL=service-discovery.d.ts.map
|