buildhive-agent 1.0.0-beta.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.
Files changed (170) hide show
  1. package/README.md +166 -0
  2. package/dist/__tests__/fakes/FakeDockerManager.d.ts +115 -0
  3. package/dist/__tests__/fakes/FakeDockerManager.d.ts.map +1 -0
  4. package/dist/__tests__/fakes/FakeDockerManager.js +203 -0
  5. package/dist/__tests__/fakes/FakeDockerManager.js.map +1 -0
  6. package/dist/acceptanceChecker.d.ts +26 -0
  7. package/dist/acceptanceChecker.d.ts.map +1 -0
  8. package/dist/acceptanceChecker.js +64 -0
  9. package/dist/acceptanceChecker.js.map +1 -0
  10. package/dist/advancedAgent.d.ts +161 -0
  11. package/dist/advancedAgent.d.ts.map +1 -0
  12. package/dist/advancedAgent.js +604 -0
  13. package/dist/advancedAgent.js.map +1 -0
  14. package/dist/agent.d.ts +101 -0
  15. package/dist/agent.d.ts.map +1 -0
  16. package/dist/agent.js +490 -0
  17. package/dist/agent.js.map +1 -0
  18. package/dist/api/jobStatusApi.d.ts +88 -0
  19. package/dist/api/jobStatusApi.d.ts.map +1 -0
  20. package/dist/api/jobStatusApi.js +240 -0
  21. package/dist/api/jobStatusApi.js.map +1 -0
  22. package/dist/autoUpdater.d.ts +135 -0
  23. package/dist/autoUpdater.d.ts.map +1 -0
  24. package/dist/autoUpdater.js +494 -0
  25. package/dist/autoUpdater.js.map +1 -0
  26. package/dist/cacheManager.d.ts +108 -0
  27. package/dist/cacheManager.d.ts.map +1 -0
  28. package/dist/cacheManager.js +300 -0
  29. package/dist/cacheManager.js.map +1 -0
  30. package/dist/cli.d.ts +11 -0
  31. package/dist/cli.d.ts.map +1 -0
  32. package/dist/cli.js +749 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/config/index.d.ts +30 -0
  35. package/dist/config/index.d.ts.map +1 -0
  36. package/dist/config/index.js +35 -0
  37. package/dist/config/index.js.map +1 -0
  38. package/dist/config/loader.d.ts +45 -0
  39. package/dist/config/loader.d.ts.map +1 -0
  40. package/dist/config/loader.js +269 -0
  41. package/dist/config/loader.js.map +1 -0
  42. package/dist/config/types.d.ts +193 -0
  43. package/dist/config/types.d.ts.map +1 -0
  44. package/dist/config/types.js +90 -0
  45. package/dist/config/types.js.map +1 -0
  46. package/dist/config/validation.d.ts +28 -0
  47. package/dist/config/validation.d.ts.map +1 -0
  48. package/dist/config/validation.js +397 -0
  49. package/dist/config/validation.js.map +1 -0
  50. package/dist/docker.d.ts +96 -0
  51. package/dist/docker.d.ts.map +1 -0
  52. package/dist/docker.js +411 -0
  53. package/dist/docker.js.map +1 -0
  54. package/dist/enhancedJobExecutor.d.ts +81 -0
  55. package/dist/enhancedJobExecutor.d.ts.map +1 -0
  56. package/dist/enhancedJobExecutor.js +223 -0
  57. package/dist/enhancedJobExecutor.js.map +1 -0
  58. package/dist/executors/executorFactory.d.ts +46 -0
  59. package/dist/executors/executorFactory.d.ts.map +1 -0
  60. package/dist/executors/executorFactory.js +80 -0
  61. package/dist/executors/executorFactory.js.map +1 -0
  62. package/dist/executors/index.d.ts +7 -0
  63. package/dist/executors/index.d.ts.map +1 -0
  64. package/dist/executors/index.js +6 -0
  65. package/dist/executors/index.js.map +1 -0
  66. package/dist/executors/nativeExecutor.d.ts +60 -0
  67. package/dist/executors/nativeExecutor.d.ts.map +1 -0
  68. package/dist/executors/nativeExecutor.js +311 -0
  69. package/dist/executors/nativeExecutor.js.map +1 -0
  70. package/dist/executors/types.d.ts +38 -0
  71. package/dist/executors/types.d.ts.map +1 -0
  72. package/dist/executors/types.js +9 -0
  73. package/dist/executors/types.js.map +1 -0
  74. package/dist/healthMonitor.d.ts +213 -0
  75. package/dist/healthMonitor.d.ts.map +1 -0
  76. package/dist/healthMonitor.js +547 -0
  77. package/dist/healthMonitor.js.map +1 -0
  78. package/dist/index.d.ts +16 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +16 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/jobExecutor.d.ts +117 -0
  83. package/dist/jobExecutor.d.ts.map +1 -0
  84. package/dist/jobExecutor.js +458 -0
  85. package/dist/jobExecutor.js.map +1 -0
  86. package/dist/lifecycleExecutor.d.ts +54 -0
  87. package/dist/lifecycleExecutor.d.ts.map +1 -0
  88. package/dist/lifecycleExecutor.js +230 -0
  89. package/dist/lifecycleExecutor.js.map +1 -0
  90. package/dist/main.d.ts +15 -0
  91. package/dist/main.d.ts.map +1 -0
  92. package/dist/main.js +77 -0
  93. package/dist/main.js.map +1 -0
  94. package/dist/metrics.d.ts +103 -0
  95. package/dist/metrics.d.ts.map +1 -0
  96. package/dist/metrics.js +360 -0
  97. package/dist/metrics.js.map +1 -0
  98. package/dist/recipes/builtinRecipes.d.ts +11 -0
  99. package/dist/recipes/builtinRecipes.d.ts.map +1 -0
  100. package/dist/recipes/builtinRecipes.js +688 -0
  101. package/dist/recipes/builtinRecipes.js.map +1 -0
  102. package/dist/recipes/index.d.ts +18 -0
  103. package/dist/recipes/index.d.ts.map +1 -0
  104. package/dist/recipes/index.js +17 -0
  105. package/dist/recipes/index.js.map +1 -0
  106. package/dist/recipes/recipeRegistry.d.ts +49 -0
  107. package/dist/recipes/recipeRegistry.d.ts.map +1 -0
  108. package/dist/recipes/recipeRegistry.js +264 -0
  109. package/dist/recipes/recipeRegistry.js.map +1 -0
  110. package/dist/recipes/types.d.ts +116 -0
  111. package/dist/recipes/types.d.ts.map +1 -0
  112. package/dist/recipes/types.js +10 -0
  113. package/dist/recipes/types.js.map +1 -0
  114. package/dist/recovery.d.ts +133 -0
  115. package/dist/recovery.d.ts.map +1 -0
  116. package/dist/recovery.js +299 -0
  117. package/dist/recovery.js.map +1 -0
  118. package/dist/registration/apiClient.d.ts +44 -0
  119. package/dist/registration/apiClient.d.ts.map +1 -0
  120. package/dist/registration/apiClient.js +149 -0
  121. package/dist/registration/apiClient.js.map +1 -0
  122. package/dist/registration/index.d.ts +41 -0
  123. package/dist/registration/index.d.ts.map +1 -0
  124. package/dist/registration/index.js +141 -0
  125. package/dist/registration/index.js.map +1 -0
  126. package/dist/registration/machineId.d.ts +30 -0
  127. package/dist/registration/machineId.d.ts.map +1 -0
  128. package/dist/registration/machineId.js +89 -0
  129. package/dist/registration/machineId.js.map +1 -0
  130. package/dist/registration/types.d.ts +32 -0
  131. package/dist/registration/types.d.ts.map +1 -0
  132. package/dist/registration/types.js +9 -0
  133. package/dist/registration/types.js.map +1 -0
  134. package/dist/resourceGovernor.d.ts +57 -0
  135. package/dist/resourceGovernor.d.ts.map +1 -0
  136. package/dist/resourceGovernor.js +125 -0
  137. package/dist/resourceGovernor.js.map +1 -0
  138. package/dist/security/secretManager.d.ts +107 -0
  139. package/dist/security/secretManager.d.ts.map +1 -0
  140. package/dist/security/secretManager.js +361 -0
  141. package/dist/security/secretManager.js.map +1 -0
  142. package/dist/security.d.ts +134 -0
  143. package/dist/security.d.ts.map +1 -0
  144. package/dist/security.js +470 -0
  145. package/dist/security.js.map +1 -0
  146. package/dist/storage/artifactUploader.d.ts +155 -0
  147. package/dist/storage/artifactUploader.d.ts.map +1 -0
  148. package/dist/storage/artifactUploader.js +554 -0
  149. package/dist/storage/artifactUploader.js.map +1 -0
  150. package/dist/types.d.ts +49 -0
  151. package/dist/types.d.ts.map +1 -0
  152. package/dist/types.js +7 -0
  153. package/dist/types.js.map +1 -0
  154. package/dist/utils/capabilities.d.ts +23 -0
  155. package/dist/utils/capabilities.d.ts.map +1 -0
  156. package/dist/utils/capabilities.js +200 -0
  157. package/dist/utils/capabilities.js.map +1 -0
  158. package/dist/utils/logger.d.ts +20 -0
  159. package/dist/utils/logger.d.ts.map +1 -0
  160. package/dist/utils/logger.js +188 -0
  161. package/dist/utils/logger.js.map +1 -0
  162. package/dist/utils/sdkScanner.d.ts +105 -0
  163. package/dist/utils/sdkScanner.d.ts.map +1 -0
  164. package/dist/utils/sdkScanner.js +459 -0
  165. package/dist/utils/sdkScanner.js.map +1 -0
  166. package/dist/websocketClient.d.ts +154 -0
  167. package/dist/websocketClient.d.ts.map +1 -0
  168. package/dist/websocketClient.js +422 -0
  169. package/dist/websocketClient.js.map +1 -0
  170. package/package.json +64 -0
