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,360 @@
1
+ /**
2
+ * Metrics Collector - System metrics collection and reporting
3
+ *
4
+ * Collects system performance metrics including CPU, memory, disk usage,
5
+ * and network statistics for monitoring and load balancing decisions.
6
+ *
7
+ * Requirements: 1.5, 1.6, 5.1, 5.2
8
+ */
9
+ import { createLogger } from './utils/logger.js';
10
+ import { promises as fs } from 'fs';
11
+ import { exec } from 'child_process';
12
+ import { promisify } from 'util';
13
+ import os from 'os';
14
+ const execAsync = promisify(exec);
15
+ const logger = createLogger('metrics');
16
+ export class MetricsCollector {
17
+ config;
18
+ isRunning = false;
19
+ metricsHistory = [];
20
+ maxHistorySize = 100;
21
+ lastNetworkStats = null;
22
+ jobStats = {
23
+ active: 0,
24
+ queued: 0,
25
+ completed: 0,
26
+ failed: 0
27
+ };
28
+ constructor(config) {
29
+ this.config = config;
30
+ }
31
+ /**
32
+ * Start metrics collection
33
+ */
34
+ async start() {
35
+ if (this.isRunning) {
36
+ logger.warn('Metrics collector is already running');
37
+ return;
38
+ }
39
+ logger.info('Starting metrics collector');
40
+ this.isRunning = true;
41
+ // Initialize network stats
42
+ await this.initializeNetworkStats();
43
+ }
44
+ /**
45
+ * Stop metrics collection
46
+ */
47
+ async stop() {
48
+ if (!this.isRunning) {
49
+ logger.warn('Metrics collector is not running');
50
+ return;
51
+ }
52
+ logger.info('Stopping metrics collector');
53
+ this.isRunning = false;
54
+ }
55
+ /**
56
+ * Get current system metrics
57
+ */
58
+ async getCurrentMetrics() {
59
+ const metrics = {
60
+ cpuUsage: await this.getCpuUsage(),
61
+ memoryUsage: await this.getMemoryUsage(),
62
+ diskUsage: await this.getDiskUsage(),
63
+ networkIn: 0,
64
+ networkOut: 0,
65
+ activeJobs: this.jobStats.active,
66
+ queuedJobs: this.jobStats.queued,
67
+ completedJobs: this.jobStats.completed,
68
+ failedJobs: this.jobStats.failed,
69
+ timestamp: new Date()
70
+ };
71
+ // Get network stats
72
+ const networkStats = await this.getNetworkStats();
73
+ metrics.networkIn = networkStats.bytesIn;
74
+ metrics.networkOut = networkStats.bytesOut;
75
+ // Add to history
76
+ this.addToHistory(metrics);
77
+ return metrics;
78
+ }
79
+ /**
80
+ * Get metrics history
81
+ */
82
+ getMetricsHistory() {
83
+ return [...this.metricsHistory];
84
+ }
85
+ /**
86
+ * Update job statistics
87
+ */
88
+ updateJobStats(stats) {
89
+ Object.assign(this.jobStats, stats);
90
+ }
91
+ /**
92
+ * Get CPU usage percentage
93
+ */
94
+ async getCpuUsage() {
95
+ try {
96
+ const cpus = os.cpus();
97
+ // Calculate CPU usage over a short interval
98
+ const startMeasure = this.getCpuTimes();
99
+ // Wait 100ms for measurement
100
+ await new Promise(resolve => setTimeout(resolve, 100));
101
+ const endMeasure = this.getCpuTimes();
102
+ const idleDiff = endMeasure.idle - startMeasure.idle;
103
+ const totalDiff = endMeasure.total - startMeasure.total;
104
+ const usage = 100 - (100 * idleDiff / totalDiff);
105
+ return Math.max(0, Math.min(100, usage));
106
+ }
107
+ catch (error) {
108
+ logger.error('Failed to get CPU usage:', error);
109
+ return 0;
110
+ }
111
+ }
112
+ /**
113
+ * Get CPU times for usage calculation
114
+ */
115
+ getCpuTimes() {
116
+ const cpus = os.cpus();
117
+ let idle = 0;
118
+ let total = 0;
119
+ for (const cpu of cpus) {
120
+ for (const type of Object.keys(cpu.times)) {
121
+ total += cpu.times[type];
122
+ }
123
+ idle += cpu.times.idle;
124
+ }
125
+ return { idle, total };
126
+ }
127
+ /**
128
+ * Get memory usage percentage
129
+ */
130
+ async getMemoryUsage() {
131
+ try {
132
+ const totalMemory = os.totalmem();
133
+ const freeMemory = os.freemem();
134
+ const usedMemory = totalMemory - freeMemory;
135
+ return (usedMemory / totalMemory) * 100;
136
+ }
137
+ catch (error) {
138
+ logger.error('Failed to get memory usage:', error);
139
+ return 0;
140
+ }
141
+ }
142
+ /**
143
+ * Get disk usage percentage
144
+ */
145
+ async getDiskUsage() {
146
+ try {
147
+ const platform = os.platform();
148
+ if (platform === 'win32') {
149
+ return await this.getDiskUsageWindows();
150
+ }
151
+ else {
152
+ return await this.getDiskUsageUnix();
153
+ }
154
+ }
155
+ catch (error) {
156
+ logger.error('Failed to get disk usage:', error);
157
+ return 0;
158
+ }
159
+ }
160
+ /**
161
+ * Get disk usage on Unix-like systems
162
+ */
163
+ async getDiskUsageUnix() {
164
+ try {
165
+ const { stdout } = await execAsync('df -h / | tail -1');
166
+ const parts = stdout.trim().split(/\s+/);
167
+ if (parts.length >= 5) {
168
+ const usageStr = parts[4];
169
+ const usage = parseInt(usageStr.replace('%', ''));
170
+ return isNaN(usage) ? 0 : usage;
171
+ }
172
+ return 0;
173
+ }
174
+ catch (error) {
175
+ logger.error('Failed to get Unix disk usage:', error);
176
+ return 0;
177
+ }
178
+ }
179
+ /**
180
+ * Get disk usage on Windows
181
+ */
182
+ async getDiskUsageWindows() {
183
+ try {
184
+ const { stdout } = await execAsync('wmic logicaldisk where size!=0 get size,freespace,caption');
185
+ const lines = stdout.trim().split('\n').slice(1);
186
+ let totalSize = 0;
187
+ let totalFree = 0;
188
+ for (const line of lines) {
189
+ const parts = line.trim().split(/\s+/);
190
+ if (parts.length >= 3) {
191
+ const freeSpace = parseInt(parts[1]);
192
+ const size = parseInt(parts[2]);
193
+ if (!isNaN(freeSpace) && !isNaN(size)) {
194
+ totalFree += freeSpace;
195
+ totalSize += size;
196
+ }
197
+ }
198
+ }
199
+ if (totalSize > 0) {
200
+ return ((totalSize - totalFree) / totalSize) * 100;
201
+ }
202
+ return 0;
203
+ }
204
+ catch (error) {
205
+ logger.error('Failed to get Windows disk usage:', error);
206
+ return 0;
207
+ }
208
+ }
209
+ /**
210
+ * Initialize network statistics
211
+ */
212
+ async initializeNetworkStats() {
213
+ try {
214
+ const stats = await this.readNetworkStats();
215
+ this.lastNetworkStats = {
216
+ bytesIn: stats.bytesIn,
217
+ bytesOut: stats.bytesOut,
218
+ timestamp: Date.now()
219
+ };
220
+ }
221
+ catch (error) {
222
+ logger.error('Failed to initialize network stats:', error);
223
+ }
224
+ }
225
+ /**
226
+ * Get network statistics
227
+ */
228
+ async getNetworkStats() {
229
+ try {
230
+ const currentStats = await this.readNetworkStats();
231
+ const currentTime = Date.now();
232
+ if (!this.lastNetworkStats) {
233
+ this.lastNetworkStats = {
234
+ bytesIn: currentStats.bytesIn,
235
+ bytesOut: currentStats.bytesOut,
236
+ timestamp: currentTime
237
+ };
238
+ return { bytesIn: 0, bytesOut: 0 };
239
+ }
240
+ const timeDiff = (currentTime - this.lastNetworkStats.timestamp) / 1000; // seconds
241
+ const bytesInDiff = currentStats.bytesIn - this.lastNetworkStats.bytesIn;
242
+ const bytesOutDiff = currentStats.bytesOut - this.lastNetworkStats.bytesOut;
243
+ // Calculate bytes per second
244
+ const bytesInPerSec = timeDiff > 0 ? bytesInDiff / timeDiff : 0;
245
+ const bytesOutPerSec = timeDiff > 0 ? bytesOutDiff / timeDiff : 0;
246
+ // Update last stats
247
+ this.lastNetworkStats = {
248
+ bytesIn: currentStats.bytesIn,
249
+ bytesOut: currentStats.bytesOut,
250
+ timestamp: currentTime
251
+ };
252
+ return {
253
+ bytesIn: Math.max(0, bytesInPerSec),
254
+ bytesOut: Math.max(0, bytesOutPerSec)
255
+ };
256
+ }
257
+ catch (error) {
258
+ logger.error('Failed to get network stats:', error);
259
+ return { bytesIn: 0, bytesOut: 0 };
260
+ }
261
+ }
262
+ /**
263
+ * Read network statistics from system
264
+ */
265
+ async readNetworkStats() {
266
+ const platform = os.platform();
267
+ if (platform === 'linux') {
268
+ return await this.readNetworkStatsLinux();
269
+ }
270
+ else if (platform === 'darwin') {
271
+ return await this.readNetworkStatsMacOS();
272
+ }
273
+ else if (platform === 'win32') {
274
+ return await this.readNetworkStatsWindows();
275
+ }
276
+ else {
277
+ return { bytesIn: 0, bytesOut: 0 };
278
+ }
279
+ }
280
+ /**
281
+ * Read network stats on Linux
282
+ */
283
+ async readNetworkStatsLinux() {
284
+ try {
285
+ const data = await fs.readFile('/proc/net/dev', 'utf8');
286
+ const lines = data.split('\n').slice(2); // Skip header lines
287
+ let totalBytesIn = 0;
288
+ let totalBytesOut = 0;
289
+ for (const line of lines) {
290
+ const parts = line.trim().split(/\s+/);
291
+ if (parts.length >= 10 && !parts[0].includes('lo:')) { // Skip loopback
292
+ totalBytesIn += parseInt(parts[1]) || 0;
293
+ totalBytesOut += parseInt(parts[9]) || 0;
294
+ }
295
+ }
296
+ return { bytesIn: totalBytesIn, bytesOut: totalBytesOut };
297
+ }
298
+ catch (error) {
299
+ logger.error('Failed to read Linux network stats:', error);
300
+ return { bytesIn: 0, bytesOut: 0 };
301
+ }
302
+ }
303
+ /**
304
+ * Read network stats on macOS
305
+ */
306
+ async readNetworkStatsMacOS() {
307
+ try {
308
+ const { stdout } = await execAsync('netstat -ibn | grep -v lo0');
309
+ const lines = stdout.trim().split('\n');
310
+ let totalBytesIn = 0;
311
+ let totalBytesOut = 0;
312
+ for (const line of lines) {
313
+ const parts = line.trim().split(/\s+/);
314
+ if (parts.length >= 7) {
315
+ totalBytesIn += parseInt(parts[6]) || 0;
316
+ totalBytesOut += parseInt(parts[9]) || 0;
317
+ }
318
+ }
319
+ return { bytesIn: totalBytesIn, bytesOut: totalBytesOut };
320
+ }
321
+ catch (error) {
322
+ logger.error('Failed to read macOS network stats:', error);
323
+ return { bytesIn: 0, bytesOut: 0 };
324
+ }
325
+ }
326
+ /**
327
+ * Read network stats on Windows
328
+ */
329
+ async readNetworkStatsWindows() {
330
+ try {
331
+ const { stdout } = await execAsync('wmic path Win32_NetworkAdapter where "NetConnectionStatus=2" get BytesReceivedPerSec,BytesSentPerSec /format:csv');
332
+ const lines = stdout.trim().split('\n').slice(1);
333
+ let totalBytesIn = 0;
334
+ let totalBytesOut = 0;
335
+ for (const line of lines) {
336
+ const parts = line.split(',');
337
+ if (parts.length >= 3) {
338
+ totalBytesIn += parseInt(parts[1]) || 0;
339
+ totalBytesOut += parseInt(parts[2]) || 0;
340
+ }
341
+ }
342
+ return { bytesIn: totalBytesIn, bytesOut: totalBytesOut };
343
+ }
344
+ catch (error) {
345
+ logger.error('Failed to read Windows network stats:', error);
346
+ return { bytesIn: 0, bytesOut: 0 };
347
+ }
348
+ }
349
+ /**
350
+ * Add metrics to history
351
+ */
352
+ addToHistory(metrics) {
353
+ this.metricsHistory.push(metrics);
354
+ // Keep only the last N metrics
355
+ if (this.metricsHistory.length > this.maxHistorySize) {
356
+ this.metricsHistory = this.metricsHistory.slice(-this.maxHistorySize);
357
+ }
358
+ }
359
+ }
360
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Built-in Recipe Definitions
3
+ *
4
+ * 15 production-ready recipes covering the most common CI ecosystems.
5
+ * Each recipe provides sensible defaults for detection, execution,
6
+ * caching, artifacts, and lifecycle hooks.
7
+ */
8
+ import { Recipe } from './types.js';
9
+ /** All built-in recipes, keyed by name. */
10
+ export declare const BUILTIN_RECIPES: Recipe[];
11
+ //# sourceMappingURL=builtinRecipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtinRecipes.d.ts","sourceRoot":"","sources":["../../src/recipes/builtinRecipes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAyqBpC,2CAA2C;AAC3C,eAAO,MAAM,eAAe,EAAE,MAAM,EAgBnC,CAAC"}