@agent-relay/resiliency 2.0.6 → 2.0.7

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.
@@ -0,0 +1,152 @@
1
+ /**
2
+ * CgroupManager - Manage CPU limits for agents using Linux cgroups v2
3
+ *
4
+ * Provides per-agent CPU isolation to prevent one agent (e.g., running npm install)
5
+ * from starving other agents of CPU resources.
6
+ *
7
+ * Features:
8
+ * - Auto-detects cgroups v2 availability
9
+ * - Creates per-agent cgroups with CPU limits
10
+ * - Gracefully degrades when cgroups unavailable
11
+ * - Cleans up cgroups when agents exit
12
+ *
13
+ * Usage:
14
+ * ```typescript
15
+ * const manager = getCgroupManager();
16
+ * await manager.createAgentCgroup('worker1', { cpuPercent: 50 });
17
+ * await manager.addProcess('worker1', pid);
18
+ * // ... agent runs with CPU limit ...
19
+ * await manager.removeAgentCgroup('worker1');
20
+ * ```
21
+ *
22
+ * Requirements:
23
+ * - Linux with cgroups v2 (unified hierarchy)
24
+ * - Write access to cgroup directory (delegated or root)
25
+ * - cpu controller enabled in cgroup
26
+ */
27
+ import { EventEmitter } from 'node:events';
28
+ /**
29
+ * CPU limit configuration for an agent
30
+ */
31
+ export interface CpuLimitConfig {
32
+ /** CPU percentage limit (1-100 per core, e.g., 200 = 2 full cores). Default: 100 */
33
+ cpuPercent?: number;
34
+ /** CPU period in microseconds. Default: 100000 (100ms) */
35
+ cpuPeriodUs?: number;
36
+ }
37
+ /**
38
+ * Cgroup info for an agent
39
+ */
40
+ export interface AgentCgroupInfo {
41
+ name: string;
42
+ path: string;
43
+ pids: number[];
44
+ cpuLimit: CpuLimitConfig;
45
+ createdAt: number;
46
+ }
47
+ /**
48
+ * Events emitted by CgroupManager
49
+ */
50
+ export interface CgroupManagerEvents {
51
+ 'cgroup-created': (info: {
52
+ agentName: string;
53
+ path: string;
54
+ cpuPercent: number;
55
+ }) => void;
56
+ 'cgroup-removed': (info: {
57
+ agentName: string;
58
+ }) => void;
59
+ 'process-added': (info: {
60
+ agentName: string;
61
+ pid: number;
62
+ }) => void;
63
+ 'error': (error: Error) => void;
64
+ }
65
+ /**
66
+ * CgroupManager singleton for managing agent CPU limits
67
+ */
68
+ export declare class CgroupManager extends EventEmitter {
69
+ private cgroupBase;
70
+ private available;
71
+ private agentCgroups;
72
+ private initialized;
73
+ constructor(cgroupBase?: string);
74
+ /**
75
+ * Initialize the cgroup manager and detect availability
76
+ */
77
+ initialize(): Promise<boolean>;
78
+ /**
79
+ * Check if cgroups v2 is available and we have write access
80
+ */
81
+ private detectCgroupsV2;
82
+ /**
83
+ * Ensure base cgroup directory exists with proper controllers
84
+ */
85
+ private ensureBaseCgroup;
86
+ /**
87
+ * Check if cgroups are available
88
+ */
89
+ isAvailable(): boolean;
90
+ /**
91
+ * Create a cgroup for an agent with CPU limits
92
+ *
93
+ * @param agentName - Unique agent identifier
94
+ * @param config - CPU limit configuration
95
+ * @returns true if cgroup was created, false if not available
96
+ */
97
+ createAgentCgroup(agentName: string, config?: CpuLimitConfig): Promise<boolean>;
98
+ /**
99
+ * Add a process to an agent's cgroup
100
+ *
101
+ * @param agentName - Agent name
102
+ * @param pid - Process ID to add
103
+ * @returns true if process was added
104
+ */
105
+ addProcess(agentName: string, pid: number): Promise<boolean>;
106
+ /**
107
+ * Remove an agent's cgroup
108
+ *
109
+ * @param agentName - Agent name
110
+ * @returns true if cgroup was removed
111
+ */
112
+ removeAgentCgroup(agentName: string): Promise<boolean>;
113
+ /**
114
+ * Update CPU limit for an existing agent cgroup
115
+ *
116
+ * @param agentName - Agent name
117
+ * @param cpuPercent - New CPU percentage limit
118
+ */
119
+ updateCpuLimit(agentName: string, cpuPercent: number): Promise<boolean>;
120
+ /**
121
+ * Get current CPU usage for an agent (if available)
122
+ *
123
+ * @param agentName - Agent name
124
+ * @returns CPU usage stats or null
125
+ */
126
+ getCpuStats(agentName: string): {
127
+ usageUsec: number;
128
+ throttledUsec: number;
129
+ periods: number;
130
+ } | null;
131
+ /**
132
+ * Get info about all agent cgroups
133
+ */
134
+ getAllAgentCgroups(): AgentCgroupInfo[];
135
+ /**
136
+ * Clean up orphaned cgroups (e.g., after crash)
137
+ */
138
+ cleanupOrphanedCgroups(): Promise<number>;
139
+ /**
140
+ * Shutdown and clean up all cgroups
141
+ */
142
+ shutdown(): Promise<void>;
143
+ }
144
+ /**
145
+ * Get the singleton CgroupManager instance
146
+ */
147
+ export declare function getCgroupManager(cgroupBase?: string): CgroupManager;
148
+ /**
149
+ * Format bytes for display
150
+ */
151
+ export declare function formatCpuTime(usec: number): string;
152
+ //# sourceMappingURL=cgroup-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cgroup-manager.d.ts","sourceRoot":"","sources":["../src/cgroup-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1F,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,eAAe,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAaD;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,WAAW,CAAS;gBAEhB,UAAU,GAAE,MAA4B;IAMpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBpC;;OAEG;YACW,eAAe;IAyC7B;;OAEG;YACW,gBAAgB;IAgB9B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;;;;OAMG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDzF;;;;;;OAMG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BlE;;;;;OAKG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC5D;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B7E;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAmCpG;;OAEG;IACH,kBAAkB,IAAI,eAAe,EAAE;IAIvC;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgC/C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKhC;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAKnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD"}
@@ -0,0 +1,394 @@
1
+ /**
2
+ * CgroupManager - Manage CPU limits for agents using Linux cgroups v2
3
+ *
4
+ * Provides per-agent CPU isolation to prevent one agent (e.g., running npm install)
5
+ * from starving other agents of CPU resources.
6
+ *
7
+ * Features:
8
+ * - Auto-detects cgroups v2 availability
9
+ * - Creates per-agent cgroups with CPU limits
10
+ * - Gracefully degrades when cgroups unavailable
11
+ * - Cleans up cgroups when agents exit
12
+ *
13
+ * Usage:
14
+ * ```typescript
15
+ * const manager = getCgroupManager();
16
+ * await manager.createAgentCgroup('worker1', { cpuPercent: 50 });
17
+ * await manager.addProcess('worker1', pid);
18
+ * // ... agent runs with CPU limit ...
19
+ * await manager.removeAgentCgroup('worker1');
20
+ * ```
21
+ *
22
+ * Requirements:
23
+ * - Linux with cgroups v2 (unified hierarchy)
24
+ * - Write access to cgroup directory (delegated or root)
25
+ * - cpu controller enabled in cgroup
26
+ */
27
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, rmSync, readdirSync } from 'node:fs';
28
+ import { join } from 'node:path';
29
+ import { EventEmitter } from 'node:events';
30
+ /**
31
+ * Default cgroup base path for agent-relay
32
+ */
33
+ const DEFAULT_CGROUP_BASE = '/sys/fs/cgroup/agent-relay';
34
+ /**
35
+ * Default CPU settings
36
+ */
37
+ const DEFAULT_CPU_PERCENT = 100; // 100% of one core
38
+ const DEFAULT_CPU_PERIOD_US = 100000; // 100ms period
39
+ /**
40
+ * CgroupManager singleton for managing agent CPU limits
41
+ */
42
+ export class CgroupManager extends EventEmitter {
43
+ cgroupBase;
44
+ available;
45
+ agentCgroups = new Map();
46
+ initialized = false;
47
+ constructor(cgroupBase = DEFAULT_CGROUP_BASE) {
48
+ super();
49
+ this.cgroupBase = cgroupBase;
50
+ this.available = false;
51
+ }
52
+ /**
53
+ * Initialize the cgroup manager and detect availability
54
+ */
55
+ async initialize() {
56
+ if (this.initialized) {
57
+ return this.available;
58
+ }
59
+ this.initialized = true;
60
+ this.available = await this.detectCgroupsV2();
61
+ if (this.available) {
62
+ // Ensure base directory exists
63
+ try {
64
+ await this.ensureBaseCgroup();
65
+ }
66
+ catch (err) {
67
+ console.warn(`[cgroup-manager] Failed to create base cgroup: ${err.message}`);
68
+ this.available = false;
69
+ }
70
+ }
71
+ return this.available;
72
+ }
73
+ /**
74
+ * Check if cgroups v2 is available and we have write access
75
+ */
76
+ async detectCgroupsV2() {
77
+ // Check for cgroups v2 unified hierarchy
78
+ const cgroupRoot = '/sys/fs/cgroup';
79
+ // Check if cgroup2 is mounted (unified hierarchy)
80
+ if (!existsSync(join(cgroupRoot, 'cgroup.controllers'))) {
81
+ console.info('[cgroup-manager] cgroups v2 not detected (no unified hierarchy)');
82
+ return false;
83
+ }
84
+ // Check if cpu controller is available
85
+ try {
86
+ const controllers = readFileSync(join(cgroupRoot, 'cgroup.controllers'), 'utf-8');
87
+ if (!controllers.includes('cpu')) {
88
+ console.info('[cgroup-manager] CPU controller not available in cgroups');
89
+ return false;
90
+ }
91
+ }
92
+ catch (err) {
93
+ console.info(`[cgroup-manager] Cannot read cgroup controllers: ${err.message}`);
94
+ return false;
95
+ }
96
+ // Check if we can write to cgroup directory
97
+ // In production, agent-relay cgroup should be pre-created with proper delegation
98
+ try {
99
+ const testPath = join(cgroupRoot, 'agent-relay-test-' + process.pid);
100
+ mkdirSync(testPath, { recursive: true });
101
+ rmSync(testPath, { recursive: true, force: true });
102
+ console.info('[cgroup-manager] cgroups v2 available with write access');
103
+ return true;
104
+ }
105
+ catch (err) {
106
+ // Try delegated cgroup path
107
+ if (existsSync(this.cgroupBase)) {
108
+ console.info('[cgroup-manager] Using delegated cgroup at ' + this.cgroupBase);
109
+ return true;
110
+ }
111
+ console.info(`[cgroup-manager] No write access to cgroups: ${err.message}`);
112
+ return false;
113
+ }
114
+ }
115
+ /**
116
+ * Ensure base cgroup directory exists with proper controllers
117
+ */
118
+ async ensureBaseCgroup() {
119
+ if (!existsSync(this.cgroupBase)) {
120
+ mkdirSync(this.cgroupBase, { recursive: true });
121
+ }
122
+ // Enable cpu controller in subtree
123
+ const subtreeControlPath = join(this.cgroupBase, 'cgroup.subtree_control');
124
+ if (existsSync(subtreeControlPath)) {
125
+ try {
126
+ writeFileSync(subtreeControlPath, '+cpu');
127
+ }
128
+ catch {
129
+ // Controller might already be enabled or not available
130
+ }
131
+ }
132
+ }
133
+ /**
134
+ * Check if cgroups are available
135
+ */
136
+ isAvailable() {
137
+ return this.available;
138
+ }
139
+ /**
140
+ * Create a cgroup for an agent with CPU limits
141
+ *
142
+ * @param agentName - Unique agent identifier
143
+ * @param config - CPU limit configuration
144
+ * @returns true if cgroup was created, false if not available
145
+ */
146
+ async createAgentCgroup(agentName, config = {}) {
147
+ if (!this.initialized) {
148
+ await this.initialize();
149
+ }
150
+ if (!this.available) {
151
+ return false;
152
+ }
153
+ // Validate agent name (no path traversal)
154
+ if (agentName.includes('/') || agentName.includes('..')) {
155
+ throw new Error(`Invalid agent name: ${agentName}`);
156
+ }
157
+ const cgroupPath = join(this.cgroupBase, agentName);
158
+ try {
159
+ // Create cgroup directory
160
+ if (!existsSync(cgroupPath)) {
161
+ mkdirSync(cgroupPath, { recursive: true });
162
+ }
163
+ // Configure CPU limit
164
+ const cpuPercent = config.cpuPercent ?? DEFAULT_CPU_PERCENT;
165
+ const cpuPeriodUs = config.cpuPeriodUs ?? DEFAULT_CPU_PERIOD_US;
166
+ // cpu.max format: "$MAX $PERIOD" in microseconds
167
+ // For 50% of one CPU: "50000 100000" (50ms max per 100ms period)
168
+ const cpuMaxUs = Math.floor((cpuPercent / 100) * cpuPeriodUs);
169
+ const cpuMaxValue = `${cpuMaxUs} ${cpuPeriodUs}`;
170
+ writeFileSync(join(cgroupPath, 'cpu.max'), cpuMaxValue);
171
+ // Track the cgroup
172
+ const info = {
173
+ name: agentName,
174
+ path: cgroupPath,
175
+ pids: [],
176
+ cpuLimit: { cpuPercent, cpuPeriodUs },
177
+ createdAt: Date.now(),
178
+ };
179
+ this.agentCgroups.set(agentName, info);
180
+ this.emit('cgroup-created', { agentName, path: cgroupPath, cpuPercent });
181
+ console.info(`[cgroup-manager] Created cgroup for ${agentName} with ${cpuPercent}% CPU limit`);
182
+ return true;
183
+ }
184
+ catch (err) {
185
+ const error = new Error(`Failed to create cgroup for ${agentName}: ${err.message}`);
186
+ this.emit('error', error);
187
+ console.warn(`[cgroup-manager] ${error.message}`);
188
+ return false;
189
+ }
190
+ }
191
+ /**
192
+ * Add a process to an agent's cgroup
193
+ *
194
+ * @param agentName - Agent name
195
+ * @param pid - Process ID to add
196
+ * @returns true if process was added
197
+ */
198
+ async addProcess(agentName, pid) {
199
+ if (!this.available) {
200
+ return false;
201
+ }
202
+ const info = this.agentCgroups.get(agentName);
203
+ if (!info) {
204
+ console.warn(`[cgroup-manager] No cgroup found for agent ${agentName}`);
205
+ return false;
206
+ }
207
+ try {
208
+ // Write PID to cgroup.procs
209
+ writeFileSync(join(info.path, 'cgroup.procs'), String(pid));
210
+ info.pids.push(pid);
211
+ this.emit('process-added', { agentName, pid });
212
+ console.info(`[cgroup-manager] Added process ${pid} to cgroup ${agentName}`);
213
+ return true;
214
+ }
215
+ catch (err) {
216
+ console.warn(`[cgroup-manager] Failed to add process ${pid} to cgroup ${agentName}: ${err.message}`);
217
+ return false;
218
+ }
219
+ }
220
+ /**
221
+ * Remove an agent's cgroup
222
+ *
223
+ * @param agentName - Agent name
224
+ * @returns true if cgroup was removed
225
+ */
226
+ async removeAgentCgroup(agentName) {
227
+ if (!this.available) {
228
+ return false;
229
+ }
230
+ const info = this.agentCgroups.get(agentName);
231
+ if (!info) {
232
+ return false;
233
+ }
234
+ try {
235
+ // Move processes to parent cgroup first (required before removal)
236
+ const parentProcs = join(this.cgroupBase, 'cgroup.procs');
237
+ for (const pid of info.pids) {
238
+ try {
239
+ writeFileSync(parentProcs, String(pid));
240
+ }
241
+ catch {
242
+ // Process might have exited
243
+ }
244
+ }
245
+ // Remove the cgroup directory
246
+ rmSync(info.path, { recursive: true, force: true });
247
+ this.agentCgroups.delete(agentName);
248
+ this.emit('cgroup-removed', { agentName });
249
+ console.info(`[cgroup-manager] Removed cgroup for ${agentName}`);
250
+ return true;
251
+ }
252
+ catch (err) {
253
+ console.warn(`[cgroup-manager] Failed to remove cgroup ${agentName}: ${err.message}`);
254
+ return false;
255
+ }
256
+ }
257
+ /**
258
+ * Update CPU limit for an existing agent cgroup
259
+ *
260
+ * @param agentName - Agent name
261
+ * @param cpuPercent - New CPU percentage limit
262
+ */
263
+ async updateCpuLimit(agentName, cpuPercent) {
264
+ if (!this.available) {
265
+ return false;
266
+ }
267
+ const info = this.agentCgroups.get(agentName);
268
+ if (!info) {
269
+ return false;
270
+ }
271
+ try {
272
+ const cpuPeriodUs = info.cpuLimit.cpuPeriodUs ?? DEFAULT_CPU_PERIOD_US;
273
+ const cpuMaxUs = Math.floor((cpuPercent / 100) * cpuPeriodUs);
274
+ const cpuMaxValue = `${cpuMaxUs} ${cpuPeriodUs}`;
275
+ writeFileSync(join(info.path, 'cpu.max'), cpuMaxValue);
276
+ info.cpuLimit.cpuPercent = cpuPercent;
277
+ console.info(`[cgroup-manager] Updated CPU limit for ${agentName} to ${cpuPercent}%`);
278
+ return true;
279
+ }
280
+ catch (err) {
281
+ console.warn(`[cgroup-manager] Failed to update CPU limit for ${agentName}: ${err.message}`);
282
+ return false;
283
+ }
284
+ }
285
+ /**
286
+ * Get current CPU usage for an agent (if available)
287
+ *
288
+ * @param agentName - Agent name
289
+ * @returns CPU usage stats or null
290
+ */
291
+ getCpuStats(agentName) {
292
+ if (!this.available) {
293
+ return null;
294
+ }
295
+ const info = this.agentCgroups.get(agentName);
296
+ if (!info) {
297
+ return null;
298
+ }
299
+ try {
300
+ const statPath = join(info.path, 'cpu.stat');
301
+ if (!existsSync(statPath)) {
302
+ return null;
303
+ }
304
+ const stat = readFileSync(statPath, 'utf-8');
305
+ const lines = stat.trim().split('\n');
306
+ const stats = {};
307
+ for (const line of lines) {
308
+ const [key, value] = line.split(' ');
309
+ stats[key] = parseInt(value, 10);
310
+ }
311
+ return {
312
+ usageUsec: stats['usage_usec'] ?? 0,
313
+ throttledUsec: stats['throttled_usec'] ?? 0,
314
+ periods: stats['nr_periods'] ?? 0,
315
+ };
316
+ }
317
+ catch {
318
+ return null;
319
+ }
320
+ }
321
+ /**
322
+ * Get info about all agent cgroups
323
+ */
324
+ getAllAgentCgroups() {
325
+ return Array.from(this.agentCgroups.values());
326
+ }
327
+ /**
328
+ * Clean up orphaned cgroups (e.g., after crash)
329
+ */
330
+ async cleanupOrphanedCgroups() {
331
+ if (!this.available || !existsSync(this.cgroupBase)) {
332
+ return 0;
333
+ }
334
+ let cleaned = 0;
335
+ try {
336
+ const entries = readdirSync(this.cgroupBase, { withFileTypes: true });
337
+ for (const entry of entries) {
338
+ if (!entry.isDirectory())
339
+ continue;
340
+ // Skip if we're tracking this cgroup
341
+ if (this.agentCgroups.has(entry.name))
342
+ continue;
343
+ // Try to remove orphaned cgroup
344
+ try {
345
+ const cgroupPath = join(this.cgroupBase, entry.name);
346
+ rmSync(cgroupPath, { recursive: true, force: true });
347
+ cleaned++;
348
+ console.info(`[cgroup-manager] Cleaned up orphaned cgroup: ${entry.name}`);
349
+ }
350
+ catch {
351
+ // Might still have processes
352
+ }
353
+ }
354
+ }
355
+ catch {
356
+ // Ignore errors during cleanup
357
+ }
358
+ return cleaned;
359
+ }
360
+ /**
361
+ * Shutdown and clean up all cgroups
362
+ */
363
+ async shutdown() {
364
+ for (const [agentName] of this.agentCgroups) {
365
+ await this.removeAgentCgroup(agentName);
366
+ }
367
+ }
368
+ }
369
+ // Singleton instance
370
+ let cgroupManagerInstance = null;
371
+ /**
372
+ * Get the singleton CgroupManager instance
373
+ */
374
+ export function getCgroupManager(cgroupBase) {
375
+ if (!cgroupManagerInstance) {
376
+ cgroupManagerInstance = new CgroupManager(cgroupBase);
377
+ }
378
+ return cgroupManagerInstance;
379
+ }
380
+ /**
381
+ * Format bytes for display
382
+ */
383
+ export function formatCpuTime(usec) {
384
+ if (usec < 1000) {
385
+ return `${usec}µs`;
386
+ }
387
+ else if (usec < 1000000) {
388
+ return `${(usec / 1000).toFixed(2)}ms`;
389
+ }
390
+ else {
391
+ return `${(usec / 1000000).toFixed(2)}s`;
392
+ }
393
+ }
394
+ //# sourceMappingURL=cgroup-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cgroup-manager.js","sourceRoot":"","sources":["../src/cgroup-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -65,4 +65,5 @@ export { CrashInsightsService, getCrashInsights, type CrashRecord, type CrashAna
65
65
  export { StatelessLeadCoordinator, createStatelessLead, type BeadsTask, type LeadHeartbeat, type StatelessLeadConfig, } from './stateless-lead.js';