@@ -0,0 +1,547 @@
1
+ /**
2
+ * Health Monitor Module
3
+ *
4
+ * Advanced health monitoring system for the BuildHive agent including:
5
+ * - System resource monitoring
6
+ * - Performance metrics tracking
7
+ * - Predictive health analysis
8
+ * - Automated recovery actions
9
+ *
10
+ * Requirements: 6.1
11
+ */
12
+ import * as os from 'os';
13
+ import * as fs from 'fs';
14
+ import { EventEmitter } from 'events';
15
+ import { createLogger } from './utils/logger.js';
16
+ const logger = createLogger('health-monitor');
17
+ export class HealthMonitor extends EventEmitter {
18
+ thresholds;
19
+ metrics = [];
20
+ alerts = new Map();
21
+ monitoringInterval = null;
22
+ isMonitoring = false;
23
+ maxMetricsHistory = 1000;
24
+ jobStats = [];
25
+ constructor(thresholds) {
26
+ super();
27
+ this.thresholds = {
28
+ cpu: { warning: 70, critical: 90 },
29
+ memory: { warning: 80, critical: 95 },
30
+ disk: { warning: 85, critical: 95 },
31
+ errorRate: { warning: 10, critical: 25 },
32
+ responseTime: { warning: 30, critical: 60 },
33
+ ...thresholds
34
+ };
35
+ }
36
+ /**
37
+ * Start health monitoring
38
+ */
39
+ start(intervalSeconds = 30) {
40
+ if (this.isMonitoring) {
41
+ logger.warn('Health monitoring is already running');
42
+ return;
43
+ }
44
+ logger.info('Starting health monitoring', {
45
+ interval: intervalSeconds,
46
+ thresholds: this.thresholds
47
+ });
48
+ this.isMonitoring = true;
49
+ // Perform initial health check
50
+ this.collectMetrics().catch(error => {
51
+ logger.error('Initial health check failed:', error);
52
+ });
53
+ // Schedule periodic monitoring
54
+ this.monitoringInterval = setInterval(async () => {
55
+ try {
56
+ await this.collectMetrics();
57
+ await this.analyzeHealth();
58
+ await this.checkForRecovery();
59
+ }
60
+ catch (error) {
61
+ logger.error('Health monitoring cycle failed:', error);
62
+ }
63
+ }, intervalSeconds * 1000);
64
+ this.emit('started');
65
+ }
66
+ /**
67
+ * Stop health monitoring
68
+ */
69
+ stop() {
70
+ if (this.monitoringInterval) {
71
+ clearInterval(this.monitoringInterval);
72
+ this.monitoringInterval = null;
73
+ }
74
+ this.isMonitoring = false;
75
+ logger.info('Health monitoring stopped');
76
+ this.emit('stopped');
77
+ }
78
+ /**
79
+ * Get current health status
80
+ */
81
+ getCurrentHealth() {
82
+ const latestMetrics = this.metrics[this.metrics.length - 1] || null;
83
+ const activeAlerts = Array.from(this.alerts.values()).filter(alert => !alert.resolved);
84
+ const trends = this.calculateTrends();
85
+ const status = this.determineOverallStatus(activeAlerts);
86
+ const score = this.calculateHealthScore(latestMetrics, activeAlerts);
87
+ return {
88
+ status,
89
+ metrics: latestMetrics,
90
+ activeAlerts,
91
+ trends,
92
+ score
93
+ };
94
+ }
95
+ /**
96
+ * Record job execution for health tracking
97
+ */
98
+ recordJobExecution(duration, success) {
99
+ this.jobStats.push({
100
+ duration,
101
+ success,
102
+ timestamp: new Date()
103
+ });
104
+ // Keep only recent job stats
105
+ const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
106
+ this.jobStats = this.jobStats.filter(stat => stat.timestamp > oneHourAgo);
107
+ }
108
+ /**
109
+ * Get health history
110
+ */
111
+ getHealthHistory(hours = 24) {
112
+ const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000);
113
+ return this.metrics.filter(metric => metric.timestamp > cutoff);
114
+ }
115
+ /**
116
+ * Get alert history
117
+ */
118
+ getAlertHistory(hours = 24) {
119
+ const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000);
120
+ return Array.from(this.alerts.values()).filter(alert => alert.timestamp > cutoff);
121
+ }
122
+ /**
123
+ * Update health thresholds
124
+ */
125
+ updateThresholds(newThresholds) {
126
+ this.thresholds = { ...this.thresholds, ...newThresholds };
127
+ logger.info('Health thresholds updated', this.thresholds);
128
+ this.emit('thresholdsUpdated', this.thresholds);
129
+ }
130
+ /**
131
+ * Collect comprehensive health metrics
132
+ */
133
+ async collectMetrics() {
134
+ try {
135
+ const timestamp = new Date();
136
+ // System metrics
137
+ const systemMetrics = await this.collectSystemMetrics();
138
+ // Process metrics
139
+ const processMetrics = this.collectProcessMetrics();
140
+ // Application metrics
141
+ const applicationMetrics = this.collectApplicationMetrics();
142
+ const metrics = {
143
+ timestamp,
144
+ system: systemMetrics,
145
+ process: processMetrics,
146
+ application: applicationMetrics
147
+ };
148
+ this.metrics.push(metrics);
149
+ // Maintain metrics history limit
150
+ if (this.metrics.length > this.maxMetricsHistory) {
151
+ this.metrics = this.metrics.slice(-this.maxMetricsHistory);
152
+ }
153
+ this.emit('metricsCollected', metrics);
154
+ }
155
+ catch (error) {
156
+ logger.error('Failed to collect health metrics:', error);
157
+ throw error;
158
+ }
159
+ }
160
+ /**
161
+ * Collect system-level metrics
162
+ */
163
+ async collectSystemMetrics() {
164
+ const cpuUsage = await this.getCpuUsage();
165
+ const memoryUsage = this.getMemoryUsage();
166
+ const diskUsage = await this.getDiskUsage();
167
+ const loadAverage = os.loadavg();
168
+ const uptime = os.uptime();
169
+ const networkConnections = await this.getNetworkConnections();
170
+ return {
171
+ cpuUsage,
172
+ memoryUsage,
173
+ diskUsage,
174
+ loadAverage,
175
+ uptime,
176
+ networkConnections
177
+ };
178
+ }
179
+ /**
180
+ * Collect process-level metrics
181
+ */
182
+ collectProcessMetrics() {
183
+ const memoryUsage = process.memoryUsage();
184
+ const cpuUsage = process.cpuUsage();
185
+ const uptime = process.uptime();
186
+ // Get active handles and requests (Node.js specific)
187
+ const activeHandles = process._getActiveHandles?.()?.length || 0;
188
+ const activeRequests = process._getActiveRequests?.()?.length || 0;
189
+ return {
190
+ memoryUsage,
191
+ cpuUsage,
192
+ uptime,
193
+ activeHandles,
194
+ activeRequests
195
+ };
196
+ }
197
+ /**
198
+ * Collect application-level metrics
199
+ */
200
+ collectApplicationMetrics() {
201
+ const recentJobs = this.jobStats.filter(job => Date.now() - job.timestamp.getTime() < 60 * 60 * 1000 // Last hour
202
+ );
203
+ const totalJobs = recentJobs.length;
204
+ const successfulJobs = recentJobs.filter(job => job.success).length;
205
+ const jobSuccessRate = totalJobs > 0 ? (successfulJobs / totalJobs) * 100 : 100;
206
+ const errorRate = 100 - jobSuccessRate;
207
+ const averageJobDuration = totalJobs > 0 ?
208
+ recentJobs.reduce((sum, job) => sum + job.duration, 0) / totalJobs : 0;
209
+ // Mock response time - in real implementation, this would track API response times
210
+ const responseTime = Math.random() * 10 + 5; // 5-15 seconds
211
+ return {
212
+ activeJobs: 0, // Would be tracked by the agent
213
+ jobSuccessRate,
214
+ averageJobDuration,
215
+ errorRate,
216
+ responseTime
217
+ };
218
+ }
219
+ /**
220
+ * Analyze health and generate alerts
221
+ */
222
+ async analyzeHealth() {
223
+ const latestMetrics = this.metrics[this.metrics.length - 1];
224
+ if (!latestMetrics)
225
+ return;
226
+ // Check CPU usage
227
+ this.checkThreshold('cpu', latestMetrics.system.cpuUsage, this.thresholds.cpu, 'system');
228
+ // Check memory usage
229
+ this.checkThreshold('memory', latestMetrics.system.memoryUsage, this.thresholds.memory, 'system');
230
+ // Check disk usage
231
+ this.checkThreshold('disk', latestMetrics.system.diskUsage, this.thresholds.disk, 'system');
232
+ // Check error rate
233
+ this.checkThreshold('errorRate', latestMetrics.application.errorRate, this.thresholds.errorRate, 'application');
234
+ // Check response time
235
+ this.checkThreshold('responseTime', latestMetrics.application.responseTime, this.thresholds.responseTime, 'application');
236
+ // Check for memory leaks
237
+ this.checkMemoryLeak(latestMetrics);
238
+ // Check for performance degradation
239
+ this.checkPerformanceDegradation();
240
+ }
241
+ /**
242
+ * Check a metric against thresholds
243
+ */
244
+ checkThreshold(metric, value, threshold, category) {
245
+ const alertId = `${category}-${metric}`;
246
+ const existingAlert = this.alerts.get(alertId);
247
+ if (value >= threshold.critical) {
248
+ if (!existingAlert || existingAlert.severity !== 'critical') {
249
+ this.createAlert(alertId, 'critical', category, metric, value, threshold.critical);
250
+ }
251
+ }
252
+ else if (value >= threshold.warning) {
253
+ if (!existingAlert || existingAlert.severity !== 'warning') {
254
+ this.createAlert(alertId, 'warning', category, metric, value, threshold.warning);
255
+ }
256
+ }
257
+ else if (existingAlert && !existingAlert.resolved) {
258
+ // Resolve existing alert
259
+ this.resolveAlert(alertId);
260
+ }
261
+ }
262
+ /**
263
+ * Check for memory leaks
264
+ */
265
+ checkMemoryLeak(metrics) {
266
+ if (this.metrics.length < 10)
267
+ return; // Need enough history
268
+ const recentMetrics = this.metrics.slice(-10);
269
+ const memoryTrend = this.calculateLinearTrend(recentMetrics.map(m => m.process.memoryUsage.heapUsed));
270
+ // If memory is consistently growing and above threshold
271
+ if (memoryTrend.slope > 1024 * 1024 && metrics.process.memoryUsage.heapUsed > 200 * 1024 * 1024) { // 1MB/check, 200MB total
272
+ this.createAlert('memory-leak', 'warning', 'process', 'memoryLeak', metrics.process.memoryUsage.heapUsed, 200 * 1024 * 1024);
273
+ }
274
+ }
275
+ /**
276
+ * Check for performance degradation
277
+ */
278
+ checkPerformanceDegradation() {
279
+ if (this.jobStats.length < 10)
280
+ return;
281
+ const recentJobs = this.jobStats.slice(-10);
282
+ const olderJobs = this.jobStats.slice(-20, -10);
283
+ if (olderJobs.length === 0)
284
+ return;
285
+ const recentAvgDuration = recentJobs.reduce((sum, job) => sum + job.duration, 0) / recentJobs.length;
286
+ const olderAvgDuration = olderJobs.reduce((sum, job) => sum + job.duration, 0) / olderJobs.length;
287
+ // If recent jobs are taking 50% longer on average
288
+ if (recentAvgDuration > olderAvgDuration * 1.5) {
289
+ this.createAlert('performance-degradation', 'warning', 'application', 'jobDuration', recentAvgDuration, olderAvgDuration * 1.5);
290
+ }
291
+ }
292
+ /**
293
+ * Create a new alert
294
+ */
295
+ createAlert(id, severity, category, metric, value, threshold) {
296
+ const alert = {
297
+ id,
298
+ severity,
299
+ category,
300
+ metric,
301
+ message: this.generateAlertMessage(metric, value, threshold, severity),
302
+ value,
303
+ threshold,
304
+ timestamp: new Date()
305
+ };
306
+ this.alerts.set(id, alert);
307
+ logger.warn(`Health alert created: ${alert.message}`, {
308
+ id,
309
+ severity,
310
+ category,
311
+ metric,
312
+ value,
313
+ threshold
314
+ });
315
+ this.emit('alert', alert);
316
+ // Trigger recovery actions for critical alerts
317
+ if (severity === 'critical') {
318
+ this.triggerRecoveryAction(alert);
319
+ }
320
+ }
321
+ /**
322
+ * Resolve an alert
323
+ */
324
+ resolveAlert(id) {
325
+ const alert = this.alerts.get(id);
326
+ if (alert && !alert.resolved) {
327
+ alert.resolved = new Date();
328
+ logger.info(`Health alert resolved: ${alert.message}`, { id });
329
+ this.emit('alertResolved', alert);
330
+ }
331
+ }
332
+ /**
333
+ * Generate alert message
334
+ */
335
+ generateAlertMessage(metric, value, threshold, severity) {
336
+ const formatValue = (val) => {
337
+ if (metric.includes('memory') || metric.includes('Memory')) {
338
+ return `${(val / 1024 / 1024).toFixed(1)}MB`;
339
+ }
340
+ if (metric.includes('Usage') || metric.includes('Rate')) {
341
+ return `${val.toFixed(1)}%`;
342
+ }
343
+ return val.toFixed(1);
344
+ };
345
+ return `${severity.toUpperCase()}: ${metric} is ${formatValue(value)} (threshold: ${formatValue(threshold)})`;
346
+ }
347
+ /**
348
+ * Calculate trends for metrics
349
+ */
350
+ calculateTrends() {
351
+ if (this.metrics.length < 5)
352
+ return [];
353
+ const trends = [];
354
+ const recentMetrics = this.metrics.slice(-10);
355
+ // CPU trend
356
+ const cpuValues = recentMetrics.map(m => m.system.cpuUsage);
357
+ const cpuTrend = this.calculateLinearTrend(cpuValues);
358
+ trends.push(this.createTrend('cpu', cpuTrend, this.thresholds.cpu.warning));
359
+ // Memory trend
360
+ const memoryValues = recentMetrics.map(m => m.system.memoryUsage);
361
+ const memoryTrend = this.calculateLinearTrend(memoryValues);
362
+ trends.push(this.createTrend('memory', memoryTrend, this.thresholds.memory.warning));
363
+ // Error rate trend
364
+ const errorValues = recentMetrics.map(m => m.application.errorRate);
365
+ const errorTrend = this.calculateLinearTrend(errorValues);
366
+ trends.push(this.createTrend('errorRate', errorTrend, this.thresholds.errorRate.warning));
367
+ return trends;
368
+ }
369
+ /**
370
+ * Create trend analysis
371
+ */
372
+ createTrend(metric, trend, threshold) {
373
+ const direction = Math.abs(trend.slope) < 0.1 ? 'stable' :
374
+ trend.slope > 0 ? 'degrading' : 'improving';
375
+ const confidence = Math.min(100, trend.r2 * 100);
376
+ // Predict next value (simplified)
377
+ const currentValue = this.metrics[this.metrics.length - 1];
378
+ const nextValue = this.getMetricValue(currentValue, metric) + trend.slope;
379
+ // Calculate time to threshold
380
+ let timeToThreshold;
381
+ if (direction === 'degrading' && trend.slope > 0) {
382
+ const currentVal = this.getMetricValue(currentValue, metric);
383
+ if (currentVal < threshold) {
384
+ timeToThreshold = Math.max(0, (threshold - currentVal) / trend.slope * 30); // 30 seconds per data point
385
+ }
386
+ }
387
+ return {
388
+ metric,
389
+ direction,
390
+ confidence,
391
+ prediction: {
392
+ nextValue,
393
+ timeToThreshold
394
+ }
395
+ };
396
+ }
397
+ /**
398
+ * Get metric value from health metrics
399
+ */
400
+ getMetricValue(metrics, metric) {
401
+ switch (metric) {
402
+ case 'cpu': return metrics.system.cpuUsage;
403
+ case 'memory': return metrics.system.memoryUsage;
404
+ case 'disk': return metrics.system.diskUsage;
405
+ case 'errorRate': return metrics.application.errorRate;
406
+ case 'responseTime': return metrics.application.responseTime;
407
+ default: return 0;
408
+ }
409
+ }
410
+ /**
411
+ * Calculate linear trend
412
+ */
413
+ calculateLinearTrend(values) {
414
+ if (values.length < 2)
415
+ return { slope: 0, r2: 0 };
416
+ const n = values.length;
417
+ const x = Array.from({ length: n }, (_, i) => i);
418
+ const y = values;
419
+ const sumX = x.reduce((a, b) => a + b, 0);
420
+ const sumY = y.reduce((a, b) => a + b, 0);
421
+ const sumXY = x.reduce((sum, xi, i) => sum + xi * y[i], 0);
422
+ const sumXX = x.reduce((sum, xi) => sum + xi * xi, 0);
423
+ const sumYY = y.reduce((sum, yi) => sum + yi * yi, 0);
424
+ const slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
425
+ const intercept = (sumY - slope * sumX) / n;
426
+ // Calculate R-squared
427
+ const yMean = sumY / n;
428
+ const ssRes = y.reduce((sum, yi, i) => {
429
+ const predicted = slope * x[i] + intercept;
430
+ return sum + Math.pow(yi - predicted, 2);
431
+ }, 0);
432
+ const ssTot = y.reduce((sum, yi) => sum + Math.pow(yi - yMean, 2), 0);
433
+ const r2 = ssTot === 0 ? 1 : 1 - (ssRes / ssTot);
434
+ return { slope, r2: Math.max(0, r2) };
435
+ }
436
+ /**
437
+ * Determine overall health status
438
+ */
439
+ determineOverallStatus(alerts) {
440
+ if (alerts.some(alert => alert.severity === 'critical')) {
441
+ return 'critical';
442
+ }
443
+ if (alerts.some(alert => alert.severity === 'warning')) {
444
+ return 'warning';
445
+ }
446
+ return 'healthy';
447
+ }
448
+ /**
449
+ * Calculate overall health score
450
+ */
451
+ calculateHealthScore(metrics, alerts) {
452
+ if (!metrics)
453
+ return 0;
454
+ let score = 100;
455
+ // Deduct points for active alerts
456
+ alerts.forEach(alert => {
457
+ if (alert.severity === 'critical') {
458
+ score -= 30;
459
+ }
460
+ else if (alert.severity === 'warning') {
461
+ score -= 15;
462
+ }
463
+ });
464
+ // Deduct points based on metric values
465
+ score -= Math.max(0, (metrics.system.cpuUsage - 50) / 2);
466
+ score -= Math.max(0, (metrics.system.memoryUsage - 60) / 2);
467
+ score -= Math.max(0, (metrics.application.errorRate - 5) * 2);
468
+ return Math.max(0, Math.min(100, score));
469
+ }
470
+ /**
471
+ * Trigger recovery actions for critical alerts
472
+ */
473
+ triggerRecoveryAction(alert) {
474
+ logger.info(`Triggering recovery action for critical alert: ${alert.metric}`);
475
+ switch (alert.metric) {
476
+ case 'memory':
477
+ this.triggerGarbageCollection();
478
+ break;
479
+ case 'cpu':
480
+ this.reduceProcessingLoad();
481
+ break;
482
+ case 'disk':
483
+ this.cleanupTempFiles();
484
+ break;
485
+ default:
486
+ logger.debug(`No specific recovery action for metric: ${alert.metric}`);
487
+ }
488
+ this.emit('recoveryAction', { alert, action: alert.metric });
489
+ }
490
+ /**
491
+ * Check for alert recovery
492
+ */
493
+ async checkForRecovery() {
494
+ // This would implement logic to check if critical conditions have improved
495
+ // and potentially restart services or take other recovery actions
496
+ }
497
+ /**
498
+ * Recovery action implementations
499
+ */
500
+ triggerGarbageCollection() {
501
+ if (global.gc) {
502
+ global.gc();
503
+ logger.info('Garbage collection triggered');
504
+ }
505
+ }
506
+ reduceProcessingLoad() {
507
+ // This would implement logic to reduce CPU load
508
+ logger.info('Processing load reduction triggered');
509
+ }
510
+ cleanupTempFiles() {
511
+ // This would implement logic to clean up temporary files
512
+ logger.info('Temporary file cleanup triggered');
513
+ }
514
+ /**
515
+ * System metric collection helpers
516
+ */
517
+ async getCpuUsage() {
518
+ // Simple CPU usage calculation
519
+ const startUsage = process.cpuUsage();
520
+ await new Promise(resolve => setTimeout(resolve, 100));
521
+ const endUsage = process.cpuUsage(startUsage);
522
+ const totalUsage = endUsage.user + endUsage.system;
523
+ return (totalUsage / 100000) / os.cpus().length; // Convert to percentage
524
+ }
525
+ getMemoryUsage() {
526
+ const totalMem = os.totalmem();
527
+ const freeMem = os.freemem();
528
+ return ((totalMem - freeMem) / totalMem) * 100;
529
+ }
530
+ async getDiskUsage() {
531
+ try {
532
+ const stats = fs.statSync(process.cwd());
533
+ // This is a simplified implementation
534
+ // In practice, you'd use a library like 'diskusage' or system commands
535
+ return Math.random() * 100; // Mock value
536
+ }
537
+ catch (error) {
538
+ return 0;
539
+ }
540
+ }
541
+ async getNetworkConnections() {
542
+ // This would count active network connections
543
+ // For now, return a mock value
544
+ return Math.floor(Math.random() * 50);
545
+ }
546
+ }
547
+ //# sourceMappingURL=healthMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthMonitor.js","sourceRoot":"","sources":["../src/healthMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * BuildHive Agent - Main Export
3
+ *
4
+ * Main entry point for the BuildHive agent package
5
+ */
6
+ export { BuildHiveAgent } from './agent.js';
7
+ export { JobExecutor } from './jobExecutor.js';
8
+ export { WebSocketClient } from './websocketClient.js';
9
+ export { MetricsCollector } from './metrics.js';
10
+ export { DockerManager } from './docker.js';
11
+ export * from './config/index.js';
12
+ export * from './types.js';
13
+ export * from './utils/logger.js';
14
+ export * from './utils/capabilities.js';
15
+ export { main } from './main.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * BuildHive Agent - Main Export
3
+ *
4
+ * Main entry point for the BuildHive agent package
5
+ */
6
+ export { BuildHiveAgent } from './agent.js';
7
+ export { JobExecutor } from './jobExecutor.js';
8
+ export { WebSocketClient } from './websocketClient.js';
9
+ export { MetricsCollector } from './metrics.js';
10
+ export { DockerManager } from './docker.js';
11
+ export * from './config/index.js';
12
+ export * from './types.js';
13
+ export * from './utils/logger.js';
14
+ export * from './utils/capabilities.js';
15
+ export { main } from './main.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}