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,300 @@
1
+ /**
2
+ * Cache Manager - Build cache volume mount system
3
+ *
4
+ * Manages persistent build caches across job executions.
5
+ * Supports LRU, FIFO, and LFU eviction strategies.
6
+ * Generates Docker volume mount arguments for cache directories.
7
+ *
8
+ * Requirements: Build caching for CI cost reduction
9
+ */
10
+ import { promises as fs } from 'fs';
11
+ import { join } from 'path';
12
+ import { homedir } from 'os';
13
+ // ---------------------------------------------------------------------------
14
+ // CacheManager
15
+ // ---------------------------------------------------------------------------
16
+ export class CacheManager {
17
+ cacheDir;
18
+ maxSizeBytes;
19
+ strategy;
20
+ entries = new Map();
21
+ totalHits = 0;
22
+ totalMisses = 0;
23
+ preConfiguredVolumes;
24
+ constructor(config) {
25
+ this.cacheDir = config.directory || join(homedir(), '.buildhive', 'cache');
26
+ this.maxSizeBytes = config.maxSizeGB * 1024 * 1024 * 1024;
27
+ this.strategy = config.strategy;
28
+ this.preConfiguredVolumes = config.volumes ?? {};
29
+ }
30
+ /**
31
+ * Initialize cache directory and load metadata
32
+ */
33
+ async initialize() {
34
+ await fs.mkdir(this.cacheDir, { recursive: true });
35
+ await this.loadMetadata();
36
+ // Register pre-configured volumes as cache entries if not already present
37
+ for (const [name, hostPath] of Object.entries(this.preConfiguredVolumes)) {
38
+ if (!this.entries.has(name)) {
39
+ await fs.mkdir(hostPath, { recursive: true });
40
+ this.entries.set(name, {
41
+ name,
42
+ hostPath,
43
+ sizeBytes: 0,
44
+ lastUsed: new Date(),
45
+ hitCount: 0,
46
+ createdAt: new Date(),
47
+ });
48
+ }
49
+ }
50
+ await this.saveMetadata();
51
+ }
52
+ /**
53
+ * Get or create a named cache volume. Returns the host path.
54
+ * If the cache doesn't exist, creates the directory.
55
+ * Records a cache hit or miss.
56
+ */
57
+ async getCache(name) {
58
+ const existing = this.entries.get(name);
59
+ if (existing) {
60
+ this.totalHits++;
61
+ existing.hitCount++;
62
+ existing.lastUsed = new Date();
63
+ await this.saveMetadata();
64
+ return existing.hostPath;
65
+ }
66
+ // Cache miss
67
+ this.totalMisses++;
68
+ const hostPath = join(this.cacheDir, name);
69
+ await fs.mkdir(hostPath, { recursive: true });
70
+ const entry = {
71
+ name,
72
+ hostPath,
73
+ sizeBytes: 0,
74
+ lastUsed: new Date(),
75
+ hitCount: 0,
76
+ createdAt: new Date(),
77
+ };
78
+ this.entries.set(name, entry);
79
+ await this.saveMetadata();
80
+ return hostPath;
81
+ }
82
+ /**
83
+ * Generate Docker volume mount args from recipe cache config.
84
+ * Maps recipe cache paths to host cache directories.
85
+ */
86
+ generateVolumeMounts(recipeCacheConfig) {
87
+ const mounts = [];
88
+ for (const containerPath of recipeCacheConfig.paths) {
89
+ // Derive a cache name from the path: e.g. ~/.gradle/caches -> gradle-caches
90
+ const cacheName = this.pathToCacheName(containerPath);
91
+ const hostPath = join(this.cacheDir, cacheName);
92
+ mounts.push({
93
+ hostPath,
94
+ containerPath,
95
+ readOnly: false,
96
+ });
97
+ }
98
+ return mounts;
99
+ }
100
+ /**
101
+ * Convert volume mounts to Docker -v arguments
102
+ */
103
+ toDockerArgs(mounts) {
104
+ const args = [];
105
+ for (const mount of mounts) {
106
+ const mountStr = mount.readOnly
107
+ ? `${mount.hostPath}:${mount.containerPath}:ro`
108
+ : `${mount.hostPath}:${mount.containerPath}`;
109
+ args.push('-v', mountStr);
110
+ }
111
+ return args;
112
+ }
113
+ /**
114
+ * Evict caches based on strategy until under maxSize.
115
+ * Returns names of evicted entries.
116
+ */
117
+ async evict() {
118
+ const evicted = [];
119
+ let totalSize = this.getTotalSize();
120
+ while (totalSize > this.maxSizeBytes && this.entries.size > 0) {
121
+ const victim = this.selectVictim();
122
+ if (!victim)
123
+ break;
124
+ // Remove directory
125
+ try {
126
+ await fs.rm(victim.hostPath, { recursive: true, force: true });
127
+ }
128
+ catch {
129
+ // Directory may already be gone
130
+ }
131
+ totalSize -= victim.sizeBytes;
132
+ this.entries.delete(victim.name);
133
+ evicted.push(victim.name);
134
+ }
135
+ if (evicted.length > 0) {
136
+ await this.saveMetadata();
137
+ }
138
+ return evicted;
139
+ }
140
+ /**
141
+ * Get cache statistics
142
+ */
143
+ getStats() {
144
+ const totalRequests = this.totalHits + this.totalMisses;
145
+ return {
146
+ totalEntries: this.entries.size,
147
+ totalSizeBytes: this.getTotalSize(),
148
+ maxSizeBytes: this.maxSizeBytes,
149
+ hitRate: totalRequests > 0 ? this.totalHits / totalRequests : 0,
150
+ totalHits: this.totalHits,
151
+ totalMisses: this.totalMisses,
152
+ };
153
+ }
154
+ /**
155
+ * Clear all caches
156
+ */
157
+ async clear() {
158
+ for (const entry of this.entries.values()) {
159
+ try {
160
+ await fs.rm(entry.hostPath, { recursive: true, force: true });
161
+ }
162
+ catch {
163
+ // Ignore cleanup errors
164
+ }
165
+ }
166
+ this.entries.clear();
167
+ this.totalHits = 0;
168
+ this.totalMisses = 0;
169
+ await this.saveMetadata();
170
+ }
171
+ /**
172
+ * Save cache metadata to disk
173
+ */
174
+ async saveMetadata() {
175
+ const metadataPath = join(this.cacheDir, '.metadata.json');
176
+ const serialized = {
177
+ entries: Array.from(this.entries.values()).map((e) => ({
178
+ name: e.name,
179
+ hostPath: e.hostPath,
180
+ sizeBytes: e.sizeBytes,
181
+ lastUsed: e.lastUsed.toISOString(),
182
+ hitCount: e.hitCount,
183
+ createdAt: e.createdAt.toISOString(),
184
+ })),
185
+ totalHits: this.totalHits,
186
+ totalMisses: this.totalMisses,
187
+ };
188
+ await fs.writeFile(metadataPath, JSON.stringify(serialized, null, 2), 'utf-8');
189
+ }
190
+ /**
191
+ * Load cache metadata from disk
192
+ */
193
+ async loadMetadata() {
194
+ const metadataPath = join(this.cacheDir, '.metadata.json');
195
+ try {
196
+ const raw = await fs.readFile(metadataPath, 'utf-8');
197
+ const data = JSON.parse(raw);
198
+ this.entries.clear();
199
+ for (const e of data.entries) {
200
+ this.entries.set(e.name, {
201
+ name: e.name,
202
+ hostPath: e.hostPath,
203
+ sizeBytes: e.sizeBytes,
204
+ lastUsed: new Date(e.lastUsed),
205
+ hitCount: e.hitCount,
206
+ createdAt: new Date(e.createdAt),
207
+ });
208
+ }
209
+ this.totalHits = data.totalHits ?? 0;
210
+ this.totalMisses = data.totalMisses ?? 0;
211
+ }
212
+ catch {
213
+ // No metadata file yet — start fresh
214
+ this.entries.clear();
215
+ }
216
+ }
217
+ /**
218
+ * Update the recorded size of a cache entry by scanning its directory.
219
+ */
220
+ async updateEntrySize(name) {
221
+ const entry = this.entries.get(name);
222
+ if (!entry)
223
+ return;
224
+ entry.sizeBytes = await this.getDirectorySize(entry.hostPath);
225
+ await this.saveMetadata();
226
+ }
227
+ // ---------------------------------------------------------------------------
228
+ // Private helpers
229
+ // ---------------------------------------------------------------------------
230
+ /**
231
+ * Get total size of a directory in bytes
232
+ */
233
+ async getDirectorySize(dirPath) {
234
+ let total = 0;
235
+ try {
236
+ const items = await fs.readdir(dirPath, { withFileTypes: true });
237
+ for (const item of items) {
238
+ const fullPath = join(dirPath, item.name);
239
+ if (item.isDirectory()) {
240
+ total += await this.getDirectorySize(fullPath);
241
+ }
242
+ else {
243
+ const stat = await fs.stat(fullPath);
244
+ total += stat.size;
245
+ }
246
+ }
247
+ }
248
+ catch {
249
+ // Directory may not exist or be inaccessible
250
+ }
251
+ return total;
252
+ }
253
+ getTotalSize() {
254
+ let total = 0;
255
+ for (const entry of this.entries.values()) {
256
+ total += entry.sizeBytes;
257
+ }
258
+ return total;
259
+ }
260
+ /**
261
+ * Select the next entry to evict based on the configured strategy.
262
+ */
263
+ selectVictim() {
264
+ if (this.entries.size === 0)
265
+ return undefined;
266
+ const entries = Array.from(this.entries.values());
267
+ switch (this.strategy) {
268
+ case 'lru':
269
+ // Least recently used — oldest lastUsed
270
+ return entries.reduce((oldest, e) => e.lastUsed < oldest.lastUsed ? e : oldest);
271
+ case 'fifo':
272
+ // First in, first out — oldest createdAt
273
+ return entries.reduce((oldest, e) => e.createdAt < oldest.createdAt ? e : oldest);
274
+ case 'lfu':
275
+ // Least frequently used — lowest hitCount
276
+ return entries.reduce((least, e) => e.hitCount < least.hitCount ? e : least);
277
+ default:
278
+ return entries[0];
279
+ }
280
+ }
281
+ /**
282
+ * Convert a filesystem path to a cache name.
283
+ * e.g. "~/.gradle/caches" -> "gradle-caches"
284
+ * "/root/.gradle/caches" -> "gradle-caches"
285
+ */
286
+ pathToCacheName(fsPath) {
287
+ // Expand ~ and remove leading dots/slashes
288
+ const normalized = fsPath
289
+ .replace(/^~\//, '')
290
+ .replace(/^\/+/, '');
291
+ // Replace path separators and dots with hyphens, collapse multiple
292
+ return normalized
293
+ .replace(/[\/\\]+/g, '-')
294
+ .replace(/^\.+/, '')
295
+ .replace(/\.+/g, '-')
296
+ .replace(/-+/g, '-')
297
+ .replace(/(^-|-$)/g, '');
298
+ }
299
+ }
300
+ //# sourceMappingURL=cacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../src/cacheManager.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * BuildHive Agent CLI
4
+ *
5
+ * Command-line interface for managing the BuildHive agent.
6
+ * Provides commands for registration, starting/stopping the agent, and status checks.
7
+ *
8
+ * Requirements: MVP.4.1.1, MVP.4.1.2, MVP.4.3.3
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}