@trigger.dev/core 4.0.2 → 4.0.4

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 (131) hide show
  1. package/dist/commonjs/v3/errors.d.ts +1 -0
  2. package/dist/commonjs/v3/errors.js +35 -2
  3. package/dist/commonjs/v3/errors.js.map +1 -1
  4. package/dist/commonjs/v3/heartbeats/api.d.ts +14 -0
  5. package/dist/commonjs/v3/heartbeats/api.js +58 -0
  6. package/dist/commonjs/v3/heartbeats/api.js.map +1 -0
  7. package/dist/commonjs/v3/heartbeats/manager.d.ts +16 -0
  8. package/dist/commonjs/v3/heartbeats/manager.js +72 -0
  9. package/dist/commonjs/v3/heartbeats/manager.js.map +1 -0
  10. package/dist/commonjs/v3/heartbeats/types.d.ts +7 -0
  11. package/dist/commonjs/v3/heartbeats/types.js +3 -0
  12. package/dist/commonjs/v3/heartbeats/types.js.map +1 -0
  13. package/dist/commonjs/v3/heartbeats-api.d.ts +3 -0
  14. package/dist/commonjs/v3/heartbeats-api.js +9 -0
  15. package/dist/commonjs/v3/heartbeats-api.js.map +1 -0
  16. package/dist/commonjs/v3/index.d.ts +1 -0
  17. package/dist/commonjs/v3/index.js +1 -0
  18. package/dist/commonjs/v3/index.js.map +1 -1
  19. package/dist/commonjs/v3/links.d.ts +1 -0
  20. package/dist/commonjs/v3/links.js +1 -0
  21. package/dist/commonjs/v3/links.js.map +1 -1
  22. package/dist/commonjs/v3/runEngineWorker/index.d.ts +1 -0
  23. package/dist/commonjs/v3/runEngineWorker/index.js +1 -0
  24. package/dist/commonjs/v3/runEngineWorker/index.js.map +1 -1
  25. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.d.ts +71 -0
  26. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js +316 -0
  27. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -0
  28. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +1 -0
  29. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +589 -0
  30. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -0
  31. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +43 -0
  32. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +131 -0
  33. package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -0
  34. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.d.ts +7 -4
  35. package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
  36. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.d.ts +76 -0
  37. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.js +161 -0
  38. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.js.map +1 -0
  39. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +1 -0
  40. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +293 -0
  41. package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +1 -0
  42. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.d.ts +67 -0
  43. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.js +153 -0
  44. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.js.map +1 -0
  45. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +1 -0
  46. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +235 -0
  47. package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +1 -0
  48. package/dist/commonjs/v3/runEngineWorker/supervisor/session.d.ts +5 -2
  49. package/dist/commonjs/v3/runEngineWorker/supervisor/session.js +14 -8
  50. package/dist/commonjs/v3/runEngineWorker/supervisor/session.js.map +1 -1
  51. package/dist/commonjs/v3/runEngineWorker/workload/http.d.ts +80 -111
  52. package/dist/commonjs/v3/runEngineWorker/workload/http.js +36 -14
  53. package/dist/commonjs/v3/runEngineWorker/workload/http.js.map +1 -1
  54. package/dist/commonjs/v3/schemas/api.d.ts +139 -0
  55. package/dist/commonjs/v3/schemas/api.js +11 -3
  56. package/dist/commonjs/v3/schemas/api.js.map +1 -1
  57. package/dist/commonjs/v3/utils/globals.d.ts +2 -0
  58. package/dist/commonjs/v3/utils/globals.js.map +1 -1
  59. package/dist/commonjs/v3/utils/ioSerialization.d.ts +1 -0
  60. package/dist/commonjs/v3/utils/ioSerialization.js +92 -3
  61. package/dist/commonjs/v3/utils/ioSerialization.js.map +1 -1
  62. package/dist/commonjs/v3/workers/index.d.ts +1 -0
  63. package/dist/commonjs/v3/workers/index.js +3 -1
  64. package/dist/commonjs/v3/workers/index.js.map +1 -1
  65. package/dist/commonjs/version.js +1 -1
  66. package/dist/esm/v3/errors.d.ts +1 -0
  67. package/dist/esm/v3/errors.js +34 -2
  68. package/dist/esm/v3/errors.js.map +1 -1
  69. package/dist/esm/v3/heartbeats/api.d.ts +14 -0
  70. package/dist/esm/v3/heartbeats/api.js +54 -0
  71. package/dist/esm/v3/heartbeats/api.js.map +1 -0
  72. package/dist/esm/v3/heartbeats/manager.d.ts +16 -0
  73. package/dist/esm/v3/heartbeats/manager.js +68 -0
  74. package/dist/esm/v3/heartbeats/manager.js.map +1 -0
  75. package/dist/esm/v3/heartbeats/types.d.ts +7 -0
  76. package/dist/esm/v3/heartbeats/types.js +2 -0
  77. package/dist/esm/v3/heartbeats/types.js.map +1 -0
  78. package/dist/esm/v3/heartbeats-api.d.ts +3 -0
  79. package/dist/esm/v3/heartbeats-api.js +6 -0
  80. package/dist/esm/v3/heartbeats-api.js.map +1 -0
  81. package/dist/esm/v3/index.d.ts +1 -0
  82. package/dist/esm/v3/index.js +1 -0
  83. package/dist/esm/v3/index.js.map +1 -1
  84. package/dist/esm/v3/links.d.ts +1 -0
  85. package/dist/esm/v3/links.js +1 -0
  86. package/dist/esm/v3/links.js.map +1 -1
  87. package/dist/esm/v3/runEngineWorker/index.d.ts +1 -0
  88. package/dist/esm/v3/runEngineWorker/index.js +1 -0
  89. package/dist/esm/v3/runEngineWorker/index.js.map +1 -1
  90. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.d.ts +71 -0
  91. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js +312 -0
  92. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.js.map +1 -0
  93. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +1 -0
  94. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +587 -0
  95. package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +1 -0
  96. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.d.ts +43 -0
  97. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js +127 -0
  98. package/dist/esm/v3/runEngineWorker/supervisor/consumerPoolMetrics.js.map +1 -0
  99. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.d.ts +7 -4
  100. package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.js.map +1 -1
  101. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.d.ts +76 -0
  102. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.js +157 -0
  103. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.js.map +1 -0
  104. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +1 -0
  105. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +291 -0
  106. package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +1 -0
  107. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.d.ts +67 -0
  108. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.js +146 -0
  109. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.js.map +1 -0
  110. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +1 -0
  111. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +233 -0
  112. package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +1 -0
  113. package/dist/esm/v3/runEngineWorker/supervisor/session.d.ts +5 -2
  114. package/dist/esm/v3/runEngineWorker/supervisor/session.js +14 -8
  115. package/dist/esm/v3/runEngineWorker/supervisor/session.js.map +1 -1
  116. package/dist/esm/v3/runEngineWorker/workload/http.d.ts +80 -111
  117. package/dist/esm/v3/runEngineWorker/workload/http.js +37 -15
  118. package/dist/esm/v3/runEngineWorker/workload/http.js.map +1 -1
  119. package/dist/esm/v3/schemas/api.d.ts +139 -0
  120. package/dist/esm/v3/schemas/api.js +8 -0
  121. package/dist/esm/v3/schemas/api.js.map +1 -1
  122. package/dist/esm/v3/utils/globals.d.ts +2 -0
  123. package/dist/esm/v3/utils/globals.js.map +1 -1
  124. package/dist/esm/v3/utils/ioSerialization.d.ts +1 -0
  125. package/dist/esm/v3/utils/ioSerialization.js +92 -3
  126. package/dist/esm/v3/utils/ioSerialization.js.map +1 -1
  127. package/dist/esm/v3/workers/index.d.ts +1 -0
  128. package/dist/esm/v3/workers/index.js +1 -0
  129. package/dist/esm/v3/workers/index.js.map +1 -1
  130. package/dist/esm/version.js +1 -1
  131. package/package.json +1 -1
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const scalingStrategies_js_1 = require("./scalingStrategies.js");
5
+ const queueMetricsProcessor_js_1 = require("./queueMetricsProcessor.js");
6
+ (0, vitest_1.describe)("Scaling Strategies", () => {
7
+ const baseOptions = {
8
+ minConsumerCount: 1,
9
+ maxConsumerCount: 20,
10
+ targetRatio: 1.0,
11
+ };
12
+ function createMetricsProcessor(smoothedValue) {
13
+ const processor = new queueMetricsProcessor_js_1.QueueMetricsProcessor({ ewmaAlpha: 0.3, batchWindowMs: 1000 });
14
+ // Initialize processor with the target smoothed value
15
+ processor.addSample(smoothedValue);
16
+ processor.processBatch();
17
+ return processor;
18
+ }
19
+ (0, vitest_1.describe)("NoneScalingStrategy", () => {
20
+ const strategy = new scalingStrategies_js_1.NoneScalingStrategy(baseOptions);
21
+ (0, vitest_1.it)("should always return current count (static mode)", () => {
22
+ (0, vitest_1.expect)(strategy.calculateTargetCount(5)).toBe(5);
23
+ (0, vitest_1.expect)(strategy.calculateTargetCount(1)).toBe(1);
24
+ (0, vitest_1.expect)(strategy.calculateTargetCount(10)).toBe(10);
25
+ // Clamping still applies
26
+ (0, vitest_1.expect)(strategy.calculateTargetCount(25)).toBe(20); // Clamped to max
27
+ (0, vitest_1.expect)(strategy.calculateTargetCount(0)).toBe(1); // Clamped to min
28
+ });
29
+ (0, vitest_1.it)("should have correct name", () => {
30
+ (0, vitest_1.expect)(strategy.name).toBe("none");
31
+ });
32
+ (0, vitest_1.it)("should handle zero current count", () => {
33
+ // Should clamp to minConsumerCount
34
+ const result = strategy.calculateTargetCount(0);
35
+ (0, vitest_1.expect)(result).toBe(1);
36
+ });
37
+ });
38
+ (0, vitest_1.describe)("SmoothScalingStrategy", () => {
39
+ (0, vitest_1.it)("should calculate target based on smoothed queue length", () => {
40
+ const metricsProcessor = createMetricsProcessor(10); // smoothed value = 10
41
+ const strategy = new scalingStrategies_js_1.SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
42
+ // With targetRatio=1.0, target consumers = ceil(10/1.0) = 10
43
+ // With dampingFactor=0.7 and currentCount=5:
44
+ // dampedTarget = 5 + (10 - 5) * 0.7 = 5 + 3.5 = 8.5 → 9
45
+ const result = strategy.calculateTargetCount(5);
46
+ (0, vitest_1.expect)(result).toBe(9);
47
+ });
48
+ (0, vitest_1.it)("should apply damping factor correctly", () => {
49
+ const metricsProcessor = createMetricsProcessor(20); // smoothed value = 20
50
+ const strategy = new scalingStrategies_js_1.SmoothScalingStrategy({
51
+ ...baseOptions,
52
+ metricsProcessor,
53
+ dampingFactor: 0.5,
54
+ }); // 50% damping
55
+ // With targetRatio=1.0, target consumers = ceil(20/1.0) = 20
56
+ // With dampingFactor=0.5 and currentCount=5:
57
+ // dampedTarget = 5 + (20 - 5) * 0.5 = 5 + 7.5 = 12.5 → 13
58
+ const result = strategy.calculateTargetCount(5);
59
+ (0, vitest_1.expect)(result).toBe(13);
60
+ });
61
+ (0, vitest_1.it)("should handle zero current count", () => {
62
+ const metricsProcessor = createMetricsProcessor(5);
63
+ const strategy = new scalingStrategies_js_1.SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
64
+ // With smoothedQueueLength=5, targetRatio=1.0:
65
+ // targetConsumers = ceil(5/1.0) = 5
66
+ // dampedTarget = 0 + (5 - 0) * 0.7 = 3.5 → 4
67
+ const result = strategy.calculateTargetCount(0);
68
+ (0, vitest_1.expect)(result).toBe(4);
69
+ });
70
+ (0, vitest_1.it)("should validate damping factor", () => {
71
+ const metricsProcessor = createMetricsProcessor(10);
72
+ (0, vitest_1.expect)(() => new scalingStrategies_js_1.SmoothScalingStrategy({
73
+ ...baseOptions,
74
+ metricsProcessor,
75
+ dampingFactor: -0.1,
76
+ })).toThrow("dampingFactor must be between 0 and 1");
77
+ (0, vitest_1.expect)(() => new scalingStrategies_js_1.SmoothScalingStrategy({
78
+ ...baseOptions,
79
+ metricsProcessor,
80
+ dampingFactor: 1.1,
81
+ })).toThrow("dampingFactor must be between 0 and 1");
82
+ (0, vitest_1.expect)(() => new scalingStrategies_js_1.SmoothScalingStrategy({
83
+ ...baseOptions,
84
+ metricsProcessor,
85
+ dampingFactor: 0,
86
+ })).not.toThrow();
87
+ (0, vitest_1.expect)(() => new scalingStrategies_js_1.SmoothScalingStrategy({
88
+ ...baseOptions,
89
+ metricsProcessor,
90
+ dampingFactor: 1,
91
+ })).not.toThrow();
92
+ });
93
+ (0, vitest_1.it)("should handle zero current count", () => {
94
+ const metricsProcessor = createMetricsProcessor(10);
95
+ const strategy = new scalingStrategies_js_1.SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
96
+ // With smoothedQueueLength=10, targetRatio=1.0:
97
+ // targetConsumers = ceil(10/1.0) = 10
98
+ // dampedTarget = 0 + (10 - 0) * 0.7 = 7
99
+ const result = strategy.calculateTargetCount(0);
100
+ (0, vitest_1.expect)(result).toBe(7);
101
+ });
102
+ });
103
+ (0, vitest_1.describe)("AggressiveScalingStrategy", () => {
104
+ (0, vitest_1.it)("should scale down when under-utilized", () => {
105
+ // queuePerConsumer = 2/5 = 0.4, scaleDownThreshold = 1.0 * 0.5 = 0.5
106
+ // Under-utilized since 0.4 < 0.5
107
+ const metricsProcessor = createMetricsProcessor(2);
108
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
109
+ const result = strategy.calculateTargetCount(5);
110
+ (0, vitest_1.expect)(result).toBeLessThan(5);
111
+ (0, vitest_1.expect)(result).toBeGreaterThanOrEqual(baseOptions.minConsumerCount);
112
+ });
113
+ (0, vitest_1.it)("should maintain count when in optimal zone", () => {
114
+ // queuePerConsumer = 5/5 = 1.0
115
+ // Optimal zone: 0.5 < 1.0 < 2.0
116
+ const metricsProcessor = createMetricsProcessor(5);
117
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
118
+ const result = strategy.calculateTargetCount(5);
119
+ (0, vitest_1.expect)(result).toBe(5);
120
+ });
121
+ (0, vitest_1.it)("should scale up when over-utilized", () => {
122
+ // queuePerConsumer = 15/5 = 3.0, scaleUpThreshold = 1.0 * 2.0 = 2.0
123
+ // Over-utilized since 3.0 > 2.0
124
+ const metricsProcessor = createMetricsProcessor(15);
125
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
126
+ const result = strategy.calculateTargetCount(5);
127
+ (0, vitest_1.expect)(result).toBeGreaterThan(5);
128
+ (0, vitest_1.expect)(result).toBeLessThanOrEqual(baseOptions.maxConsumerCount);
129
+ });
130
+ (0, vitest_1.it)("should scale aggressively for critical load", () => {
131
+ // queuePerConsumer = 25/5 = 5.0 (critical: 5x target ratio)
132
+ const metricsProcessor = createMetricsProcessor(25);
133
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
134
+ const result = strategy.calculateTargetCount(5);
135
+ // Should apply 50% scale factor: ceil(5 * 1.5) = 8
136
+ // But capped by 50% max increment: 5 + ceil(5 * 0.5) = 5 + 3 = 8
137
+ (0, vitest_1.expect)(result).toBe(8);
138
+ });
139
+ (0, vitest_1.it)("should respect max consumer count", () => {
140
+ const metricsProcessor = createMetricsProcessor(50); // Very high load
141
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({
142
+ ...baseOptions,
143
+ maxConsumerCount: 6,
144
+ metricsProcessor,
145
+ });
146
+ const result = strategy.calculateTargetCount(5);
147
+ (0, vitest_1.expect)(result).toBeLessThanOrEqual(6);
148
+ });
149
+ (0, vitest_1.it)("should respect min consumer count", () => {
150
+ const metricsProcessor = createMetricsProcessor(0.1); // Very low load
151
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({
152
+ ...baseOptions,
153
+ minConsumerCount: 3,
154
+ metricsProcessor,
155
+ });
156
+ const result = strategy.calculateTargetCount(5);
157
+ (0, vitest_1.expect)(result).toBeGreaterThanOrEqual(3);
158
+ });
159
+ (0, vitest_1.it)("should return thresholds", () => {
160
+ const metricsProcessor = createMetricsProcessor(10);
161
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
162
+ const thresholds = strategy.getThresholds(1.0);
163
+ (0, vitest_1.expect)(thresholds).toEqual({
164
+ scaleDownThreshold: 0.5,
165
+ scaleUpThreshold: 2.0,
166
+ criticalThreshold: 5.0,
167
+ highThreshold: 3.0,
168
+ });
169
+ });
170
+ (0, vitest_1.it)("should handle zero current count without division by zero", () => {
171
+ const metricsProcessor = createMetricsProcessor(10);
172
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
173
+ // Should use (currentCount || 1) to prevent division by zero
174
+ // queuePerConsumer = 10 / 1 = 10 (not 10 / 0)
175
+ // This is over-utilized (10 > 2.0), should scale up
176
+ const result = strategy.calculateTargetCount(0);
177
+ (0, vitest_1.expect)(result).toBeGreaterThan(0);
178
+ (0, vitest_1.expect)(result).toBeLessThanOrEqual(baseOptions.maxConsumerCount);
179
+ });
180
+ (0, vitest_1.it)("should handle zero queue with zero consumers", () => {
181
+ const metricsProcessor = createMetricsProcessor(0);
182
+ const strategy = new scalingStrategies_js_1.AggressiveScalingStrategy({ ...baseOptions, metricsProcessor });
183
+ // queuePerConsumer = 0 / 1 = 0
184
+ // This is under-utilized (0 < 0.5), should scale down
185
+ // But already at 0, so should return minConsumerCount
186
+ const result = strategy.calculateTargetCount(0);
187
+ (0, vitest_1.expect)(result).toBe(baseOptions.minConsumerCount);
188
+ });
189
+ });
190
+ (0, vitest_1.describe)("Integration scenarios", () => {
191
+ (0, vitest_1.it)("should handle gradual load increase with smooth strategy", () => {
192
+ const metricsProcessor = createMetricsProcessor(2);
193
+ const strategy = new scalingStrategies_js_1.SmoothScalingStrategy({ ...baseOptions, metricsProcessor });
194
+ let currentCount = 2;
195
+ // Gradual increase: 2 → 6 → 10 → 15
196
+ const loads = [2, 6, 10, 15];
197
+ const results = [];
198
+ for (const load of loads) {
199
+ // Update the processor with the new load
200
+ metricsProcessor.addSample(load);
201
+ metricsProcessor.processBatch();
202
+ const target = strategy.calculateTargetCount(currentCount);
203
+ results.push(target);
204
+ currentCount = target;
205
+ }
206
+ // Should show gradual increase due to damping
207
+ (0, vitest_1.expect)(results[0]).toBeLessThan(results[1]);
208
+ (0, vitest_1.expect)(results[1]).toBeLessThan(results[2]);
209
+ (0, vitest_1.expect)(results[2]).toBeLessThan(results[3]);
210
+ // But not immediate jumps due to damping
211
+ (0, vitest_1.expect)(results[1] - results[0]).toBeLessThan(loads[1] - loads[0]);
212
+ });
213
+ (0, vitest_1.it)("should handle load spike with aggressive strategy", () => {
214
+ let currentCount = 3;
215
+ // Sudden spike from normal to critical
216
+ const normalLoad = 3; // queuePerConsumer = 1.0 (optimal)
217
+ const spikeLoad = 15; // queuePerConsumer = 5.0 (critical)
218
+ const normalProcessor = createMetricsProcessor(normalLoad);
219
+ const normalStrategy = new scalingStrategies_js_1.AggressiveScalingStrategy({
220
+ ...baseOptions,
221
+ metricsProcessor: normalProcessor,
222
+ });
223
+ const normalTarget = normalStrategy.calculateTargetCount(currentCount);
224
+ (0, vitest_1.expect)(normalTarget).toBe(3); // Should maintain
225
+ const spikeProcessor = createMetricsProcessor(spikeLoad);
226
+ const spikeStrategy = new scalingStrategies_js_1.AggressiveScalingStrategy({
227
+ ...baseOptions,
228
+ metricsProcessor: spikeProcessor,
229
+ });
230
+ const spikeTarget = spikeStrategy.calculateTargetCount(currentCount);
231
+ (0, vitest_1.expect)(spikeTarget).toBeGreaterThan(3); // Should scale up aggressively
232
+ });
233
+ });
234
+ });
235
+ //# sourceMappingURL=scalingStrategies.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalingStrategies.test.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/scalingStrategies.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,iEAKgC;AAChC,yEAAmE;AAEnE,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,WAAW,GAA2B;QAC1C,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,EAAE;QACpB,WAAW,EAAE,GAAG;KACjB,CAAC;IAEF,SAAS,sBAAsB,CAAC,aAAqB;QACnD,MAAM,SAAS,GAAG,IAAI,gDAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,sDAAsD;QACtD,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACnC,SAAS,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,MAAM,QAAQ,GAAG,IAAI,0CAAmB,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,IAAA,eAAM,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjD,IAAA,eAAM,EAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,yBAAyB;YACzB,IAAA,eAAM,EAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;YACrE,IAAA,eAAM,EAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB;QACrE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,mCAAmC;YACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB;YAC3E,MAAM,QAAQ,GAAG,IAAI,4CAAqB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAEjF,6DAA6D;YAC7D,6CAA6C;YAC7C,wDAAwD;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB;YAC3E,MAAM,QAAQ,GAAG,IAAI,4CAAqB,CAAC;gBACzC,GAAG,WAAW;gBACd,gBAAgB;gBAChB,aAAa,EAAE,GAAG;aACnB,CAAC,CAAC,CAAC,cAAc;YAElB,6DAA6D;YAC7D,6CAA6C;YAC7C,0DAA0D;YAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,4CAAqB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAEjF,+CAA+C;YAC/C,oCAAoC;YACpC,6CAA6C;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,IAAA,eAAM,EACJ,GAAG,EAAE,CACH,IAAI,4CAAqB,CAAC;gBACxB,GAAG,WAAW;gBACd,gBAAgB;gBAChB,aAAa,EAAE,CAAC,GAAG;aACpB,CAAC,CACL,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;YAEnD,IAAA,eAAM,EACJ,GAAG,EAAE,CACH,IAAI,4CAAqB,CAAC;gBACxB,GAAG,WAAW;gBACd,gBAAgB;gBAChB,aAAa,EAAE,GAAG;aACnB,CAAC,CACL,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;YAEnD,IAAA,eAAM,EACJ,GAAG,EAAE,CACH,IAAI,4CAAqB,CAAC;gBACxB,GAAG,WAAW;gBACd,gBAAgB;gBAChB,aAAa,EAAE,CAAC;aACjB,CAAC,CACL,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEhB,IAAA,eAAM,EACJ,GAAG,EAAE,CACH,IAAI,4CAAqB,CAAC;gBACxB,GAAG,WAAW;gBACd,gBAAgB;gBAChB,aAAa,EAAE,CAAC;aACjB,CAAC,CACL,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,4CAAqB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAEjF,gDAAgD;YAChD,sCAAsC;YACtC,wCAAwC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,qEAAqE;YACrE,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,+BAA+B;YAC/B,gCAAgC;YAChC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,oEAAoE;YACpE,gCAAgC;YAChC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,4DAA4D;YAC5D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,mDAAmD;YACnD,iEAAiE;YACjE,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;YACtE,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC;gBAC7C,GAAG,WAAW;gBACd,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB;aACjB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB;YACtE,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC;gBAC7C,GAAG,WAAW;gBACd,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB;aACjB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACrF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,OAAO,CAAC;gBACzB,kBAAkB,EAAE,GAAG;gBACvB,gBAAgB,EAAE,GAAG;gBACrB,iBAAiB,EAAE,GAAG;gBACtB,aAAa,EAAE,GAAG;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,6DAA6D;YAC7D,8CAA8C;YAC9C,oDAAoD;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAClC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,gDAAyB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAErF,+BAA+B;YAC/B,sDAAsD;YACtD,sDAAsD;YACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,IAAA,WAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,4CAAqB,CAAC,EAAE,GAAG,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACjF,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,oCAAoC;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,yCAAyC;gBACzC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjC,gBAAgB,CAAC,YAAY,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,YAAY,GAAG,MAAM,CAAC;YACxB,CAAC;YAED,8CAA8C;YAC9C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YAC7C,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YAE7C,yCAAyC;YACzC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,uCAAuC;YACvC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,mCAAmC;YACzD,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,oCAAoC;YAE1D,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAC3D,MAAM,cAAc,GAAG,IAAI,gDAAyB,CAAC;gBACnD,GAAG,WAAW;gBACd,gBAAgB,EAAE,eAAe;aAClC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACvE,IAAA,eAAM,EAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;YAEhD,MAAM,cAAc,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,aAAa,GAAG,IAAI,gDAAyB,CAAC;gBAClD,GAAG,WAAW;gBACd,gBAAgB,EAAE,cAAc;aACjC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,aAAa,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACrE,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { SupervisorHttpClient } from "./http.js";
2
2
  import { PreDequeueFn, PreSkipFn, SupervisorClientCommonOptions } from "./types.js";
