@trigger.dev/core 4.0.4 → 4.0.5

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 (103) hide show
  1. package/dist/commonjs/v3/apiClient/index.d.ts +80 -1
  2. package/dist/commonjs/v3/apiClient/index.js +27 -0
  3. package/dist/commonjs/v3/apiClient/index.js.map +1 -1
  4. package/dist/commonjs/v3/errors.d.ts +5 -0
  5. package/dist/commonjs/v3/errors.js +12 -1
  6. package/dist/commonjs/v3/errors.js.map +1 -1
  7. package/dist/commonjs/v3/runEngineWorker/supervisor/http.d.ts +5 -0
  8. package/dist/commonjs/v3/runEngineWorker/supervisor/schemas.d.ts +31 -0
  9. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +4 -0
  10. package/dist/commonjs/v3/runEngineWorker/workload/schemas.d.ts +31 -0
  11. package/dist/commonjs/v3/schemas/api.d.ts +36 -8
  12. package/dist/commonjs/v3/schemas/api.js +15 -4
  13. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  14. package/dist/commonjs/v3/schemas/messages.d.ts +15 -0
  15. package/dist/commonjs/v3/schemas/messages.js +7 -0
  16. package/dist/commonjs/v3/schemas/messages.js.map +1 -1
  17. package/dist/commonjs/v3/schemas/openTelemetry.d.ts +183 -0
  18. package/dist/commonjs/v3/schemas/openTelemetry.js +20 -2
  19. package/dist/commonjs/v3/schemas/openTelemetry.js.map +1 -1
  20. package/dist/commonjs/v3/schemas/queues.d.ts +41 -2
  21. package/dist/commonjs/v3/schemas/queues.js +17 -2
  22. package/dist/commonjs/v3/schemas/queues.js.map +1 -1
  23. package/dist/commonjs/v3/schemas/runEngine.d.ts +25 -0
  24. package/dist/commonjs/v3/schemas/runEngine.js +1 -0
  25. package/dist/commonjs/v3/schemas/runEngine.js.map +1 -1
  26. package/dist/commonjs/v3/semanticInternalAttributes.d.ts +3 -0
  27. package/dist/commonjs/v3/semanticInternalAttributes.js +3 -0
  28. package/dist/commonjs/v3/semanticInternalAttributes.js.map +1 -1
  29. package/dist/commonjs/v3/serverOnly/index.d.ts +1 -0
  30. package/dist/commonjs/v3/serverOnly/index.js +1 -0
  31. package/dist/commonjs/v3/serverOnly/index.js.map +1 -1
  32. package/dist/commonjs/v3/serverOnly/resourceMonitor.d.ts +190 -0
  33. package/dist/commonjs/v3/serverOnly/resourceMonitor.js +596 -0
  34. package/dist/commonjs/v3/serverOnly/resourceMonitor.js.map +1 -0
  35. package/dist/commonjs/v3/timeout/api.d.ts +1 -0
  36. package/dist/commonjs/v3/timeout/api.js +6 -0
  37. package/dist/commonjs/v3/timeout/api.js.map +1 -1
  38. package/dist/commonjs/v3/timeout/types.d.ts +1 -0
  39. package/dist/commonjs/v3/timeout/types.js.map +1 -1
  40. package/dist/commonjs/v3/timeout/usageTimeoutManager.d.ts +2 -0
  41. package/dist/commonjs/v3/timeout/usageTimeoutManager.js +10 -1
  42. package/dist/commonjs/v3/timeout/usageTimeoutManager.js.map +1 -1
  43. package/dist/commonjs/v3/utils/flattenAttributes.d.ts +1 -1
  44. package/dist/commonjs/v3/utils/flattenAttributes.js +4 -1
  45. package/dist/commonjs/v3/utils/flattenAttributes.js.map +1 -1
  46. package/dist/commonjs/v3/workers/taskExecutor.js +4 -16
  47. package/dist/commonjs/v3/workers/taskExecutor.js.map +1 -1
  48. package/dist/commonjs/v3/workers/warmStartClient.d.ts +3 -0
  49. package/dist/commonjs/v3/workers/warmStartClient.js +67 -28
  50. package/dist/commonjs/v3/workers/warmStartClient.js.map +1 -1
  51. package/dist/commonjs/version.js +1 -1
  52. package/dist/esm/v3/apiClient/index.d.ts +80 -1
  53. package/dist/esm/v3/apiClient/index.js +27 -0
  54. package/dist/esm/v3/apiClient/index.js.map +1 -1
  55. package/dist/esm/v3/errors.d.ts +5 -0
  56. package/dist/esm/v3/errors.js +10 -0
  57. package/dist/esm/v3/errors.js.map +1 -1
  58. package/dist/esm/v3/runEngineWorker/supervisor/http.d.ts +5 -0
  59. package/dist/esm/v3/runEngineWorker/supervisor/schemas.d.ts +31 -0
  60. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +4 -0
  61. package/dist/esm/v3/runEngineWorker/workload/schemas.d.ts +31 -0
  62. package/dist/esm/v3/schemas/api.d.ts +36 -8
  63. package/dist/esm/v3/schemas/api.js +12 -1
  64. package/dist/esm/v3/schemas/api.js.map +1 -1
  65. package/dist/esm/v3/schemas/messages.d.ts +15 -0
  66. package/dist/esm/v3/schemas/messages.js +7 -0
  67. package/dist/esm/v3/schemas/messages.js.map +1 -1
  68. package/dist/esm/v3/schemas/openTelemetry.d.ts +183 -0
  69. package/dist/esm/v3/schemas/openTelemetry.js +18 -1
  70. package/dist/esm/v3/schemas/openTelemetry.js.map +1 -1
  71. package/dist/esm/v3/schemas/queues.d.ts +41 -2
  72. package/dist/esm/v3/schemas/queues.js +17 -2
  73. package/dist/esm/v3/schemas/queues.js.map +1 -1
  74. package/dist/esm/v3/schemas/runEngine.d.ts +25 -0
  75. package/dist/esm/v3/schemas/runEngine.js +1 -0
  76. package/dist/esm/v3/schemas/runEngine.js.map +1 -1
  77. package/dist/esm/v3/semanticInternalAttributes.d.ts +3 -0
  78. package/dist/esm/v3/semanticInternalAttributes.js +3 -0
  79. package/dist/esm/v3/semanticInternalAttributes.js.map +1 -1
  80. package/dist/esm/v3/serverOnly/index.d.ts +1 -0
  81. package/dist/esm/v3/serverOnly/index.js +1 -0
  82. package/dist/esm/v3/serverOnly/index.js.map +1 -1
  83. package/dist/esm/v3/serverOnly/resourceMonitor.d.ts +190 -0
  84. package/dist/esm/v3/serverOnly/resourceMonitor.js +589 -0
  85. package/dist/esm/v3/serverOnly/resourceMonitor.js.map +1 -0
  86. package/dist/esm/v3/timeout/api.d.ts +1 -0
  87. package/dist/esm/v3/timeout/api.js +6 -0
  88. package/dist/esm/v3/timeout/api.js.map +1 -1
  89. package/dist/esm/v3/timeout/types.d.ts +1 -0
  90. package/dist/esm/v3/timeout/types.js.map +1 -1
  91. package/dist/esm/v3/timeout/usageTimeoutManager.d.ts +2 -0
  92. package/dist/esm/v3/timeout/usageTimeoutManager.js +10 -1
  93. package/dist/esm/v3/timeout/usageTimeoutManager.js.map +1 -1
  94. package/dist/esm/v3/utils/flattenAttributes.d.ts +1 -1
  95. package/dist/esm/v3/utils/flattenAttributes.js +4 -1
  96. package/dist/esm/v3/utils/flattenAttributes.js.map +1 -1
  97. package/dist/esm/v3/workers/taskExecutor.js +5 -17
  98. package/dist/esm/v3/workers/taskExecutor.js.map +1 -1
  99. package/dist/esm/v3/workers/warmStartClient.d.ts +3 -0
  100. package/dist/esm/v3/workers/warmStartClient.js +67 -28
  101. package/dist/esm/v3/workers/warmStartClient.js.map +1 -1
  102. package/dist/esm/version.js +1 -1
  103. package/package.json +2 -2
