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,311 @@
1
+ /**
2
+ * Native Executor - Non-Docker job execution
3
+ *
4
+ * Runs build commands directly on the host OS in an isolated temp workspace.
5
+ * Designed for iOS/macOS builds that require native toolchains (Xcode, etc.)
6
+ * which are not available inside Docker containers.
7
+ *
8
+ * Security model:
9
+ * - Jobs run in an isolated temp directory (not the developer's workspace)
10
+ * - Environment variables are explicitly injected (PATH preserved)
11
+ * - Timeout enforcement with graceful shutdown (SIGTERM → 10s → SIGKILL)
12
+ */
13
+ import { spawn } from 'child_process';
14
+ import { promises as fs } from 'fs';
15
+ import { join } from 'path';
16
+ import { tmpdir } from 'os';
17
+ import { randomUUID } from 'crypto';
18
+ export class NativeExecutor {
19
+ config;
20
+ type = 'native';
21
+ tempWorkspaces = new Set();
22
+ constructor(config = {}) {
23
+ this.config = config;
24
+ }
25
+ async validate() {
26
+ const errors = [];
27
+ // 1. Check OS is macOS or Linux
28
+ const platform = process.platform;
29
+ if (platform !== 'darwin' && platform !== 'linux') {
30
+ errors.push(`Native execution is not supported on ${platform}. Requires macOS or Linux.`);
31
+ }
32
+ // 2. Check temp directory is writable
33
+ const testDir = join(tmpdir(), `buildhive-validate-${randomUUID()}`);
34
+ try {
35
+ await fs.mkdir(testDir, { recursive: true });
36
+ const testFile = join(testDir, 'test');
37
+ await fs.writeFile(testFile, 'test');
38
+ await fs.rm(testDir, { recursive: true, force: true });
39
+ }
40
+ catch {
41
+ errors.push(`Temp directory ${tmpdir()} is not writable`);
42
+ }
43
+ // 3. Check shell is available
44
+ const shellAvailable = await this.checkShellAvailable();
45
+ if (!shellAvailable) {
46
+ errors.push('No supported shell found (bash or zsh)');
47
+ }
48
+ return {
49
+ valid: errors.length === 0,
50
+ errors,
51
+ };
52
+ }
53
+ async execute(options) {
54
+ const startTime = Date.now();
55
+ const timeout = options.timeout ?? this.config.defaultTimeout ?? 600_000; // 10 min default
56
+ // 1. Create isolated workspace
57
+ const workspace = join(tmpdir(), `buildhive-native-${randomUUID()}`);
58
+ await fs.mkdir(workspace, { recursive: true });
59
+ this.tempWorkspaces.add(workspace);
60
+ // Ensure workDir exists (may be the workspace itself or a subdirectory)
61
+ const workDir = options.workDir || workspace;
62
+ await fs.mkdir(workDir, { recursive: true });
63
+ let stdout = '';
64
+ let stderr = '';
65
+ let logs = '';
66
+ try {
67
+ // 2. Build environment: preserve PATH and SDK paths, merge user env
68
+ const environment = this.buildEnvironment(options.environment);
69
+ // 3. Resolve shell
70
+ const shell = await this.resolveShell();
71
+ // 4. Spawn child process
72
+ const result = await new Promise((resolve, reject) => {
73
+ const proc = spawn(shell, ['-c', options.command], {
74
+ cwd: workDir,
75
+ env: environment,
76
+ stdio: ['ignore', 'pipe', 'pipe'],
77
+ });
78
+ let killed = false;
79
+ let killTimer;
80
+ // Timeout enforcement: SIGTERM then SIGKILL after 10s
81
+ const timeoutTimer = setTimeout(() => {
82
+ if (!killed) {
83
+ killed = true;
84
+ proc.kill('SIGTERM');
85
+ killTimer = setTimeout(() => {
86
+ proc.kill('SIGKILL');
87
+ }, 10_000);
88
+ }
89
+ }, timeout);
90
+ // Abort signal handling
91
+ const onAbort = () => {
92
+ if (!killed) {
93
+ killed = true;
94
+ proc.kill('SIGTERM');
95
+ killTimer = setTimeout(() => {
96
+ proc.kill('SIGKILL');
97
+ }, 10_000);
98
+ }
99
+ };
100
+ if (options.abortSignal) {
101
+ options.abortSignal.addEventListener('abort', onAbort, { once: true });
102
+ }
103
+ // Stream stdout
104
+ proc.stdout?.on('data', (data) => {
105
+ const text = data.toString();
106
+ stdout += text;
107
+ // Stream line by line to onLog
108
+ const lines = text.split('\n');
109
+ for (const line of lines) {
110
+ if (line.length > 0) {
111
+ logs += line + '\n';
112
+ options.onLog?.(line);
113
+ }
114
+ }
115
+ });
116
+ // Stream stderr
117
+ proc.stderr?.on('data', (data) => {
118
+ const text = data.toString();
119
+ stderr += text;
120
+ const lines = text.split('\n');
121
+ for (const line of lines) {
122
+ if (line.length > 0) {
123
+ logs += line + '\n';
124
+ options.onLog?.(line);
125
+ }
126
+ }
127
+ });
128
+ proc.on('close', (code) => {
129
+ clearTimeout(timeoutTimer);
130
+ if (killTimer)
131
+ clearTimeout(killTimer);
132
+ if (options.abortSignal) {
133
+ options.abortSignal.removeEventListener('abort', onAbort);
134
+ }
135
+ if (killed && code === null) {
136
+ resolve({ exitCode: 143 }); // SIGTERM exit code
137
+ }
138
+ else {
139
+ resolve({ exitCode: code ?? 1 });
140
+ }
141
+ });
142
+ proc.on('error', (err) => {
143
+ clearTimeout(timeoutTimer);
144
+ if (killTimer)
145
+ clearTimeout(killTimer);
146
+ if (options.abortSignal) {
147
+ options.abortSignal.removeEventListener('abort', onAbort);
148
+ }
149
+ reject(err);
150
+ });
151
+ });
152
+ // 5. Collect artifacts
153
+ const artifacts = await this.collectArtifacts(workDir, options.artifactPaths || []);
154
+ const durationMs = Date.now() - startTime;
155
+ return {
156
+ exitCode: result.exitCode,
157
+ stdout,
158
+ stderr,
159
+ durationMs,
160
+ artifacts,
161
+ logs,
162
+ };
163
+ }
164
+ catch (error) {
165
+ const durationMs = Date.now() - startTime;
166
+ return {
167
+ exitCode: 1,
168
+ stdout,
169
+ stderr: stderr + (error instanceof Error ? error.message : String(error)),
170
+ durationMs,
171
+ artifacts: [],
172
+ logs,
173
+ };
174
+ }
175
+ }
176
+ async cleanup() {
177
+ const removePromises = Array.from(this.tempWorkspaces).map(async (dir) => {
178
+ try {
179
+ await fs.rm(dir, { recursive: true, force: true });
180
+ }
181
+ catch {
182
+ // Ignore cleanup errors
183
+ }
184
+ });
185
+ await Promise.all(removePromises);
186
+ this.tempWorkspaces.clear();
187
+ }
188
+ /**
189
+ * Build the environment for the child process.
190
+ * Preserves PATH and common SDK paths from the system, then merges user-provided vars.
191
+ */
192
+ buildEnvironment(userEnv) {
193
+ // Start with essential system env vars
194
+ const base = {};
195
+ // Preserve PATH
196
+ if (process.env.PATH) {
197
+ base.PATH = process.env.PATH;
198
+ }
199
+ // Preserve common SDK paths
200
+ const sdkVars = [
201
+ 'HOME',
202
+ 'USER',
203
+ 'SHELL',
204
+ 'LANG',
205
+ 'JAVA_HOME',
206
+ 'ANDROID_HOME',
207
+ 'ANDROID_SDK_ROOT',
208
+ 'DEVELOPER_DIR', // Xcode
209
+ 'SDKROOT',
210
+ ];
211
+ for (const key of sdkVars) {
212
+ if (process.env[key]) {
213
+ base[key] = process.env[key];
214
+ }
215
+ }
216
+ // Merge user-provided environment (overrides base)
217
+ return { ...base, ...(userEnv || {}) };
218
+ }
219
+ /**
220
+ * Resolve the best available shell.
221
+ */
222
+ async resolveShell() {
223
+ // Prefer bash, fall back to zsh, then sh
224
+ for (const shell of ['/bin/bash', '/bin/zsh', '/bin/sh']) {
225
+ try {
226
+ await fs.access(shell);
227
+ return shell;
228
+ }
229
+ catch {
230
+ continue;
231
+ }
232
+ }
233
+ return '/bin/sh';
234
+ }
235
+ /**
236
+ * Check if a supported shell is available.
237
+ */
238
+ async checkShellAvailable() {
239
+ for (const shell of ['/bin/bash', '/bin/zsh', '/bin/sh']) {
240
+ try {
241
+ await fs.access(shell);
242
+ return true;
243
+ }
244
+ catch {
245
+ continue;
246
+ }
247
+ }
248
+ return false;
249
+ }
250
+ /**
251
+ * Collect artifacts matching glob-like patterns from the workDir.
252
+ * Walks the directory tree and matches files against the patterns.
253
+ * Patterns can include ** for recursive matching and * for single-segment matching.
254
+ */
255
+ async collectArtifacts(workDir, patterns) {
256
+ if (patterns.length === 0) {
257
+ return [];
258
+ }
259
+ const allFiles = await this.walkDirectory(workDir);
260
+ const matched = [];
261
+ for (const filePath of allFiles) {
262
+ // Get path relative to workDir
263
+ const relativePath = filePath.substring(workDir.length + 1);
264
+ for (const pattern of patterns) {
265
+ if (this.matchPattern(relativePath, pattern)) {
266
+ matched.push(filePath);
267
+ break; // Don't add same file twice
268
+ }
269
+ }
270
+ }
271
+ return matched;
272
+ }
273
+ /**
274
+ * Recursively walk a directory and return all file paths.
275
+ */
276
+ async walkDirectory(dir) {
277
+ const files = [];
278
+ try {
279
+ const entries = await fs.readdir(dir, { withFileTypes: true });
280
+ for (const entry of entries) {
281
+ const fullPath = join(dir, entry.name);
282
+ if (entry.isDirectory()) {
283
+ const subFiles = await this.walkDirectory(fullPath);
284
+ files.push(...subFiles);
285
+ }
286
+ else {
287
+ files.push(fullPath);
288
+ }
289
+ }
290
+ }
291
+ catch {
292
+ // Directory doesn't exist or isn't readable
293
+ }
294
+ return files;
295
+ }
296
+ /**
297
+ * Simple glob-like pattern matching.
298
+ * Supports * (any segment chars) and ** (any path depth).
299
+ */
300
+ matchPattern(filePath, pattern) {
301
+ // Convert glob to regex
302
+ const regexStr = pattern
303
+ .replace(/\./g, '\\.')
304
+ .replace(/\*\*/g, '{{GLOBSTAR}}')
305
+ .replace(/\*/g, '[^/]*')
306
+ .replace(/\{\{GLOBSTAR\}\}/g, '.*');
307
+ const regex = new RegExp(`^${regexStr}$`);
308
+ return regex.test(filePath);
309
+ }
310
+ }
311
+ //# sourceMappingURL=nativeExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeExecutor.js","sourceRoot":"","sources":["../../src/executors/nativeExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Executor Interface Types
3
+ *
4
+ * Defines the common interface for all execution backends (Docker, Native).
5
+ * This abstraction allows the agent to transparently switch between
6
+ * Docker-based and native (non-Docker) execution.
7
+ */
8
+ export interface ExecutionResult {
9
+ exitCode: number;
10
+ stdout: string;
11
+ stderr: string;
12
+ durationMs: number;
13
+ artifacts: string[];
14
+ logs: string;
15
+ }
16
+ export interface ExecutionOptions {
17
+ workDir: string;
18
+ command: string;
19
+ environment?: Record<string, string>;
20
+ timeout?: number;
21
+ onLog?: (log: string) => void;
22
+ onProgress?: (percent: number, stage: string) => void;
23
+ abortSignal?: AbortSignal;
24
+ artifactPaths?: string[];
25
+ }
26
+ export interface Executor {
27
+ readonly type: 'docker' | 'native';
28
+ /** Validate the executor is available (Docker running, sandbox available, etc.) */
29
+ validate(): Promise<{
30
+ valid: boolean;
31
+ errors: string[];
32
+ }>;
33
+ /** Execute a build job */
34
+ execute(options: ExecutionOptions): Promise<ExecutionResult>;
35
+ /** Cleanup after execution */
36
+ cleanup(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/executors/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAEnC,mFAAmF;IACnF,QAAQ,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAE1D,0BAA0B;IAC1B,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7D,8BAA8B;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Executor Interface Types
3
+ *
4
+ * Defines the common interface for all execution backends (Docker, Native).
5
+ * This abstraction allows the agent to transparently switch between
6
+ * Docker-based and native (non-Docker) execution.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/executors/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,213 @@
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 { EventEmitter } from 'events';
13
+ export interface HealthMetrics {
14
+ timestamp: Date;
15
+ system: {
16
+ cpuUsage: number;
17
+ memoryUsage: number;
18
+ diskUsage: number;
19
+ loadAverage: number[];
20
+ uptime: number;
21
+ networkConnections: number;
22
+ };
23
+ process: {
24
+ memoryUsage: NodeJS.MemoryUsage;
25
+ cpuUsage: NodeJS.CpuUsage;
26
+ uptime: number;
27
+ activeHandles: number;
28
+ activeRequests: number;
29
+ };
30
+ application: {
31
+ activeJobs: number;
32
+ jobSuccessRate: number;
33
+ averageJobDuration: number;
34
+ errorRate: number;
35
+ responseTime: number;
36
+ };
37
+ }
38
+ export interface HealthThresholds {
39
+ cpu: {
40
+ warning: number;
41
+ critical: number;
42
+ };
43
+ memory: {
44
+ warning: number;
45
+ critical: number;
46
+ };
47
+ disk: {
48
+ warning: number;
49
+ critical: number;
50
+ };
51
+ errorRate: {
52
+ warning: number;
53
+ critical: number;
54
+ };
55
+ responseTime: {
56
+ warning: number;
57
+ critical: number;
58
+ };
59
+ }
60
+ export interface HealthAlert {
61
+ id: string;
62
+ severity: 'info' | 'warning' | 'critical';
63
+ category: 'system' | 'process' | 'application';
64
+ metric: string;
65
+ message: string;
66
+ value: number;
67
+ threshold: number;
68
+ timestamp: Date;
69
+ resolved?: Date;
70
+ }
71
+ export interface HealthTrend {
72
+ metric: string;
73
+ direction: 'improving' | 'stable' | 'degrading';
74
+ confidence: number;
75
+ prediction: {
76
+ nextValue: number;
77
+ timeToThreshold?: number;
78
+ };
79
+ }
80
+ export declare class HealthMonitor extends EventEmitter {
81
+ private thresholds;
82
+ private metrics;
83
+ private alerts;
84
+ private monitoringInterval;
85
+ private isMonitoring;
86
+ private maxMetricsHistory;
87
+ private jobStats;
88
+ constructor(thresholds?: Partial<HealthThresholds>);
89
+ /**
90
+ * Start health monitoring
91
+ */
92
+ start(intervalSeconds?: number): void;
93
+ /**
94
+ * Stop health monitoring
95
+ */
96
+ stop(): void;
97
+ /**
98
+ * Get current health status
99
+ */
100
+ getCurrentHealth(): {
101
+ status: 'healthy' | 'warning' | 'critical';
102
+ metrics: HealthMetrics | null;
103
+ activeAlerts: HealthAlert[];
104
+ trends: HealthTrend[];
105
+ score: number;
106
+ };
107
+ /**
108
+ * Record job execution for health tracking
109
+ */
110
+ recordJobExecution(duration: number, success: boolean): void;
111
+ /**
112
+ * Get health history
113
+ */
114
+ getHealthHistory(hours?: number): HealthMetrics[];
115
+ /**
116
+ * Get alert history
117
+ */
118
+ getAlertHistory(hours?: number): HealthAlert[];
119
+ /**
120
+ * Update health thresholds
121
+ */
122
+ updateThresholds(newThresholds: Partial<HealthThresholds>): void;
123
+ /**
124
+ * Collect comprehensive health metrics
125
+ */
126
+ private collectMetrics;
127
+ /**
128
+ * Collect system-level metrics
129
+ */
130
+ private collectSystemMetrics;
131
+ /**
132
+ * Collect process-level metrics
133
+ */
134
+ private collectProcessMetrics;
135
+ /**
136
+ * Collect application-level metrics
137
+ */
138
+ private collectApplicationMetrics;
139
+ /**
140
+ * Analyze health and generate alerts
141
+ */
142
+ private analyzeHealth;
143
+ /**
144
+ * Check a metric against thresholds
145
+ */
146
+ private checkThreshold;
147
+ /**
148
+ * Check for memory leaks
149
+ */
150
+ private checkMemoryLeak;
151
+ /**
152
+ * Check for performance degradation
153
+ */
154
+ private checkPerformanceDegradation;
155
+ /**
156
+ * Create a new alert
157
+ */
158
+ private createAlert;
159
+ /**
160
+ * Resolve an alert
161
+ */
162
+ private resolveAlert;
163
+ /**
164
+ * Generate alert message
165
+ */
166
+ private generateAlertMessage;
167
+ /**
168
+ * Calculate trends for metrics
169
+ */
170
+ private calculateTrends;
171
+ /**
172
+ * Create trend analysis
173
+ */
174
+ private createTrend;
175
+ /**
176
+ * Get metric value from health metrics
177
+ */
178
+ private getMetricValue;
179
+ /**
180
+ * Calculate linear trend
181
+ */
182
+ private calculateLinearTrend;
183
+ /**
184
+ * Determine overall health status
185
+ */
186
+ private determineOverallStatus;
187
+ /**
188
+ * Calculate overall health score
189
+ */
190
+ private calculateHealthScore;
191
+ /**
192
+ * Trigger recovery actions for critical alerts
193
+ */
194
+ private triggerRecoveryAction;
195
+ /**
196
+ * Check for alert recovery
197
+ */
198
+ private checkForRecovery;
199
+ /**
200
+ * Recovery action implementations
201
+ */
202
+ private triggerGarbageCollection;
203
+ private reduceProcessingLoad;
204
+ private cleanupTempFiles;
205
+ /**
206
+ * System metric collection helpers
207
+ */
208
+ private getCpuUsage;
209
+ private getMemoryUsage;
210
+ private getDiskUsage;
211
+ private getNetworkConnections;
212
+ }
213
+ //# sourceMappingURL=healthMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthMonitor.d.ts","sourceRoot":"","sources":["../src/healthMonitor.ts"],"names":[],"mappings":"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"}