3
+ import { ScalingOptions } from "./consumerPool.js";
3
4
  import { WorkerEvents } from "./events.js";
4
5
  import EventEmitter from "events";
6
+ import type { Registry } from "prom-client";
5
7
  type SupervisorSessionOptions = SupervisorClientCommonOptions & {
6
8
  queueConsumerEnabled?: boolean;
7
9
  runNotificationsEnabled?: boolean;
@@ -11,8 +13,9 @@ type SupervisorSessionOptions = SupervisorClientCommonOptions & {
11
13
  preDequeue?: PreDequeueFn;
12
14
  preSkip?: PreSkipFn;
13
15
  maxRunCount?: number;
14
- maxConsumerCount?: number;
15
16
  sendRunDebugLogs?: boolean;
17
+ scaling: ScalingOptions;
18
+ metricsRegistry?: Registry;
16
19
  };
17
20
  export declare class SupervisorSession extends EventEmitter<WorkerEvents> {
18
21
  private opts;
@@ -21,7 +24,7 @@ export declare class SupervisorSession extends EventEmitter<WorkerEvents> {
21
24
  private readonly runNotificationsEnabled;
22
25
  private runNotificationsSocket?;
23
26
  private readonly queueConsumerEnabled;
24
- private readonly queueConsumers;
27
+ private readonly consumerPool;
25
28
  private readonly heartbeat;
26
29
  constructor(opts: SupervisorSessionOptions);
27
30
  private onDequeue;
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SupervisorSession = void 0;
7
7
  const http_js_1 = require("./http.js");
8
- const queueConsumer_js_1 = require("./queueConsumer.js");
8
+ const consumerPool_js_1 = require("./consumerPool.js");
9
9
  const events_1 = __importDefault(require("events"));
10
10
  const version_js_1 = require("../../../version.js");
11
11
  const socket_io_client_1 = require("socket.io-client");
@@ -19,7 +19,7 @@ class SupervisorSession extends events_1.default {
19
19
  runNotificationsEnabled;
20
20
  runNotificationsSocket;
21
21
  queueConsumerEnabled;
22
- queueConsumers;
22
+ consumerPool;
23
23
  heartbeat;
24
24
  constructor(opts) {
25
25
  super();
@@ -27,8 +27,8 @@ class SupervisorSession extends events_1.default {
27
27
  this.runNotificationsEnabled = opts.runNotificationsEnabled ?? true;
28
28
  this.queueConsumerEnabled = opts.queueConsumerEnabled ?? true;
29
29
  this.httpClient = new http_js_1.SupervisorHttpClient(opts);
30
- this.queueConsumers = Array.from({ length: opts.maxConsumerCount ?? 1 }, () => {
31
- return new queueConsumer_js_1.RunQueueConsumer({
30
+ this.consumerPool = new consumerPool_js_1.RunQueueConsumerPool({
31
+ consumer: {
32
32
  client: this.httpClient,
33
33
  preDequeue: opts.preDequeue,
34
34
  preSkip: opts.preSkip,
@@ -36,7 +36,9 @@ class SupervisorSession extends events_1.default {
36
36
  intervalMs: opts.dequeueIntervalMs,
37
37
  idleIntervalMs: opts.dequeueIdleIntervalMs,
38
38
  maxRunCount: opts.maxRunCount,
39
- });
39
+ },
40
+ scaling: opts.scaling,
41
+ metricsRegistry: opts.metricsRegistry,
40
42
  });
41
43
  this.heartbeat = new interval_js_1.IntervalService({
42
44
  onInterval: async () => {
@@ -132,8 +134,12 @@ class SupervisorSession extends events_1.default {
132
134
  name: workerGroup.name,
133
135
  });
134
136
  if (this.queueConsumerEnabled) {
135
- this.logger.log("Queue consumer enabled");
136
- await Promise.allSettled(this.queueConsumers.map(async (q) => q.start()));
137
+ this.logger.log("Queue consumer enabled", {
138
+ scalingStrategy: this.consumerPool["scalingStrategy"],
139
+ minConsumers: this.consumerPool["minConsumerCount"],
140
+ maxConsumers: this.consumerPool["maxConsumerCount"],
141
+ });
142
+ await this.consumerPool.start();
137
143
  this.heartbeat.start();
138
144
  }
139
145
  else {
@@ -148,7 +154,7 @@ class SupervisorSession extends events_1.default {
148
154
  }
149
155
  }
150
156
  async stop() {
151
- await Promise.allSettled(this.queueConsumers.map(async (q) => q.stop()));
157
+ await this.consumerPool.stop();
152
158
  this.heartbeat.stop();
153
159
  this.runNotificationsSocket?.disconnect();
154
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/v3/runEngineWorker/supervisor/session.ts"],"names":[],"mappings":"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"}
@@ -10,30 +10,46 @@ export declare class WorkloadHttpClient {
10
10
  updateApiUrl(apiUrl: string): void;
11
11
  updateRunnerId(runnerId: string): void;
12
12
  defaultHeaders(): Record<string, string>;
13
- heartbeatRun(runId: string, snapshotId: string, body?: WorkloadHeartbeatRequestBody): Promise<import("../../zodfetch.js").ApiResult<{
14
- ok: true;
15
- }>>;
13
+ private isConnectionError;
14
+ private withConnectionErrorDetection;
15
+ heartbeatRun(runId: string, snapshotId: string, body?: WorkloadHeartbeatRequestBody): Promise<{
16
+ success: false;
17
+ error: string;
18
+ isConnectionError?: boolean;
19
+ } | {
20
+ success: true;
21
+ data: {
22
+ ok: true;
23
+ };
24
+ }>;
16
25
  suspendRun(runId: string, snapshotId: string): Promise<import("../../zodfetch.js").ApiResult<{
17
26
  ok: true;
18
27
  } | {
19
28
  error: string;
20
29
  ok: false;
21
30
  }>>;
22
- continueRunExecution(runId: string, snapshotId: string): Promise<import("../../zodfetch.js").ApiResult<{
23
- run: {
24
- status: import("../../index.js").TaskRunStatus;
25
- id: string;
26
- friendlyId: string;
27
- attemptNumber?: number | null | undefined;
28
- };
29
- snapshot: {
30
- id: string;
31
- createdAt: Date;
32
- description: string;
33
- friendlyId: string;
34
- executionStatus: import("../../index.js").TaskRunExecutionStatus;
31
+ continueRunExecution(runId: string, snapshotId: string): Promise<{
32
+ success: false;
33
+ error: string;
34
+ isConnectionError?: boolean;
35
+ } | {
36
+ success: true;
37
+ data: {
38
+ run: {
39
+ status: import("../../index.js").TaskRunStatus;
40
+ id: string;
41
+ friendlyId: string;
42
+ attemptNumber?: number | null | undefined;
43
+ };
44
+ snapshot: {
45
+ id: string;
46
+ createdAt: Date;
47
+ description: string;
48
+ friendlyId: string;
49
+ executionStatus: import("../../index.js").TaskRunExecutionStatus;
50
+ };
35
51
  };
36
- }>>;
52
+ }>;
37
53
  startRunAttempt(runId: string, snapshotId: string, body: WorkloadRunAttemptStartRequestBody): Promise<import("../../zodfetch.js").ApiResult<{
38
54
  run: {
39
55
  status: import("../../index.js").TaskRunStatus;
@@ -175,114 +191,67 @@ export declare class WorkloadHttpClient {
175
191
  };
176
192
  };
177
193
  }>>;
178
- getRunExecutionData(runId: string): Promise<import("../../zodfetch.js").ApiResult<{
179
- execution: {
180
- version: "1";
181
- run: {
182
- status: import("../../index.js").TaskRunStatus;
183
- id: string;
184
- friendlyId: string;
185
- attemptNumber?: number | null | undefined;
186
- };
187
- snapshot: {
188
- id: string;
189
- createdAt: Date;
190
- description: string;
191
- friendlyId: string;
192
- executionStatus: import("../../index.js").TaskRunExecutionStatus;
193
- };
194
- completedWaitpoints: {
195
- type: import("../../index.js").WaitpointType;
196
- id: string;
197
- friendlyId: string;
198
- completedAt: Date;
199
- outputIsError: boolean;
200
- idempotencyKey?: string | undefined;
201
- output?: string | undefined;
202
- outputType?: string | undefined;
203
- index?: number | undefined;
204
- completedByTaskRun?: {
194
+ getSnapshotsSince(runId: string, snapshotId: string): Promise<{
195
+ success: false;
196
+ error: string;
197
+ isConnectionError?: boolean;
198
+ } | {
199
+ success: true;
200
+ data: {
201
+ snapshots: {
202
+ version: "1";
203
+ run: {
204
+ status: import("../../index.js").TaskRunStatus;
205
205
  id: string;
206
206
  friendlyId: string;
207
- batch?: {
208
- id: string;
209
- friendlyId: string;
210
- } | undefined;
211
- } | undefined;
212
- completedAfter?: Date | undefined;
213
- completedByBatch?: {
207
+ attemptNumber?: number | null | undefined;
208
+ };
209
+ snapshot: {
214
210
  id: string;
211
+ createdAt: Date;
212
+ description: string;
215
213
  friendlyId: string;
216
- } | undefined;
217
- }[];
218
- batch?: {
219
- id: string;
220
- friendlyId: string;
221
- } | undefined;
222
- checkpoint?: {
223
- type: import("../../index.js").CheckpointTypeEnum;
224
- id: string;
225
- friendlyId: string;
226
- location: string;
227
- imageRef?: string | null | undefined;
228
- reason?: string | null | undefined;
229
- } | undefined;
230
- };
231
- }>>;
232
- getSnapshotsSince(runId: string, snapshotId: string): Promise<import("../../zodfetch.js").ApiResult<{
233
- snapshots: {
234
- version: "1";
235
- run: {
236
- status: import("../../index.js").TaskRunStatus;
237
- id: string;
238
- friendlyId: string;
239
- attemptNumber?: number | null | undefined;
240
- };
241
- snapshot: {
242
- id: string;
243
- createdAt: Date;
244
- description: string;
245
- friendlyId: string;
246
- executionStatus: import("../../index.js").TaskRunExecutionStatus;
247
- };
248
- completedWaitpoints: {
249
- type: import("../../index.js").WaitpointType;
250
- id: string;
251
- friendlyId: string;
252
- completedAt: Date;
253
- outputIsError: boolean;
254
- idempotencyKey?: string | undefined;
255
- output?: string | undefined;
256
- outputType?: string | undefined;
257
- index?: number | undefined;
258
- completedByTaskRun?: {
214
+ executionStatus: import("../../index.js").TaskRunExecutionStatus;
215
+ };
216
+ completedWaitpoints: {
217
+ type: import("../../index.js").WaitpointType;
259
218
  id: string;
260
219
  friendlyId: string;
261
- batch?: {
220
+ completedAt: Date;
221
+ outputIsError: boolean;
222
+ idempotencyKey?: string | undefined;
223
+ output?: string | undefined;
224
+ outputType?: string | undefined;
225
+ index?: number | undefined;
226
+ completedByTaskRun?: {
227
+ id: string;
228
+ friendlyId: string;
229
+ batch?: {
230
+ id: string;
231
+ friendlyId: string;
232
+ } | undefined;
233
+ } | undefined;
234
+ completedAfter?: Date | undefined;
235
+ completedByBatch?: {
262
236
  id: string;
263
237
  friendlyId: string;
264
238
  } | undefined;
239
+ }[];
240
+ batch?: {
241
+ id: string;
242
+ friendlyId: string;
265
243
  } | undefined;
266
- completedAfter?: Date | undefined;
267
- completedByBatch?: {
244
+ checkpoint?: {
245
+ type: import("../../index.js").CheckpointTypeEnum;
268
246
  id: string;
269
247
  friendlyId: string;
248
+ location: string;
249
+ imageRef?: string | null | undefined;
250
+ reason?: string | null | undefined;
270
251
  } | undefined;
271
252
  }[];
272
- batch?: {
273
- id: string;
274
- friendlyId: string;
275
- } | undefined;
276
- checkpoint?: {
277
- type: import("../../index.js").CheckpointTypeEnum;
278
- id: string;
279
- friendlyId: string;
280
- location: string;
281
- imageRef?: string | null | undefined;
282
- reason?: string | null | undefined;
283
- } | undefined;
284
- }[];
285
- }>>;
253
+ };
254
+ }>;
286
255
  sendDebugLog(runId: string, body: WorkloadDebugLogRequestBody): Promise<void>;
287
256
  /** @deprecated Not currently used */
288
257
  dequeue(): Promise<import("../../zodfetch.js").ApiResult<{