@@ -0,0 +1,596 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ResourceMonitor = void 0;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const node_perf_hooks_1 = require("node:perf_hooks");
11
+ const node_util_1 = require("node:util");
12
+ const node_v8_1 = require("node:v8");
13
+ const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
14
+ // Constants
15
+ const DISK_LIMIT_GB = 10;
16
+ const DISK_LIMIT_BYTES = DISK_LIMIT_GB * 1024 * 1024 * 1024; // 10Gi in bytes
17
+ class ResourceMonitor {
18
+ logInterval = null;
19
+ dirName;
20
+ processName;
21
+ ctx;
22
+ verbose;
23
+ compactLogging;
24
+ gcObserver = null;
25
+ bufferedGcEntries = [];
26
+ constructor(config) {
27
+ this.dirName = config.dirName ?? "/tmp";
28
+ this.processName = config.processName;
29
+ this.ctx = config.ctx;
30
+ this.verbose = config.verbose ?? true;
31
+ this.compactLogging = config.compactLogging ?? false;
32
+ }
33
+ /**
34
+ * Start periodic resource monitoring
35
+ * @param intervalMs Monitoring interval in milliseconds
36
+ */
37
+ startMonitoring(intervalMs = 10000) {
38
+ if (intervalMs < 1000) {
39
+ intervalMs = 1000;
40
+ console.warn("ResourceMonitor: intervalMs is less than 1000, setting to 1000");
41
+ }
42
+ if (this.logInterval) {
43
+ clearInterval(this.logInterval);
44
+ }
45
+ this.logInterval = setInterval(this.logResources.bind(this), intervalMs);
46
+ this.gcObserver = new node_perf_hooks_1.PerformanceObserver((list) => {
47
+ this.bufferedGcEntries.push(...list.getEntries());
48
+ });
49
+ this.gcObserver.observe({ entryTypes: ["gc"], buffered: true });
50
+ }
51
+ /**
52
+ * Stop resource monitoring
53
+ */
54
+ stopMonitoring() {
55
+ if (this.logInterval) {
56
+ clearInterval(this.logInterval);
57
+ this.logInterval = null;
58
+ }
59
+ if (this.gcObserver) {
60
+ this.gcObserver.disconnect();
61
+ this.gcObserver = null;
62
+ }
63
+ }
64
+ async logResources() {
65
+ try {
66
+ await this.logResourceSnapshot("ResourceMonitor");
67
+ }
68
+ catch (error) {
69
+ console.error(`Resource monitoring error: ${error instanceof Error ? error.message : String(error)}`);
70
+ }
71
+ }
72
+ /**
73
+ * Get combined system metrics (disk and memory)
74
+ */
75
+ async getSystemMetrics() {
76
+ const [disk, memory] = await Promise.all([this.getDiskMetrics(), this.getMemoryMetrics()]);
77
+ return { disk, memory };
78
+ }
79
+ /**
80
+ * Get disk space information
81
+ */
82
+ async getDiskMetrics() {
83
+ try {
84
+ // Even with permission errors, du will output a total
85
+ const { stdout, stderr } = await execAsync(`du -sb ${this.dirName} || true`);
86
+ // Get the last line of stdout which contains the total
87
+ const lastLine = stdout.split("\n").filter(Boolean).pop() || "";
88
+ const usedBytes = parseInt(lastLine.split("\t")[0] ?? "", 10);
89
+ const effectiveTotal = DISK_LIMIT_BYTES;
90
+ const effectiveUsed = Math.min(usedBytes, DISK_LIMIT_BYTES);
91
+ const effectiveFree = effectiveTotal - effectiveUsed;
92
+ const percentUsed = (effectiveUsed / effectiveTotal) * 100;
93
+ const metrics = {
94
+ total: effectiveTotal,
95
+ used: effectiveUsed,
96
+ free: effectiveFree,
97
+ percentUsed,
98
+ };
99
+ // If we had permission errors, add a warning
100
+ if (stderr.includes("Permission denied") || stderr.includes("cannot access")) {
101
+ metrics.warning = "Some directories were not accessible";
102
+ }
103
+ else if (stderr.includes("No such file or directory")) {
104
+ metrics.warning = "The directory does not exist";
105
+ }
106
+ return metrics;
107
+ }
108
+ catch (error) {
109
+ console.error(`Error getting disk metrics: ${error instanceof Error ? error.message : String(error)}`);
110
+ return {
111
+ free: DISK_LIMIT_BYTES,
112
+ total: DISK_LIMIT_BYTES,
113
+ used: 0,
114
+ percentUsed: 0,
115
+ warning: "Failed to measure disk usage",
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Get memory metrics
121
+ */
122
+ getMemoryMetrics() {
123
+ const total = node_os_1.default.totalmem();
124
+ const free = node_os_1.default.freemem();
125
+ const used = total - free;
126
+ const percentUsed = (used / total) * 100;
127
+ return { total, free, used, percentUsed };
128
+ }
129
+ /**
130
+ * Get process-specific metrics using /proc filesystem
131
+ */
132
+ async getProcMetrics(pids) {
133
+ return Promise.all(pids.map(async (pid) => {
134
+ try {
135
+ // Read process status
136
+ const status = await node_fs_1.promises.readFile(`/proc/${pid}/status`, "utf8");
137
+ const cmdline = await node_fs_1.promises.readFile(`/proc/${pid}/cmdline`, "utf8");
138
+ const stat = await node_fs_1.promises.readFile(`/proc/${pid}/stat`, "utf8");
139
+ // Parse VmRSS (resident set size) from status
140
+ const rss = parseInt(status.match(/VmRSS:\s+(\d+)/)?.[1] ?? "0", 10);
141
+ // Parse VmSize (virtual memory size) from status
142
+ const vsz = parseInt(status.match(/VmSize:\s+(\d+)/)?.[1] ?? "0", 10);
143
+ // Get process owner
144
+ const user = (await node_fs_1.promises.stat(`/proc/${pid}`)).uid.toString();
145
+ // Parse CPU stats from /proc/[pid]/stat
146
+ const stats = stat.split(" ");
147
+ const utime = parseInt(stats[13] ?? "0", 10);
148
+ const stime = parseInt(stats[14] ?? "0", 10);
149
+ const starttime = parseInt(stats[21] ?? "0", 10);
150
+ // Calculate CPU percentage
151
+ const totalTime = utime + stime;
152
+ const uptime = node_os_1.default.uptime();
153
+ const hertz = 100; // Usually 100 on Linux
154
+ const elapsedTime = uptime - starttime / hertz;
155
+ const cpuUsage = 100 * (totalTime / hertz / elapsedTime);
156
+ // Calculate memory percentage against total system memory
157
+ const totalMem = node_os_1.default.totalmem();
158
+ const memoryPercent = (rss * 1024 * 100) / totalMem;
159
+ return {
160
+ user,
161
+ pid,
162
+ cpu: cpuUsage,
163
+ mem: memoryPercent,
164
+ vsz,
165
+ rss,
166
+ command: cmdline.replace(/\0/g, " ").trim(),
167
+ };
168
+ }
169
+ catch (error) {
170
+ return null;
171
+ }
172
+ })).then((results) => results.filter((r) => r !== null));
173
+ }
174
+ /**
175
+ * Find PIDs for a process name using /proc filesystem
176
+ */
177
+ async findPidsByName(processName) {
178
+ if (!processName) {
179
+ return [];
180
+ }
181
+ try {
182
+ const pids = [];
183
+ const procDirs = await node_fs_1.promises.readdir("/proc");
184
+ for (const dir of procDirs) {
185
+ if (!/^\d+$/.test(dir))
186
+ continue;
187
+ const processPid = parseInt(dir, 10);
188
+ // Ignore processes that have a lower PID than our own PID
189
+ if (processPid <= process.pid) {
190
+ continue;
191
+ }
192
+ try {
193
+ const cmdline = await node_fs_1.promises.readFile(`/proc/${dir}/cmdline`, "utf8");
194
+ if (cmdline.includes(processName)) {
195
+ pids.push(parseInt(dir, 10));
196
+ }
197
+ }
198
+ catch {
199
+ // Ignore errors reading individual process info
200
+ continue;
201
+ }
202
+ }
203
+ return pids;
204
+ }
205
+ catch {
206
+ return [];
207
+ }
208
+ }
209
+ /**
210
+ * Get process-specific metrics
211
+ */
212
+ async getProcessMetrics() {
213
+ // Get Node.js process metrics
214
+ const totalMemory = node_os_1.default.totalmem();
215
+ // Convert GB to bytes (machine.memory is in GB)
216
+ const machineMemoryBytes = totalMemory;
217
+ const nodeMemoryUsage = process.memoryUsage();
218
+ // Node process percentage is based on machine memory if available, otherwise system memory
219
+ const nodeMemoryPercent = (nodeMemoryUsage.rss / machineMemoryBytes) * 100;
220
+ const heapStats = (0, node_v8_1.getHeapStatistics)();
221
+ const nodeMetrics = {
222
+ memoryUsage: nodeMemoryUsage.rss,
223
+ memoryUsagePercent: nodeMemoryPercent,
224
+ heapUsed: nodeMemoryUsage.heapUsed,
225
+ heapSizeLimit: heapStats.heap_size_limit,
226
+ heapUsagePercent: (heapStats.used_heap_size / heapStats.heap_size_limit) * 100,
227
+ availableHeap: heapStats.total_available_size,
228
+ isNearHeapLimit: heapStats.used_heap_size / heapStats.heap_size_limit > 0.8,
229
+ };
230
+ let method = "ps";
231
+ try {
232
+ let processes = [];
233
+ // Try ps first, fall back to /proc if it fails
234
+ try {
235
+ const { stdout: psOutput } = await execAsync(`ps aux | grep ${this.processName} | grep -v grep`);
236
+ if (psOutput.trim()) {
237
+ processes = psOutput
238
+ .trim()
239
+ .split("\n")
240
+ .filter((line) => {
241
+ const parts = line.trim().split(/\s+/);
242
+ const pid = parseInt(parts[1] ?? "0", 10);
243
+ // Ignore processes that have a lower PID than our own PID
244
+ return pid > process.pid;
245
+ })
246
+ .map((line) => {
247
+ const parts = line.trim().split(/\s+/);
248
+ return {
249
+ user: parts[0] ?? "",
250
+ pid: parseInt(parts[1] ?? "0", 10),
251
+ cpu: parseFloat(parts[2] ?? "0"),
252
+ mem: parseFloat(parts[3] ?? "0"),
253
+ vsz: parseInt(parts[4] ?? "0", 10),
254
+ rss: parseInt(parts[5] ?? "0", 10),
255
+ command: parts.slice(10).join(" "),
256
+ };
257
+ });
258
+ }
259
+ }
260
+ catch {
261
+ // ps failed, try /proc instead
262
+ method = "proc";
263
+ const pids = await this.findPidsByName(this.processName);
264
+ processes = await this.getProcMetrics(pids);
265
+ }
266
+ if (processes.length === 0) {
267
+ return {
268
+ node: nodeMetrics,
269
+ targetProcess: this.processName
270
+ ? {
271
+ method,
272
+ processName: this.processName,
273
+ count: 0,
274
+ processes: [],
275
+ averages: null,
276
+ totals: null,
277
+ }
278
+ : null,
279
+ };
280
+ }
281
+ // For CPU:
282
+ // - ps shows CPU percentage per core (e.g., 100% = 1 core)
283
+ // - machine.cpu is in cores (e.g., 0.5 = half a core)
284
+ // - we want to show percentage of allocated CPU (e.g., 100% = using all allocated CPU)
285
+ const availableCpu = node_os_1.default.cpus().length;
286
+ const cpuNormalizer = availableCpu * 100; // Convert to basis points for better precision with fractional CPUs
287
+ // For Memory:
288
+ // - ps 'mem' is already a percentage of system memory
289
+ // - we need to convert it to a percentage of machine memory
290
+ // - if machine memory is 0.5GB and system has 16GB, we multiply the percentage by 32
291
+ const memoryScaleFactor = this.ctx.machine ? totalMemory / machineMemoryBytes : 1;
292
+ const totals = processes.reduce((acc, proc) => ({
293
+ cpu: acc.cpu + proc.cpu,
294
+ // Scale memory percentage to machine memory
295
+ // TODO: test this
296
+ memory: acc.memory + proc.mem * memoryScaleFactor,
297
+ rss: acc.rss + proc.rss,
298
+ vsz: acc.vsz + proc.vsz,
299
+ }), { cpu: 0, memory: 0, rss: 0, vsz: 0 });
300
+ const count = processes.length;
301
+ const averages = {
302
+ cpu: totals.cpu / (count * cpuNormalizer),
303
+ memory: totals.memory / count,
304
+ rss: totals.rss / count,
305
+ vsz: totals.vsz / count,
306
+ };
307
+ return {
308
+ node: nodeMetrics,
309
+ targetProcess: this.processName
310
+ ? {
311
+ method,
312
+ processName: this.processName,
313
+ count,
314
+ processes,
315
+ averages,
316
+ totals: {
317
+ cpu: totals.cpu / cpuNormalizer,
318
+ memory: totals.memory,
319
+ rss: totals.rss,
320
+ vsz: totals.vsz,
321
+ },
322
+ }
323
+ : null,
324
+ };
325
+ }
326
+ catch (error) {
327
+ return {
328
+ node: nodeMetrics,
329
+ targetProcess: this.processName
330
+ ? {
331
+ method,
332
+ processName: this.processName,
333
+ count: 0,
334
+ processes: [],
335
+ averages: null,
336
+ totals: null,
337
+ }
338
+ : null,
339
+ };
340
+ }
341
+ }
342
+ /**
343
+ * Log a snapshot of current resource usage
344
+ */
345
+ async logResourceSnapshot(label = "Resource Snapshot") {
346
+ try {
347
+ const payload = await this.getResourceSnapshotPayload();
348
+ const enhancedLabel = this.compactLogging
349
+ ? this.createCompactLabel(payload, label)
350
+ : this.createEnhancedLabel(payload, label);
351
+ if (payload.process.node.isNearHeapLimit) {
352
+ console.warn(`${enhancedLabel}: Node is near heap limit`);
353
+ }
354
+ else {
355
+ console.log(enhancedLabel);
356
+ }
357
+ if (this.verbose) {
358
+ console.dir(payload, { depth: 6 });
359
+ }
360
+ }
361
+ catch (error) {
362
+ console.error(`Error logging resource snapshot: ${error instanceof Error ? error.message : String(error)}`);
363
+ }
364
+ }
365
+ /**
366
+ * Create an enhanced log label with key metrics for quick scanning
367
+ */
368
+ createEnhancedLabel(payload, baseLabel) {
369
+ const parts = [baseLabel];
370
+ // System resources with text indicators
371
+ const diskPercent = parseFloat(payload.system.disk.percentUsed);
372
+ const memoryPercent = parseFloat(payload.system.memory.percentUsed);
373
+ const diskIndicator = this.getTextIndicator(diskPercent, 80, 90);
374
+ const memIndicator = this.getTextIndicator(memoryPercent, 80, 90);
375
+ parts.push(`Disk:${diskPercent.toFixed(1).padStart(5)}%${diskIndicator}`);
376
+ parts.push(`Mem:${memoryPercent.toFixed(1).padStart(5)}%${memIndicator}`);
377
+ // Node process metrics with text indicators
378
+ const nodeMemPercent = parseFloat(payload.process.node.memoryUsagePercent);
379
+ const heapPercent = parseFloat(payload.process.node.heapUsagePercent);
380
+ const nodeIndicator = this.getTextIndicator(nodeMemPercent, 70, 85);
381
+ const heapIndicator = this.getTextIndicator(heapPercent, 70, 85);
382
+ parts.push(`Node:${nodeMemPercent.toFixed(1).padStart(4)}%${nodeIndicator}`);
383
+ parts.push(`Heap:${heapPercent.toFixed(1).padStart(4)}%${heapIndicator}`);
384
+ // Target process metrics (if available)
385
+ if (payload.process.targetProcess && payload.process.targetProcess.count > 0) {
386
+ const targetCpu = payload.process.targetProcess.totals?.cpuPercent || "0";
387
+ const targetMem = payload.process.targetProcess.totals?.memoryPercent || "0";
388
+ const targetCpuNum = parseFloat(targetCpu);
389
+ const targetMemNum = parseFloat(targetMem);
390
+ const cpuIndicator = this.getTextIndicator(targetCpuNum, 80, 90);
391
+ const memIndicator = this.getTextIndicator(targetMemNum, 80, 90);
392
+ parts.push(`${payload.process.targetProcess.processName}:${targetCpu.padStart(4)}%${cpuIndicator}/${targetMem.padStart(4)}%${memIndicator}`);
393
+ }
394
+ // GC activity with performance indicators
395
+ if (payload.gc && payload.gc.count > 0) {
396
+ const avgDuration = payload.gc.avgDuration;
397
+ const gcIndicator = this.getTextIndicator(avgDuration, 5, 10, true);
398
+ parts.push(`GC:${payload.gc.count.toString().padStart(2)}(${avgDuration
399
+ .toFixed(1)
400
+ .padStart(4)}ms)${gcIndicator}`);
401
+ }
402
+ // Machine constraints
403
+ if (payload.constraints) {
404
+ parts.push(`[${payload.constraints.cpu}CPU/${payload.constraints.memoryGB}GB]`);
405
+ }
406
+ // Warning indicators (only show critical ones in the main label)
407
+ const criticalWarnings = [];
408
+ if (payload.process.node.isNearHeapLimit)
409
+ criticalWarnings.push("HEAP_LIMIT");
410
+ if (diskPercent > 90)
411
+ criticalWarnings.push("DISK_CRITICAL");
412
+ if (memoryPercent > 95)
413
+ criticalWarnings.push("MEM_CRITICAL");
414
+ if (payload.system.disk.warning)
415
+ criticalWarnings.push("DISK_WARN");
416
+ if (criticalWarnings.length > 0) {
417
+ parts.push(`[${criticalWarnings.join(",")}]`);
418
+ }
419
+ return parts.join(" | ");
420
+ }
421
+ /**
422
+ * Get text-based indicator for percentage values
423
+ */
424
+ getTextIndicator(value, warningThreshold, criticalThreshold, isDuration = false) {
425
+ if (isDuration) {
426
+ // For duration values, higher is worse
427
+ if (value >= criticalThreshold)
428
+ return " [CRIT]";
429
+ if (value >= warningThreshold)
430
+ return " [WARN]";
431
+ return " [OK]";
432
+ }
433
+ else {
434
+ // For percentage values, higher is worse
435
+ if (value >= criticalThreshold)
436
+ return " [CRIT]";
437
+ if (value >= warningThreshold)
438
+ return " [WARN]";
439
+ return " [OK]";
440
+ }
441
+ }
442
+ /**
443
+ * Create a compact version of the enhanced label for high-frequency logging
444
+ */
445
+ createCompactLabel(payload, baseLabel) {
446
+ const parts = [baseLabel];
447
+ // Only show critical metrics in compact mode
448
+ const diskPercent = parseFloat(payload.system.disk.percentUsed);
449
+ const memoryPercent = parseFloat(payload.system.memory.percentUsed);
450
+ const heapPercent = parseFloat(payload.process.node.heapUsagePercent);
451
+ // Use single character indicators for compactness
452
+ const diskIndicator = diskPercent > 90 ? "!" : diskPercent > 80 ? "?" : ".";
453
+ const memIndicator = memoryPercent > 95 ? "!" : memoryPercent > 80 ? "?" : ".";
454
+ const heapIndicator = heapPercent > 85 ? "!" : heapPercent > 70 ? "?" : ".";
455
+ parts.push(`D:${diskPercent.toFixed(0).padStart(2)}%${diskIndicator}`);
456
+ parts.push(`M:${memoryPercent.toFixed(0).padStart(2)}%${memIndicator}`);
457
+ parts.push(`H:${heapPercent.toFixed(0).padStart(2)}%${heapIndicator}`);
458
+ // GC activity (only if significant)
459
+ if (payload.gc && payload.gc.count > 0 && payload.gc.avgDuration > 2) {
460
+ const gcIndicator = payload.gc.avgDuration > 10 ? "!" : payload.gc.avgDuration > 5 ? "?" : ".";
461
+ parts.push(`GC:${payload.gc.count}${gcIndicator}`);
462
+ }
463
+ return parts.join(" ");
464
+ }
465
+ async getResourceSnapshotPayload() {
466
+ const [systemMetrics, processMetrics] = await Promise.all([
467
+ this.getSystemMetrics(),
468
+ this.getProcessMetrics(),
469
+ ]);
470
+ const gcSummary = summarizeGCEntries(this.bufferedGcEntries);
471
+ this.bufferedGcEntries = [];
472
+ const formatBytes = (bytes) => (bytes / (1024 * 1024)).toFixed(2);
473
+ const formatPercent = (value) => value.toFixed(1);
474
+ return {
475
+ system: {
476
+ disk: {
477
+ limitGiB: DISK_LIMIT_GB,
478
+ dirName: this.dirName,
479
+ usedGiB: (systemMetrics.disk.used / (1024 * 1024 * 1024)).toFixed(2),
480
+ freeGiB: (systemMetrics.disk.free / (1024 * 1024 * 1024)).toFixed(2),
481
+ percentUsed: formatPercent(systemMetrics.disk.percentUsed),
482
+ warning: systemMetrics.disk.warning,
483
+ },
484
+ memory: {
485
+ freeGB: (systemMetrics.memory.free / (1024 * 1024 * 1024)).toFixed(2),
486
+ percentUsed: formatPercent(systemMetrics.memory.percentUsed),
487
+ },
488
+ },
489
+ gc: gcSummary,
490
+ constraints: {
491
+ cpu: node_os_1.default.cpus().length,
492
+ memoryGB: Math.floor(node_os_1.default.totalmem() / (1024 * 1024 * 1024)),
493
+ note: "Using system resources (no machine constraints specified)",
494
+ },
495
+ process: {
496
+ node: {
497
+ memoryUsageMB: formatBytes(processMetrics.node.memoryUsage),
498
+ memoryUsagePercent: formatPercent(processMetrics.node.memoryUsagePercent),
499
+ heapUsedMB: formatBytes(processMetrics.node.heapUsed),
500
+ heapSizeLimitMB: formatBytes(processMetrics.node.heapSizeLimit),
501
+ heapUsagePercent: formatPercent(processMetrics.node.heapUsagePercent),
502
+ availableHeapMB: formatBytes(processMetrics.node.availableHeap),
503
+ isNearHeapLimit: processMetrics.node.isNearHeapLimit,
504
+ ...(this.verbose
505
+ ? {
506
+ heapStats: (0, node_v8_1.getHeapStatistics)(),
507
+ }
508
+ : {}),
509
+ },
510
+ targetProcess: processMetrics.targetProcess
511
+ ? {
512
+ method: processMetrics.targetProcess.method,
513
+ processName: processMetrics.targetProcess.processName,
514
+ count: processMetrics.targetProcess.count,
515
+ averages: processMetrics.targetProcess.averages
516
+ ? {
517
+ cpuPercent: formatPercent(processMetrics.targetProcess.averages.cpu * 100),
518
+ memoryPercent: formatPercent(processMetrics.targetProcess.averages.memory),
519
+ rssMB: formatBytes(processMetrics.targetProcess.averages.rss * 1024),
520
+ vszMB: formatBytes(processMetrics.targetProcess.averages.vsz * 1024),
521
+ }
522
+ : null,
523
+ totals: processMetrics.targetProcess.totals
524
+ ? {
525
+ cpuPercent: formatPercent(processMetrics.targetProcess.totals.cpu * 100),
526
+ memoryPercent: formatPercent(processMetrics.targetProcess.totals.memory),
527
+ rssMB: formatBytes(processMetrics.targetProcess.totals.rss * 1024),
528
+ vszMB: formatBytes(processMetrics.targetProcess.totals.vsz * 1024),
529
+ }
530
+ : null,
531
+ }
532
+ : null,
533
+ },
534
+ timestamp: new Date().toISOString(),
535
+ };
536
+ }
537
+ }
538
+ exports.ResourceMonitor = ResourceMonitor;
539
+ function summarizeGCEntries(entries) {
540
+ if (entries.length === 0) {
541
+ return {
542
+ count: 0,
543
+ totalDuration: 0,
544
+ avgDuration: 0,
545
+ maxDuration: 0,
546
+ kinds: {},
547
+ };
548
+ }
549
+ let totalDuration = 0;
550
+ let maxDuration = 0;
551
+ const kinds = {};
552
+ for (const e of entries) {
553
+ const duration = e.duration;
554
+ totalDuration += duration;
555
+ if (duration > maxDuration)
556
+ maxDuration = duration;
557
+ const kind = kindName(e?.detail?.kind ?? "unknown");
558
+ if (!kinds[kind]) {
559
+ kinds[kind] = { count: 0, totalDuration: 0, maxDuration: 0 };
560
+ }
561
+ kinds[kind].count += 1;
562
+ kinds[kind].totalDuration += duration;
563
+ if (duration > kinds[kind].maxDuration)
564
+ kinds[kind].maxDuration = duration;
565
+ }
566
+ // finalize averages
567
+ const avgDuration = totalDuration / entries.length;
568
+ const kindsWithAvg = {};
569
+ for (const [kind, stats] of Object.entries(kinds)) {
570
+ kindsWithAvg[kind] = {
571
+ count: stats.count,
572
+ totalDuration: stats.totalDuration,
573
+ avgDuration: stats.totalDuration / stats.count,
574
+ maxDuration: stats.maxDuration,
575
+ };
576
+ }
577
+ return {
578
+ count: entries.length,
579
+ totalDuration,
580
+ avgDuration,
581
+ maxDuration,
582
+ kinds: kindsWithAvg,
583
+ };
584
+ }
585
+ const kindName = (k) => {
586
+ if (typeof k === "number") {
587
+ return ({
588
+ [node_perf_hooks_1.constants.NODE_PERFORMANCE_GC_MAJOR]: "major",
589
+ [node_perf_hooks_1.constants.NODE_PERFORMANCE_GC_MINOR]: "minor",
590
+ [node_perf_hooks_1.constants.NODE_PERFORMANCE_GC_INCREMENTAL]: "incremental",
591
+ [node_perf_hooks_1.constants.NODE_PERFORMANCE_GC_WEAKCB]: "weak-cb",
592
+ }[k] ?? `kind:${k}`);
593
+ }
594
+ return k;
595
+ };
596
+ //# sourceMappingURL=resourceMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceMonitor.js","sourceRoot":"","sources":["../../../../src/v3/serverOnly/resourceMonitor.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,5 @@ export declare class TimeoutAPI implements TimeoutManager {
9
9
  setGlobalManager(manager: TimeoutManager): boolean;
10
10
  disable(): void;
11
11
  reset(): void;
12
+ registerListener(listener: (timeoutInSeconds: number, elapsedTimeInSeconds: number) => void | Promise<void>): void;
12
13
  }
@@ -35,6 +35,12 @@ class TimeoutAPI {
35
35
  this.#getManager().reset();
36
36
  this.disable();
37
37
  }
38
+ registerListener(listener) {
39
+ const manager = this.#getManager();
40
+ if (manager.registerListener) {
41
+ manager.registerListener(listener);
42
+ }
43
+ }
38
44
  #getManager() {
39
45
  return (0, globals_js_1.getGlobal)(API_NAME) ?? NOOP_TIMEOUT_MANAGER;
40
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/v3/timeout/api.ts"],"names":[],"mappings":";;;AAAA,oDAAkF;AAGlF,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B,MAAM,kBAAkB;IACtB,iBAAiB,CAAC,gBAAyB;QACzC,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,KAAI,CAAC;CACX;AAED,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD,MAAa,UAAU;IACb,MAAM,CAAC,SAAS,CAAc;IAEtC,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IACnC,CAAC;IAEM,iBAAiB,CAAC,gBAAyB;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAEM,gBAAgB,CAAC,OAAuB;QAC7C,OAAO,IAAA,2BAAc,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACZ,IAAA,6BAAgB,EAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,sBAAS,EAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;IACrD,CAAC;CACF;AArCD,gCAqCC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/v3/timeout/api.ts"],"names":[],"mappings":";;;AAAA,oDAAkF;AAGlF,MAAM,QAAQ,GAAG,SAAS,CAAC;AAE3B,MAAM,kBAAkB;IACtB,iBAAiB,CAAC,gBAAyB;QACzC,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,KAAI,CAAC;CACX;AAED,MAAM,oBAAoB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAEtD,MAAa,UAAU;IACb,MAAM,CAAC,SAAS,CAAc;IAEtC,gBAAuB,CAAC;IAEjB,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC;IACnC,CAAC;IAEM,iBAAiB,CAAC,gBAAyB;QAChD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAEM,gBAAgB,CAAC,OAAuB;QAC7C,OAAO,IAAA,2BAAc,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACZ,IAAA,6BAAgB,EAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,gBAAgB,CAAC,QAA0F;QAChH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,WAAW;QACT,OAAO,IAAA,sBAAS,EAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC;IACrD,CAAC;CACF;AA5CD,gCA4CC"}