@zintrust/workers 0.1.27

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 (178) hide show
  1. package/README.md +861 -0
  2. package/dist/AnomalyDetection.d.ts +102 -0
  3. package/dist/AnomalyDetection.js +321 -0
  4. package/dist/AutoScaler.d.ts +127 -0
  5. package/dist/AutoScaler.js +425 -0
  6. package/dist/BroadcastWorker.d.ts +21 -0
  7. package/dist/BroadcastWorker.js +24 -0
  8. package/dist/CanaryController.d.ts +103 -0
  9. package/dist/CanaryController.js +380 -0
  10. package/dist/ChaosEngineering.d.ts +79 -0
  11. package/dist/ChaosEngineering.js +216 -0
  12. package/dist/CircuitBreaker.d.ts +106 -0
  13. package/dist/CircuitBreaker.js +374 -0
  14. package/dist/ClusterLock.d.ts +90 -0
  15. package/dist/ClusterLock.js +385 -0
  16. package/dist/ComplianceManager.d.ts +177 -0
  17. package/dist/ComplianceManager.js +556 -0
  18. package/dist/DatacenterOrchestrator.d.ts +133 -0
  19. package/dist/DatacenterOrchestrator.js +404 -0
  20. package/dist/DeadLetterQueue.d.ts +122 -0
  21. package/dist/DeadLetterQueue.js +539 -0
  22. package/dist/HealthMonitor.d.ts +42 -0
  23. package/dist/HealthMonitor.js +301 -0
  24. package/dist/MultiQueueWorker.d.ts +89 -0
  25. package/dist/MultiQueueWorker.js +277 -0
  26. package/dist/NotificationWorker.d.ts +21 -0
  27. package/dist/NotificationWorker.js +23 -0
  28. package/dist/Observability.d.ts +153 -0
  29. package/dist/Observability.js +530 -0
  30. package/dist/PluginManager.d.ts +123 -0
  31. package/dist/PluginManager.js +392 -0
  32. package/dist/PriorityQueue.d.ts +117 -0
  33. package/dist/PriorityQueue.js +244 -0
  34. package/dist/ResourceMonitor.d.ts +164 -0
  35. package/dist/ResourceMonitor.js +605 -0
  36. package/dist/SLAMonitor.d.ts +110 -0
  37. package/dist/SLAMonitor.js +274 -0
  38. package/dist/WorkerFactory.d.ts +193 -0
  39. package/dist/WorkerFactory.js +1507 -0
  40. package/dist/WorkerInit.d.ts +85 -0
  41. package/dist/WorkerInit.js +223 -0
  42. package/dist/WorkerMetrics.d.ts +114 -0
  43. package/dist/WorkerMetrics.js +509 -0
  44. package/dist/WorkerRegistry.d.ts +145 -0
  45. package/dist/WorkerRegistry.js +319 -0
  46. package/dist/WorkerShutdown.d.ts +61 -0
  47. package/dist/WorkerShutdown.js +159 -0
  48. package/dist/WorkerVersioning.d.ts +107 -0
  49. package/dist/WorkerVersioning.js +300 -0
  50. package/dist/build-manifest.json +462 -0
  51. package/dist/config/workerConfig.d.ts +3 -0
  52. package/dist/config/workerConfig.js +19 -0
  53. package/dist/createQueueWorker.d.ts +23 -0
  54. package/dist/createQueueWorker.js +113 -0
  55. package/dist/dashboard/index.d.ts +1 -0
  56. package/dist/dashboard/index.js +1 -0
  57. package/dist/dashboard/types.d.ts +117 -0
  58. package/dist/dashboard/types.js +1 -0
  59. package/dist/dashboard/workers-api.d.ts +4 -0
  60. package/dist/dashboard/workers-api.js +638 -0
  61. package/dist/dashboard/workers-dashboard-ui.d.ts +3 -0
  62. package/dist/dashboard/workers-dashboard-ui.js +1026 -0
  63. package/dist/dashboard/workers-dashboard.d.ts +4 -0
  64. package/dist/dashboard/workers-dashboard.js +904 -0
  65. package/dist/helper/index.d.ts +5 -0
  66. package/dist/helper/index.js +10 -0
  67. package/dist/http/WorkerApiController.d.ts +38 -0
  68. package/dist/http/WorkerApiController.js +312 -0
  69. package/dist/http/WorkerController.d.ts +374 -0
  70. package/dist/http/WorkerController.js +1351 -0
  71. package/dist/http/middleware/CustomValidation.d.ts +92 -0
  72. package/dist/http/middleware/CustomValidation.js +270 -0
  73. package/dist/http/middleware/DatacenterValidator.d.ts +3 -0
  74. package/dist/http/middleware/DatacenterValidator.js +94 -0
  75. package/dist/http/middleware/EditWorkerValidation.d.ts +7 -0
  76. package/dist/http/middleware/EditWorkerValidation.js +55 -0
  77. package/dist/http/middleware/FeaturesValidator.d.ts +3 -0
  78. package/dist/http/middleware/FeaturesValidator.js +60 -0
  79. package/dist/http/middleware/InfrastructureValidator.d.ts +31 -0
  80. package/dist/http/middleware/InfrastructureValidator.js +226 -0
  81. package/dist/http/middleware/OptionsValidator.d.ts +3 -0
  82. package/dist/http/middleware/OptionsValidator.js +112 -0
  83. package/dist/http/middleware/PayloadSanitizer.d.ts +7 -0
  84. package/dist/http/middleware/PayloadSanitizer.js +42 -0
  85. package/dist/http/middleware/ProcessorPathSanitizer.d.ts +3 -0
  86. package/dist/http/middleware/ProcessorPathSanitizer.js +74 -0
  87. package/dist/http/middleware/QueueNameSanitizer.d.ts +3 -0
  88. package/dist/http/middleware/QueueNameSanitizer.js +45 -0
  89. package/dist/http/middleware/ValidateDriver.d.ts +7 -0
  90. package/dist/http/middleware/ValidateDriver.js +20 -0
  91. package/dist/http/middleware/VersionSanitizer.d.ts +3 -0
  92. package/dist/http/middleware/VersionSanitizer.js +25 -0
  93. package/dist/http/middleware/WorkerNameSanitizer.d.ts +3 -0
  94. package/dist/http/middleware/WorkerNameSanitizer.js +46 -0
  95. package/dist/http/middleware/WorkerValidationChain.d.ts +27 -0
  96. package/dist/http/middleware/WorkerValidationChain.js +185 -0
  97. package/dist/index.d.ts +46 -0
  98. package/dist/index.js +48 -0
  99. package/dist/routes/workers.d.ts +12 -0
  100. package/dist/routes/workers.js +81 -0
  101. package/dist/storage/WorkerStore.d.ts +45 -0
  102. package/dist/storage/WorkerStore.js +195 -0
  103. package/dist/type.d.ts +76 -0
  104. package/dist/type.js +1 -0
  105. package/dist/ui/router/ui.d.ts +3 -0
  106. package/dist/ui/router/ui.js +83 -0
  107. package/dist/ui/types/worker-ui.d.ts +229 -0
  108. package/dist/ui/types/worker-ui.js +5 -0
  109. package/package.json +53 -0
  110. package/src/AnomalyDetection.ts +434 -0
  111. package/src/AutoScaler.ts +654 -0
  112. package/src/BroadcastWorker.ts +34 -0
  113. package/src/CanaryController.ts +531 -0
  114. package/src/ChaosEngineering.ts +301 -0
  115. package/src/CircuitBreaker.ts +495 -0
  116. package/src/ClusterLock.ts +499 -0
  117. package/src/ComplianceManager.ts +815 -0
  118. package/src/DatacenterOrchestrator.ts +561 -0
  119. package/src/DeadLetterQueue.ts +733 -0
  120. package/src/HealthMonitor.ts +390 -0
  121. package/src/MultiQueueWorker.ts +431 -0
  122. package/src/NotificationWorker.ts +33 -0
  123. package/src/Observability.ts +696 -0
  124. package/src/PluginManager.ts +551 -0
  125. package/src/PriorityQueue.ts +351 -0
  126. package/src/ResourceMonitor.ts +769 -0
  127. package/src/SLAMonitor.ts +408 -0
  128. package/src/WorkerFactory.ts +2108 -0
  129. package/src/WorkerInit.ts +313 -0
  130. package/src/WorkerMetrics.ts +709 -0
  131. package/src/WorkerRegistry.ts +443 -0
  132. package/src/WorkerShutdown.ts +210 -0
  133. package/src/WorkerVersioning.ts +422 -0
  134. package/src/config/workerConfig.ts +25 -0
  135. package/src/createQueueWorker.ts +174 -0
  136. package/src/dashboard/index.ts +6 -0
  137. package/src/dashboard/types.ts +141 -0
  138. package/src/dashboard/workers-api.ts +785 -0
  139. package/src/dashboard/zintrust.svg +30 -0
  140. package/src/helper/index.ts +11 -0
  141. package/src/http/WorkerApiController.ts +369 -0
  142. package/src/http/WorkerController.ts +1512 -0
  143. package/src/http/middleware/CustomValidation.ts +360 -0
  144. package/src/http/middleware/DatacenterValidator.ts +124 -0
  145. package/src/http/middleware/EditWorkerValidation.ts +74 -0
  146. package/src/http/middleware/FeaturesValidator.ts +82 -0
  147. package/src/http/middleware/InfrastructureValidator.ts +295 -0
  148. package/src/http/middleware/OptionsValidator.ts +144 -0
  149. package/src/http/middleware/PayloadSanitizer.ts +52 -0
  150. package/src/http/middleware/ProcessorPathSanitizer.ts +86 -0
  151. package/src/http/middleware/QueueNameSanitizer.ts +55 -0
  152. package/src/http/middleware/ValidateDriver.ts +29 -0
  153. package/src/http/middleware/VersionSanitizer.ts +30 -0
  154. package/src/http/middleware/WorkerNameSanitizer.ts +56 -0
  155. package/src/http/middleware/WorkerValidationChain.ts +230 -0
  156. package/src/index.ts +98 -0
  157. package/src/routes/workers.ts +154 -0
  158. package/src/storage/WorkerStore.ts +240 -0
  159. package/src/type.ts +89 -0
  160. package/src/types/queue-monitor.d.ts +38 -0
  161. package/src/types/queue-redis.d.ts +38 -0
  162. package/src/ui/README.md +13 -0
  163. package/src/ui/components/JsonEditor.js +670 -0
  164. package/src/ui/components/JsonViewer.js +387 -0
  165. package/src/ui/components/WorkerCard.js +178 -0
  166. package/src/ui/components/WorkerExpandPanel.js +257 -0
  167. package/src/ui/components/fetcher.js +42 -0
  168. package/src/ui/components/sla-scorecard.js +32 -0
  169. package/src/ui/components/styles.css +30 -0
  170. package/src/ui/components/table-expander.js +34 -0
  171. package/src/ui/integration/worker-ui-integration.js +565 -0
  172. package/src/ui/router/ui.ts +99 -0
  173. package/src/ui/services/workerApi.js +240 -0
  174. package/src/ui/types/worker-ui.ts +283 -0
  175. package/src/ui/utils/jsonValidator.js +444 -0
  176. package/src/ui/workers/index.html +202 -0
  177. package/src/ui/workers/main.js +1781 -0
  178. package/src/ui/workers/styles.css +1350 -0
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Priority Queue Manager
3
+ * BullMQ priority levels with datacenter affinity
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { ErrorFactory, Logger } from '@zintrust/core';
7
+ import { BullMQRedisQueue } from '@zintrust/queue-redis';
8
+ // Priority mappings
9
+ const PRIORITY_VALUES = {
10
+ critical: 10,
11
+ high: 5,
12
+ normal: 1,
13
+ low: 0,
14
+ };
15
+ /**
16
+ * Helper: Get or create queue via shared driver
17
+ */
18
+ const getQueue = (queueName) => {
19
+ return BullMQRedisQueue.getQueue(queueName);
20
+ };
21
+ /**
22
+ * Helper: Build job options with priority
23
+ */
24
+ const buildJobOptions = (options) => {
25
+ const jobOptions = {
26
+ priority: PRIORITY_VALUES[options.priority],
27
+ };
28
+ if (options.delay !== undefined) {
29
+ jobOptions['delay'] = options.delay;
30
+ }
31
+ if (options.attempts !== undefined) {
32
+ jobOptions['attempts'] = options.attempts;
33
+ }
34
+ if (options.backoff) {
35
+ jobOptions['backoff'] = options.backoff;
36
+ }
37
+ if (options.removeOnComplete !== undefined) {
38
+ jobOptions['removeOnComplete'] = options.removeOnComplete;
39
+ }
40
+ if (options.removeOnFail !== undefined) {
41
+ jobOptions['removeOnFail'] = options.removeOnFail;
42
+ }
43
+ // Store datacenter affinity in job data (workers can read this)
44
+ if (options.datacenter) {
45
+ jobOptions['datacenter'] = options.datacenter;
46
+ }
47
+ return jobOptions;
48
+ };
49
+ /**
50
+ * Helper: Match datacenter affinity
51
+ */
52
+ const matchesDatacenterAffinity = (jobDatacenter, workerRegion) => {
53
+ if (!jobDatacenter) {
54
+ return true; // No affinity, can be processed anywhere
55
+ }
56
+ // Check preferred datacenters first
57
+ if (jobDatacenter.preferred.includes(workerRegion)) {
58
+ return true;
59
+ }
60
+ // Check fallback datacenters
61
+ if (jobDatacenter.fallback.includes(workerRegion)) {
62
+ return true;
63
+ }
64
+ return false;
65
+ };
66
+ /**
67
+ * Priority Queue Manager - Sealed namespace
68
+ */
69
+ export const PriorityQueue = Object.freeze({
70
+ /**
71
+ * Initialize with Redis configuration
72
+ */
73
+ initialize(_config) {
74
+ Logger.debug('PriorityQueue.initialize() called - auto-initialized via BullMQRedisQueue');
75
+ },
76
+ /**
77
+ * Add a job to the queue with priority
78
+ */
79
+ async addJob(queueName, jobName, data, options) {
80
+ const queue = getQueue(queueName);
81
+ const jobOptions = buildJobOptions(options);
82
+ try {
83
+ const job = await queue.add(jobName, data, jobOptions);
84
+ Logger.debug(`Added job "${jobName}" to queue "${queueName}"`, {
85
+ jobId: job.id,
86
+ priority: options.priority,
87
+ datacenter: options.datacenter,
88
+ });
89
+ if (job.id === undefined) {
90
+ throw ErrorFactory.createWorkerError(`Failed to add job "${jobName}" to queue "${queueName}": missing job id`);
91
+ }
92
+ return job.id;
93
+ }
94
+ catch (error) {
95
+ Logger.error(`Failed to add job "${jobName}" to queue "${queueName}"`, error);
96
+ throw error;
97
+ }
98
+ },
99
+ /**
100
+ * Add multiple jobs in bulk
101
+ */
102
+ async addBulk(queueName, jobs) {
103
+ const queue = getQueue(queueName);
104
+ try {
105
+ const bulkJobs = jobs.map((job) => ({
106
+ name: job.name,
107
+ data: job.data,
108
+ opts: buildJobOptions(job.options),
109
+ }));
110
+ const addedJobs = await queue.addBulk(bulkJobs);
111
+ Logger.info(`Added ${addedJobs.length} jobs to queue "${queueName}"`);
112
+ return addedJobs.map((job) => {
113
+ if (job.id === undefined) {
114
+ throw ErrorFactory.createWorkerError(`Failed to add job to queue "${queueName}": missing job id`);
115
+ }
116
+ return job.id;
117
+ });
118
+ }
119
+ catch (error) {
120
+ Logger.error(`Failed to add bulk jobs to queue "${queueName}"`, error);
121
+ throw error;
122
+ }
123
+ },
124
+ /**
125
+ * Get job by ID
126
+ */
127
+ async getJob(queueName, jobId) {
128
+ const queue = getQueue(queueName);
129
+ return queue.getJob(jobId);
130
+ },
131
+ /**
132
+ * Remove a job
133
+ */
134
+ async removeJob(queueName, jobId) {
135
+ const queue = getQueue(queueName);
136
+ const job = await queue.getJob(jobId);
137
+ if (job) {
138
+ await job.remove();
139
+ Logger.debug(`Removed job ${jobId} from queue "${queueName}"`);
140
+ }
141
+ },
142
+ /**
143
+ * Pause a queue
144
+ */
145
+ async pause(queueName) {
146
+ const queue = getQueue(queueName);
147
+ await queue.pause();
148
+ Logger.info(`Paused queue "${queueName}"`);
149
+ },
150
+ /**
151
+ * Resume a queue
152
+ */
153
+ async resume(queueName) {
154
+ const queue = getQueue(queueName);
155
+ await queue.resume();
156
+ Logger.info(`Resumed queue "${queueName}"`);
157
+ },
158
+ /**
159
+ * Get queue information
160
+ */
161
+ async getQueueInfo(queueName) {
162
+ const queue = getQueue(queueName);
163
+ const isPaused = await queue.isPaused();
164
+ const jobCounts = await queue.getJobCounts();
165
+ return {
166
+ name: queueName,
167
+ isPaused,
168
+ jobCounts: {
169
+ active: jobCounts['active'] || 0,
170
+ waiting: jobCounts['waiting'] || 0,
171
+ completed: jobCounts['completed'] || 0,
172
+ failed: jobCounts['failed'] || 0,
173
+ delayed: jobCounts['delayed'] || 0,
174
+ paused: jobCounts['paused'] || 0,
175
+ },
176
+ };
177
+ },
178
+ /**
179
+ * Get all queue names
180
+ */
181
+ getQueueNames() {
182
+ return BullMQRedisQueue.getQueueNames();
183
+ },
184
+ /**
185
+ * Drain queue (remove all jobs)
186
+ */
187
+ async drain(queueName, delayed = false) {
188
+ const queue = getQueue(queueName);
189
+ await queue.drain(delayed);
190
+ Logger.info(`Drained queue "${queueName}"`, { delayed });
191
+ },
192
+ /**
193
+ * Clean old jobs from queue
194
+ */
195
+ async clean(queueName, grace, limit, type = 'completed') {
196
+ const queue = getQueue(queueName);
197
+ const jobs = await queue.clean(grace, limit, type);
198
+ Logger.info(`Cleaned ${jobs.length} ${type} jobs from queue "${queueName}"`);
199
+ return jobs;
200
+ },
201
+ /**
202
+ * Obliterate queue (remove all data including queue itself)
203
+ */
204
+ async obliterate(queueName, force = false) {
205
+ const queue = getQueue(queueName);
206
+ await queue.obliterate({ force });
207
+ await BullMQRedisQueue.closeQueue(queueName);
208
+ Logger.warn(`Obliterated queue "${queueName}"`);
209
+ },
210
+ /**
211
+ * Get priority value for level
212
+ */
213
+ getPriorityValue(level) {
214
+ return PRIORITY_VALUES[level];
215
+ },
216
+ /**
217
+ * Check if job matches datacenter affinity
218
+ */
219
+ matchesDatacenter(jobDatacenter, workerRegion) {
220
+ return matchesDatacenterAffinity(jobDatacenter, workerRegion);
221
+ },
222
+ /**
223
+ * Get queue instance (internal use)
224
+ */
225
+ getQueueInstance(queueName) {
226
+ return getQueue(queueName);
227
+ },
228
+ /**
229
+ * Close a queue
230
+ */
231
+ async closeQueue(queueName) {
232
+ await BullMQRedisQueue.closeQueue(queueName);
233
+ Logger.info(`Closed queue "${queueName}"`);
234
+ },
235
+ /**
236
+ * Shutdown and close all queues
237
+ */
238
+ async shutdown() {
239
+ Logger.info('PriorityQueue shutting down via BullMQRedisQueue...');
240
+ await BullMQRedisQueue.shutdown();
241
+ Logger.info('PriorityQueue shutdown complete');
242
+ },
243
+ });
244
+ // Graceful shutdown handled by WorkerShutdown
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Resource Monitor
3
+ * Real-time resource tracking with cost calculation
4
+ * Sealed namespace for immutability
5
+ */
6
+ export type ResourceSnapshot = {
7
+ timestamp: Date;
8
+ cpu: {
9
+ usage: number;
10
+ loadAverage: number[];
11
+ cores: number;
12
+ };
13
+ memory: {
14
+ total: number;
15
+ used: number;
16
+ free: number;
17
+ usage: number;
18
+ };
19
+ disk: {
20
+ read: number;
21
+ write: number;
22
+ };
23
+ network: {
24
+ received: number;
25
+ transmitted: number;
26
+ };
27
+ process: {
28
+ pid: number;
29
+ uptime: number;
30
+ memoryUsage: NodeJS.MemoryUsage;
31
+ cpuUsage: NodeJS.CpuUsage;
32
+ };
33
+ };
34
+ export type WorkerResourceUsage = {
35
+ cpu: number;
36
+ memory: {
37
+ number: number;
38
+ percent: number;
39
+ used: number;
40
+ free: number;
41
+ };
42
+ cost: {
43
+ hourly: number;
44
+ daily: number;
45
+ };
46
+ workerName: string;
47
+ resourceSnapshot: ResourceSnapshot;
48
+ estimatedCost: {
49
+ perHour: number;
50
+ perDay: number;
51
+ perMonth: number;
52
+ };
53
+ efficiency: {
54
+ cpuEfficiency: number;
55
+ memoryEfficiency: number;
56
+ overallScore: number;
57
+ };
58
+ };
59
+ export type CostCalculationConfig = {
60
+ computeCostPerCoreHour: number;
61
+ memoryCostPerGBHour: number;
62
+ networkCostPerGB: number;
63
+ diskCostPerGB: number;
64
+ spotInstanceDiscount: number;
65
+ };
66
+ export type ResourceAlert = {
67
+ timestamp: Date;
68
+ workerName: string;
69
+ alertType: 'cpu-high' | 'memory-high' | 'disk-high' | 'cost-high';
70
+ severity: 'warning' | 'critical';
71
+ message: string;
72
+ currentValue: number;
73
+ threshold: number;
74
+ recommendation?: string;
75
+ };
76
+ export type ResourceTrend = {
77
+ workerName: string;
78
+ metric: 'cpu' | 'memory' | 'disk' | 'network' | 'cost';
79
+ period: 'hour' | 'day' | 'week';
80
+ trend: 'increasing' | 'decreasing' | 'stable';
81
+ changePercentage: number;
82
+ predictions: {
83
+ nextHour: number;
84
+ nextDay: number;
85
+ nextWeek: number;
86
+ };
87
+ };
88
+ /**
89
+ * Resource Monitor - Sealed namespace
90
+ */
91
+ export declare const ResourceMonitor: Readonly<{
92
+ /**
93
+ * Initialize resource monitor
94
+ */
95
+ initialize(config?: Partial<CostCalculationConfig>): void;
96
+ /**
97
+ * Check whether monitoring is running
98
+ */
99
+ isRunning(): boolean;
100
+ /**
101
+ * Start monitoring
102
+ */
103
+ start(intervalSeconds?: number): void;
104
+ /**
105
+ * Stop monitoring
106
+ */
107
+ stop(): void;
108
+ /**
109
+ * Get current resource usage
110
+ */
111
+ getCurrentUsage(workerName: string, useSpotDiscount?: boolean): WorkerResourceUsage;
112
+ /**
113
+ * Get resource history
114
+ */
115
+ getHistory(workerName: string, limit?: number): ReadonlyArray<ResourceSnapshot>;
116
+ /**
117
+ * Get alerts
118
+ */
119
+ getAlerts(workerName: string, limit?: number): ReadonlyArray<ResourceAlert>;
120
+ /**
121
+ * Get trend analysis
122
+ */
123
+ getTrend(workerName: string, metric: ResourceTrend["metric"], period: ResourceTrend["period"]): ResourceTrend | null;
124
+ /**
125
+ * Get all trends
126
+ */
127
+ getAllTrends(workerName: string, period: ResourceTrend["period"]): Record<ResourceTrend["metric"], ResourceTrend | null>;
128
+ /**
129
+ * Update cost configuration
130
+ */
131
+ updateCostConfig(config: Partial<CostCalculationConfig>): void;
132
+ /**
133
+ * Get cost configuration
134
+ */
135
+ getCostConfig(): CostCalculationConfig;
136
+ /**
137
+ * Calculate projected cost
138
+ */
139
+ calculateProjectedCost(cpuUsagePercent: number, memoryGB: number, hoursPerDay: number, useSpotDiscount?: boolean): {
140
+ daily: number;
141
+ monthly: number;
142
+ yearly: number;
143
+ };
144
+ /**
145
+ * Get system information
146
+ */
147
+ getSystemInfo(): {
148
+ platform: string;
149
+ arch: string;
150
+ hostname: string;
151
+ cpus: number;
152
+ totalMemory: number;
153
+ freeMemory: number;
154
+ uptime: number;
155
+ };
156
+ /**
157
+ * Clear history for a worker
158
+ */
159
+ clearHistory(workerName: string): void;
160
+ /**
161
+ * Shutdown
162
+ */
163
+ shutdown(): void;
164
+ }>;