66
66
  export { LeaderWatchdog, createLeaderWatchdog, type LeaderWatchdogConfig, type ElectionResult, } from './leader-watchdog.js';
67
67
  export { GossipHealthMonitor, createGossipHealth, type GossipHeartbeat, type PeerHealth, type GossipHealthConfig, } from './gossip-health.js';
68
+ export { CgroupManager, getCgroupManager, formatCpuTime, type CpuLimitConfig, type AgentCgroupInfo, } from './cgroup-manager.js';
68
69
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,IAAI,gBAAgB,EAC7B,OAAO,EACP,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhG,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,IAAI,gBAAgB,EAC7B,OAAO,EACP,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhG,OAAO,EACL,eAAe,EACf,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -65,4 +65,5 @@ export { CrashInsightsService, getCrashInsights, } from './crash-insights.js';
65
65
  export { StatelessLeadCoordinator, createStatelessLead, } from './stateless-lead.js';
66
66
  export { LeaderWatchdog, createLeaderWatchdog, } from './leader-watchdog.js';
67
67
  export { GossipHealthMonitor, createGossipHealth, } from './gossip-health.js';
68
+ export { CgroupManager, getCgroupManager, formatCpuTime, } from './cgroup-manager.js';
68
69
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,IAAI,gBAAgB,EAC7B,OAAO,GAIR,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAA2D,MAAM,cAAc,CAAC;AAEhG,OAAO,EACL,eAAe,EACf,aAAa,GAGd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAMtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAOZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAKjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GAInB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAIjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,IAAI,gBAAgB,EAC7B,OAAO,GAIR,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAA2D,MAAM,cAAc,CAAC;AAEhG,OAAO,EACL,eAAe,EACf,aAAa,GAGd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAMtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GAKrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAOZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAKjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GAIpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GAInB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,GAGd,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/resiliency",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "description": "Health monitoring, logging, metrics, and crash resilience utilities for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",