@zintrust/workers 0.4.34 → 0.4.36

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.
@@ -131,7 +131,7 @@ export const ClusterLock = Object.freeze({
131
131
  Logger.warn('ClusterLock already initialized');
132
132
  return;
133
133
  }
134
- const client = createRedisConnection(config);
134
+ const client = createRedisConnection(config, 3, { subsystem: 'worker-cluster-lock' });
135
135
  redisClient = client;
136
136
  startHeartbeat(client);
137
137
  Logger.info('ClusterLock initialized', { instanceId: getInstanceId() });
@@ -191,7 +191,7 @@ export const ComplianceManager = Object.freeze({
191
191
  Logger.warn('ComplianceManager already initialized');
192
192
  return;
193
193
  }
194
- redisClient = createRedisConnection(redisConfig);
194
+ redisClient = createRedisConnection(redisConfig, 3, { subsystem: 'worker-compliance' });
195
195
  complianceConfig = {
196
196
  gdpr: { ...DEFAULT_CONFIG.gdpr, ...config?.gdpr },
197
197
  hipaa: { ...DEFAULT_CONFIG.hipaa, ...config?.hipaa },
@@ -161,7 +161,7 @@ export const DeadLetterQueue = Object.freeze({
161
161
  Logger.warn('DeadLetterQueue already initialized');
162
162
  return;
163
163
  }
164
- redisClient = createRedisConnection(config);
164
+ redisClient = createRedisConnection(config, 3, { subsystem: 'worker-dlq' });
165
165
  retentionPolicy = policy;
166
166
  // Start cleanup interval if auto-delete is enabled
167
167
  if (policy.enabled && policy.autoDeleteAfterDays !== undefined) {
@@ -1522,7 +1522,7 @@ const resolveWorkerStore = async (config) => {
1522
1522
  const redisConfig = resolveRedisConfigWithFallback(persistence.redis, config.infrastructure?.redis, 'Worker persistence requires redis config (persistence.redis or infrastructure.redis)', 'infrastructure.persistence.redis');
1523
1523
  const key_prefix = persistence.keyPrefix ?? keyPrefix();
1524
1524
  logRedisPersistenceConfig(redisConfig, key_prefix, 'resolveWorkerStore');
1525
- const client = createRedisConnection(redisConfig);
1525
+ const client = createRedisConnection(redisConfig, 3, { subsystem: 'worker-persistence' });
1526
1526
  next = RedisWorkerStore.create(client, key_prefix);
1527
1527
  }
1528
1528
  else if (persistence.driver === 'database') {
@@ -1566,7 +1566,7 @@ const createWorkerStore = async (persistence) => {
1566
1566
  const redisConfig = resolveRedisConfigWithFallback(persistence.redis ?? { env: true }, undefined, 'Worker persistence requires redis config (persistence.redis or REDIS_* env values)', 'persistence.redis');
1567
1567
  const key_prefix = persistence.keyPrefix ?? keyPrefix();
1568
1568
  logRedisPersistenceConfig(redisConfig, key_prefix, 'createWorkerStore');
1569
- const client = createRedisConnection(redisConfig);
1569
+ const client = createRedisConnection(redisConfig, 3, { subsystem: 'worker-persistence' });
1570
1570
  return RedisWorkerStore.create(client, key_prefix);
1571
1571
  }
1572
1572
  // Database driver
@@ -31,7 +31,7 @@ const getValidClient = async () => {
31
31
  }
32
32
  // If no client, create one
33
33
  if (!redisClient) {
34
- redisClient = createRedisConnection(cachedConfig);
34
+ redisClient = createRedisConnection(cachedConfig, 3, { subsystem: 'worker-metrics' });
35
35
  }
36
36
  const client = redisClient;
37
37
  if (!client) {
@@ -220,7 +220,7 @@ const WorkerMetrics = Object.freeze({
220
220
  return;
221
221
  }
222
222
  cachedConfig = config;
223
- redisClient = createRedisConnection(config);
223
+ redisClient = createRedisConnection(config, 3, { subsystem: 'worker-metrics' });
224
224
  Logger.info('WorkerMetrics initialized');
225
225
  },
226
226
  /**
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@zintrust/workers",
3
- "version": "0.4.34",
4
- "buildDate": "2026-03-29T19:24:26.213Z",
3
+ "version": "0.4.36",
4
+ "buildDate": "2026-03-30T17:20:12.328Z",
5
5
  "buildEnvironment": {
6
6
  "node": "v22.22.1",
7
7
  "platform": "darwin",
8
8
  "arch": "arm64"
9
9
  },
10
10
  "git": {
11
- "commit": "4abfecc6",
12
- "branch": "dev"
11
+ "commit": "a45b4628",
12
+ "branch": "release"
13
13
  },
14
14
  "package": {
15
15
  "engines": {
@@ -82,16 +82,16 @@
82
82
  "sha256": "77439b1e80a344ff2de380082886addda0e8ca0419e57e7039e9f6ad4c596462"
83
83
  },
84
84
  "ClusterLock.js": {
85
- "size": 13447,
86
- "sha256": "bd7da9158c7badf096057cf44d45d244a4a2fd5e2e34c7a858642ccf943645f2"
85
+ "size": 13488,
86
+ "sha256": "d216923cb5829a14155f2acfd7691075e9ee1d262fd25711afe877a7920642ca"
87
87
  },
88
88
  "ComplianceManager.d.ts": {
89
89
  "size": 5142,
90
90
  "sha256": "19a2695093bc102680cd8f28775d2b2b5efea5ad52b682c89fedbf4424b4b711"
91
91
  },
92
92
  "ComplianceManager.js": {
93
- "size": 19614,
94
- "sha256": "e29a36bbf663f30da08a59200b0fbb760e67f908faa95ed56e21aac2868f1b0f"
93
+ "size": 19653,
94
+ "sha256": "79fd228c4bae3d13fa64a75809fb112c65624560558fa57d6b7544a5ad1cf4f5"
95
95
  },
96
96
  "DatacenterOrchestrator.d.ts": {
97
97
  "size": 3532,
@@ -106,8 +106,8 @@
106
106
  "sha256": "dd82e7e2c23a2fcaefc0cb87a1a7931594d6a5f76b758f608c77063f5e8533cd"
107
107
  },
108
108
  "DeadLetterQueue.js": {
109
- "size": 19444,
110
- "sha256": "d17c60d3b938ed141760c7cc8b75b14e8c20ce98c3962265f4d12f2f1edba69c"
109
+ "size": 19476,
110
+ "sha256": "de0ac7ee53a71e375536041a3ce65be22bc29f1901af8564f1e60307007c061e"
111
111
  },
112
112
  "HealthMonitor.d.ts": {
113
113
  "size": 1485,
@@ -178,8 +178,8 @@
178
178
  "sha256": "3869f960c87260588e40941ff91bffcfa0757be7a04815fd28b57dd4840c51df"
179
179
  },
180
180
  "WorkerFactory.js": {
181
- "size": 102783,
182
- "sha256": "f2928a648eaedba8b8c9f6e211cd6fc5e8a5bb531dc656899b20db7ddaa702b9"
181
+ "size": 102863,
182
+ "sha256": "1024756e603ca67461a955723dc004de9395267e50c7f59c9f8f0c13b2f0f7d8"
183
183
  },
184
184
  "WorkerInit.d.ts": {
185
185
  "size": 3284,
@@ -194,8 +194,8 @@
194
194
  "sha256": "5b684f87668bba86825625c20dda162915674e8c0fe3c3a32e05a2d9951c985f"
195
195
  },
196
196
  "WorkerMetrics.js": {
197
- "size": 20584,
198
- "sha256": "51dfef790aa2531387b193c5194ef3fbe021a238e0b021666aab4a605ced5879"
197
+ "size": 20656,
198
+ "sha256": "a3888a82cdc8311887e1320a320d11630cf9358d80681be21f6fc02c90fee2fa"
199
199
  },
200
200
  "WorkerRegistry.d.ts": {
201
201
  "size": 3941,
@@ -230,8 +230,8 @@
230
230
  "sha256": "8af20d462270e7044c6ea983821f5b6e6ce8a5caf39b6e8fefff07c9a0bf071e"
231
231
  },
232
232
  "build-manifest.json": {
233
- "size": 19590,
234
- "sha256": "627732a0b46235bfeb923176bfc8e40265d42bc5abac5250002e431301a552e2"
233
+ "size": 19591,
234
+ "sha256": "09f2e951c3a969cd97fcfc9ed8133e14da9e4b4250453c84d69ef973dd7bedec"
235
235
  },
236
236
  "config/workerConfig.d.ts": {
237
237
  "size": 132,
@@ -415,15 +415,15 @@
415
415
  },
416
416
  "index.js": {
417
417
  "size": 2337,
418
- "sha256": "223686f6a65ebbea5599bdb509d8857d1cbdf57d20669a8d00eee5190ff654d3"
418
+ "sha256": "d6f01d1d1f313d649fd5072e70617e3e28061e9c55d25ce24c3ea2d06e2cb8eb"
419
419
  },
420
420
  "register.d.ts": {
421
421
  "size": 256,
422
422
  "sha256": "07753654e043fd8ac0d42c4d74a26406929fc076c8c86b3d0513898c7da0d0aa"
423
423
  },
424
424
  "register.js": {
425
- "size": 1555,
426
- "sha256": "993d453ba69ea637d3674684032fc6dd47755c23c491920c04d12e006290cfe6"
425
+ "size": 1626,
426
+ "sha256": "4c404dfb2df0ac42da904bf30cece14ddbe127b8408d1ded951bf60ca86d07a3"
427
427
  },
428
428
  "routes/workers.d.ts": {
429
429
  "size": 498,
package/dist/register.js CHANGED
@@ -16,6 +16,7 @@ const getWorkerProviders = () => {
16
16
  ['worker:start-all', WorkerCommands.createWorkerStartAllCommand()],
17
17
  ['worker:stop', WorkerCommands.createWorkerStopCommand()],
18
18
  ['worker:restart', WorkerCommands.createWorkerRestartCommand()],
19
+ ['worker:doctor', WorkerCommands.createWorkerDoctorCommand()],
19
20
  ['worker:summary', WorkerCommands.createWorkerSummaryCommand()],
20
21
  ];
21
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/workers",
3
- "version": "0.4.34",
3
+ "version": "0.4.36",
4
4
  "description": "Worker orchestration and background job management for ZinTrust.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  "node": ">=20.0.0"
41
41
  },
42
42
  "peerDependencies": {
43
- "@zintrust/core": "^0.4.34",
43
+ "@zintrust/core": "^0.4.36",
44
44
  "@zintrust/queue-monitor": "*",
45
45
  "@zintrust/queue-redis": "*"
46
46
  },
@@ -67,10 +67,10 @@
67
67
  "prepublishOnly": "npm run build"
68
68
  },
69
69
  "dependencies": {
70
- "@opentelemetry/api": "^1.9.0",
70
+ "@opentelemetry/api": "^1.9.1",
71
71
  "hot-shots": "^14.2.0",
72
- "ioredis": "^5.10.0",
72
+ "ioredis": "^5.10.1",
73
73
  "prom-client": "^15.1.3",
74
74
  "simple-statistics": "^7.8.9"
75
75
  }
76
- }
76
+ }
@@ -193,7 +193,7 @@ export const ClusterLock = Object.freeze({
193
193
  return;
194
194
  }
195
195
 
196
- const client = createRedisConnection(config);
196
+ const client = createRedisConnection(config, 3, { subsystem: 'worker-cluster-lock' });
197
197
  redisClient = client;
198
198
  startHeartbeat(client);
199
199
 
@@ -344,7 +344,7 @@ export const ComplianceManager = Object.freeze({
344
344
  return;
345
345
  }
346
346
 
347
- redisClient = createRedisConnection(redisConfig);
347
+ redisClient = createRedisConnection(redisConfig, 3, { subsystem: 'worker-compliance' });
348
348
  complianceConfig = {
349
349
  gdpr: { ...DEFAULT_CONFIG.gdpr, ...config?.gdpr },
350
350
  hipaa: { ...DEFAULT_CONFIG.hipaa, ...config?.hipaa },
@@ -260,7 +260,7 @@ export const DeadLetterQueue = Object.freeze({
260
260
  return;
261
261
  }
262
262
 
263
- redisClient = createRedisConnection(config);
263
+ redisClient = createRedisConnection(config, 3, { subsystem: 'worker-dlq' });
264
264
  retentionPolicy = policy;
265
265
 
266
266
  // Start cleanup interval if auto-delete is enabled
@@ -2201,7 +2201,7 @@ const resolveWorkerStore = async (config: WorkerFactoryConfig): Promise<WorkerSt
2201
2201
  );
2202
2202
  const key_prefix = persistence.keyPrefix ?? keyPrefix();
2203
2203
  logRedisPersistenceConfig(redisConfig, key_prefix, 'resolveWorkerStore');
2204
- const client = createRedisConnection(redisConfig);
2204
+ const client = createRedisConnection(redisConfig, 3, { subsystem: 'worker-persistence' });
2205
2205
  next = RedisWorkerStore.create(client, key_prefix);
2206
2206
  } else if (persistence.driver === 'database') {
2207
2207
  const explicitConnection =
@@ -2255,7 +2255,7 @@ const createWorkerStore = async (persistence: WorkerPersistenceConfig): Promise<
2255
2255
  );
2256
2256
  const key_prefix = persistence.keyPrefix ?? keyPrefix();
2257
2257
  logRedisPersistenceConfig(redisConfig, key_prefix, 'createWorkerStore');
2258
- const client = createRedisConnection(redisConfig);
2258
+ const client = createRedisConnection(redisConfig, 3, { subsystem: 'worker-persistence' });
2259
2259
  return RedisWorkerStore.create(client, key_prefix);
2260
2260
  }
2261
2261
 
@@ -111,7 +111,7 @@ const getValidClient = async (): Promise<RedisConnection> => {
111
111
 
112
112
  // If no client, create one
113
113
  if (!redisClient) {
114
- redisClient = createRedisConnection(cachedConfig);
114
+ redisClient = createRedisConnection(cachedConfig, 3, { subsystem: 'worker-metrics' });
115
115
  }
116
116
 
117
117
  const client = redisClient;
@@ -358,7 +358,7 @@ const WorkerMetrics = Object.freeze({
358
358
  }
359
359
 
360
360
  cachedConfig = config;
361
- redisClient = createRedisConnection(config);
361
+ redisClient = createRedisConnection(config, 3, { subsystem: 'worker-metrics' });
362
362
  Logger.info('WorkerMetrics initialized');
363
363
  },
364
364
 
package/src/register.ts CHANGED
@@ -15,6 +15,7 @@ type WorkerCommandsModule = {
15
15
  createWorkerStartAllCommand: () => CliCommandProvider;
16
16
  createWorkerStopCommand: () => CliCommandProvider;
17
17
  createWorkerRestartCommand: () => CliCommandProvider;
18
+ createWorkerDoctorCommand: () => CliCommandProvider;
18
19
  createWorkerSummaryCommand: () => CliCommandProvider;
19
20
  };
20
21
  };
@@ -38,6 +39,7 @@ const getWorkerProviders = (): Array<[string, CliCommandProvider]> => {
38
39
  ['worker:start-all', WorkerCommands.createWorkerStartAllCommand()],
39
40
  ['worker:stop', WorkerCommands.createWorkerStopCommand()],
40
41
  ['worker:restart', WorkerCommands.createWorkerRestartCommand()],
42
+ ['worker:doctor', WorkerCommands.createWorkerDoctorCommand()],
41
43
  ['worker:summary', WorkerCommands.createWorkerSummaryCommand()],
42
44
  ];
43
45
  };