@diia-inhouse/workflow 1.15.2 → 1.16.0

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 (30) hide show
  1. package/dist/cli/checkWorkflowDeterminism.js +145 -303
  2. package/dist/cli/checkWorkflowDeterminism.js.map +1 -1
  3. package/dist/cli/determinism/errorClassifier.js +65 -0
  4. package/dist/cli/determinism/errorClassifier.js.map +1 -0
  5. package/dist/cli/determinism/historyFiles.js +107 -0
  6. package/dist/cli/determinism/historyFiles.js.map +1 -0
  7. package/dist/cli/determinism/index.js +19 -0
  8. package/dist/cli/determinism/index.js.map +1 -0
  9. package/dist/cli/determinism/replayExecutor.js +139 -0
  10. package/dist/cli/determinism/replayExecutor.js.map +1 -0
  11. package/dist/cli/determinism/replayOptions.js +26 -0
  12. package/dist/cli/determinism/replayOptions.js.map +1 -0
  13. package/dist/cli/determinism/report.js +45 -0
  14. package/dist/cli/determinism/report.js.map +1 -0
  15. package/dist/cli/determinism/reportPrinter.js +152 -0
  16. package/dist/cli/determinism/reportPrinter.js.map +1 -0
  17. package/dist/cli/determinism/types.js +3 -0
  18. package/dist/cli/determinism/types.js.map +1 -0
  19. package/dist/cli/index.js +13 -2
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/types/cli/checkWorkflowDeterminism.d.ts +5 -8
  22. package/dist/types/cli/determinism/errorClassifier.d.ts +15 -0
  23. package/dist/types/cli/determinism/historyFiles.d.ts +18 -0
  24. package/dist/types/cli/determinism/index.d.ts +10 -0
  25. package/dist/types/cli/determinism/replayExecutor.d.ts +9 -0
  26. package/dist/types/cli/determinism/replayOptions.d.ts +7 -0
  27. package/dist/types/cli/determinism/report.d.ts +16 -0
  28. package/dist/types/cli/determinism/reportPrinter.d.ts +5 -0
  29. package/dist/types/cli/determinism/types.d.ts +44 -0
  30. package/package.json +1 -1
@@ -1,36 +1,23 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.CheckWorkflowDeterminismCommand = void 0;
7
4
  /* eslint-disable unicorn/no-process-exit */
8
5
  const node_fs_1 = require("node:fs");
9
- const node_path_1 = __importDefault(require("node:path"));
10
- const node_process_1 = require("node:process");
11
- const node_util_1 = require("node:util");
12
6
  const worker_1 = require("@temporalio/worker");
13
- const workflow_1 = require("@temporalio/workflow");
14
7
  const ts_node_1 = require("ts-node");
15
8
  const env_1 = require("@diia-inhouse/env");
16
9
  const utils_1 = require("@diia-inhouse/utils");
17
- const encryption_1 = require("../encryption");
18
10
  const client_1 = require("../services/client");
11
+ const determinism_1 = require("./determinism");
19
12
  (0, ts_node_1.register)();
20
13
  class CheckWorkflowDeterminismCommand {
21
14
  logger;
22
15
  envService;
23
- temporalConfig;
24
- report = {
25
- successCount: 0,
26
- failureCount: 0,
27
- errors: [],
28
- warnings: [],
29
- checkedWorkflows: [],
30
- };
31
16
  maxWorkflowsPerType = 10;
32
17
  maxRetries = 3;
33
- retryDelay = 100;
18
+ retryDelayMs = 500;
19
+ replayTimeoutMs = 30_000;
20
+ delayBetweenWorkflows = 100;
34
21
  constructor(logger, envService) {
35
22
  this.logger = logger;
36
23
  this.envService = envService;
@@ -45,20 +32,22 @@ class CheckWorkflowDeterminismCommand {
45
32
  if (!taskQueue) {
46
33
  throw new Error('Task queue is not provided');
47
34
  }
48
- this.temporalConfig = {
35
+ const temporalConfig = {
49
36
  address: env_1.EnvService.getVar('TEMPORAL_ADDRESS'),
50
37
  namespace: env_1.EnvService.getVar('TEMPORAL_NAMESPACE', 'string', 'default'),
51
38
  taskQueue,
52
39
  encryptionEnabled: env_1.EnvService.getVar('TEMPORAL_ENCRYPTION_ENABLED', 'boolean', false),
53
40
  encryptionKeyId: env_1.EnvService.getVar('TEMPORAL_ENCRYPTION_KEY_ID', 'string', ''),
54
41
  };
55
- const client = new client_1.TemporalClient(this.temporalConfig, this.envService, this.logger);
42
+ const client = new client_1.TemporalClient(temporalConfig, this.envService, this.logger);
56
43
  await client.onInit();
57
44
  try {
58
- await this.checkWorkflowDeterminism(client, workflowsPath, workflowId);
45
+ const report = await this.checkFromServer(client, workflowsPath, temporalConfig, workflowId);
59
46
  this.logger.info(`Workflow determinism check finished! It took ${((Date.now() - startTime) / 1000).toFixed(1)} seconds`);
60
- if (this.report.failureCount > 0) {
61
- this.logger.error(`Determinism check failed: ${this.report.failureCount} workflows have determinism issues`);
47
+ (0, determinism_1.printReport)(report);
48
+ this.logger.info(`Workflow determinism check results: ${report.successCount} passed, ${report.failureCount} failed`);
49
+ if (report.failureCount > 0) {
50
+ this.logger.error(`Determinism check failed: ${report.failureCount} workflows have determinism issues`);
62
51
  process.exit(1);
63
52
  }
64
53
  }
@@ -67,201 +56,175 @@ class CheckWorkflowDeterminismCommand {
67
56
  }
68
57
  process.exit(0);
69
58
  }
70
- async checkWorkflowDeterminism(client, workflowsPath, specificWorkflowId) {
59
+ async runFromFiles(workflowsPath = 'worker/workflows', historyDir, limit) {
60
+ const startTime = Date.now();
61
+ worker_1.Runtime.install({ logger: this.logger });
62
+ this.logger.info('Starting workflow determinism check from local files', { workflowsPath, historyDir, limit });
63
+ const workflows = await this.loadWorkflows(workflowsPath);
64
+ this.logger.info(`Found ${Object.keys(workflows).length} workflows`, { workflows: Object.keys(workflows) });
65
+ const encryption = {
66
+ enabled: env_1.EnvService.getVar('TEMPORAL_ENCRYPTION_ENABLED', 'boolean', false),
67
+ keyId: env_1.EnvService.getVar('TEMPORAL_ENCRYPTION_KEY_ID', 'string', ''),
68
+ };
69
+ const { entries, encryptedCount, runningCount } = (0, determinism_1.loadHistoryEntries)(historyDir, workflows, {
70
+ limit,
71
+ encryptionEnabled: encryption.enabled,
72
+ logger: this.logger,
73
+ });
74
+ this.logger.info(`Loaded ${entries.length} valid histories${limit ? ` (limited to ${limit})` : ''}`);
75
+ if (runningCount > 0) {
76
+ this.logger.info(`Skipped ${runningCount} running workflow(s) — only completed/failed workflows are checked`);
77
+ }
78
+ if (encryptedCount > 0) {
79
+ this.logger.warn(`⚠️ Skipped ${encryptedCount} encrypted file(s) — set TEMPORAL_ENCRYPTION_ENABLED=true and provide encryption keys`);
80
+ }
81
+ if (entries.length === 0) {
82
+ this.logger.info('No history files found');
83
+ process.exit(0);
84
+ }
85
+ const options = await (0, determinism_1.buildReplayOptions)(workflowsPath, encryption, this.envService);
86
+ const reportBuilder = new determinism_1.DeterminismReportBuilder();
87
+ reportBuilder.setSkippedCount(encryptedCount);
88
+ this.logger.info(`Replaying ${entries.length} workflows...`);
89
+ let processed = 0;
71
90
  try {
72
- this.report = {
73
- successCount: 0,
74
- failureCount: 0,
75
- errors: [],
76
- warnings: [],
77
- checkedWorkflows: [],
78
- };
79
- if (specificWorkflowId) {
80
- try {
81
- await this.checkSingleWorkflow(client, workflowsPath, specificWorkflowId);
82
- this.report.successCount++;
83
- }
84
- catch {
85
- const workflow = this.report.checkedWorkflows.find((w) => w.id === specificWorkflowId);
86
- if (workflow && workflow.status === 'success') {
87
- this.report.successCount++;
91
+ for await (const outcome of (0, determinism_1.replayBatch)(options, entries)) {
92
+ processed++;
93
+ switch (outcome.status) {
94
+ case 'success': {
95
+ reportBuilder.addSuccess(outcome.workflowId, outcome.workflowType);
96
+ this.logger.info(`✅ Workflow ${outcome.workflowId} (${outcome.workflowType}) is deterministic`);
97
+ break;
88
98
  }
89
- else {
90
- this.report.failureCount++;
99
+ case 'failure': {
100
+ if ((0, determinism_1.isNewStepsAdded)(outcome.error)) {
101
+ reportBuilder.addSuccess(outcome.workflowId, outcome.workflowType);
102
+ reportBuilder.addWarning(outcome.error);
103
+ this.logger.warn(`⚠️ Workflow ${outcome.workflowId} (${outcome.workflowType}) has been modified to add new steps`);
104
+ }
105
+ else {
106
+ reportBuilder.addFailure(outcome.workflowId, outcome.workflowType, outcome.error);
107
+ this.logger.error(`❌ Workflow ${outcome.workflowId} (${outcome.workflowType}): ${outcome.error.errorMessage}`);
108
+ }
109
+ break;
91
110
  }
92
- }
93
- this.printBeautifulResults();
94
- return;
95
- }
96
- const completedOrFailedWorkflows = await this.listCompletedOrFailedWorkflows(client, workflowsPath);
97
- if (completedOrFailedWorkflows.length === 0) {
98
- this.logger.info('No completed or failed workflows found to check');
99
- return;
100
- }
101
- this.logger.info(`Found ${completedOrFailedWorkflows.length} completed or failed workflows to check (limited to max 10 per workflow type)`);
102
- for (const [i, workflowId] of completedOrFailedWorkflows.entries()) {
103
- if (i > 0) {
104
- await new Promise((resolve) => setTimeout(resolve, this.retryDelay));
105
- }
106
- try {
107
- await this.checkSingleWorkflow(client, workflowsPath, workflowId);
108
- this.report.successCount++;
109
- }
110
- catch {
111
- const workflow = this.report.checkedWorkflows.find((w) => w.id === workflowId);
112
- if (workflow && workflow.status === 'success') {
113
- this.report.successCount++;
114
- }
115
- else {
116
- this.report.failureCount++;
117
- this.logger.error(`❌ Failed to check workflow ${workflowId}`);
111
+ case 'timeout': {
112
+ reportBuilder.addTimeout(outcome.workflowId, outcome.workflowType, {
113
+ workflowId: outcome.workflowId,
114
+ errorType: 'ReplayFailure',
115
+ errorMessage: `Replay timed out after ${outcome.timeoutMs / 1000}s`,
116
+ });
117
+ this.logger.warn(`⏰ Workflow ${outcome.workflowId} timed out`);
118
+ break;
118
119
  }
119
120
  }
121
+ if (processed % 50 === 0) {
122
+ const report = reportBuilder.build();
123
+ this.logger.info(`Progress: ${processed}/${entries.length} (${report.successCount} passed, ${report.failureCount} failed)`);
124
+ }
120
125
  }
121
- this.printBeautifulResults();
122
126
  }
123
127
  catch (err) {
124
- this.logger.error('❌ Failed to check workflow determinism', { err });
125
- throw err;
128
+ this.logger.error(`Replay stream stopped at ${processed}/${entries.length}: ${err.message}`);
126
129
  }
127
- }
128
- async runReplayHistory(workflowsPath, history, workflowId) {
129
- const fullPath = this.resolveWorkflowsPath(workflowsPath);
130
- const options = { workflowsPath: require.resolve(fullPath) };
131
- if (this.temporalConfig.encryptionEnabled) {
132
- const dataConverter = await (0, encryption_1.getDataConverter)(this.temporalConfig.encryptionKeyId, this.envService);
133
- options.dataConverter = dataConverter;
130
+ const report = reportBuilder.build();
131
+ (0, determinism_1.printReport)(report);
132
+ this.logger.info(`Determinism check from files finished in ${((Date.now() - startTime) / 1000).toFixed(1)} seconds`);
133
+ this.logger.info(`Workflow determinism check results: ${report.successCount} passed, ${report.failureCount} failed`);
134
+ if (report.failureCount > 0) {
135
+ this.logger.error(`Determinism check failed: ${report.failureCount} workflows have determinism issues`);
136
+ process.exit(1);
134
137
  }
135
- return await this.runReplayHistoryWithRetry(options, history, workflowId);
138
+ process.exit(0);
136
139
  }
137
- async runReplayHistoryWithRetry(options, history, workflowId, maxRetries = this.maxRetries) {
138
- let lastError;
139
- let failedAttempts = 0;
140
- const originalErrors = [];
141
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
142
- try {
143
- if (attempt > 1) {
144
- const delay = Math.min(1000 * Math.pow(2, attempt - 2), 5000); // Exponential backoff, max 5s
145
- this.logger.info(`Retrying replay history for workflow ${workflowId} (attempt ${attempt}/${maxRetries}) after ${delay}ms delay`);
146
- await new Promise((resolve) => setTimeout(resolve, delay));
147
- }
148
- await worker_1.Worker.runReplayHistory(options, history, workflowId);
149
- return { recoveredOnRetry: attempt > 1, failedAttempts, originalErrors };
140
+ async checkFromServer(client, workflowsPath, temporalConfig, specificWorkflowId) {
141
+ const reportBuilder = new determinism_1.DeterminismReportBuilder();
142
+ try {
143
+ const workflowIds = specificWorkflowId ? [specificWorkflowId] : await this.listCompletedOrFailedWorkflows(client, workflowsPath);
144
+ if (workflowIds.length === 0) {
145
+ this.logger.info('No completed or failed workflows found to check');
146
+ return reportBuilder.build();
147
+ }
148
+ if (!specificWorkflowId) {
149
+ this.logger.info(`Found ${workflowIds.length} completed or failed workflows to check (limited to max ${this.maxWorkflowsPerType} per workflow type)`);
150
150
  }
151
- catch (err) {
152
- if (err instanceof workflow_1.DeterminismViolationError) {
153
- throw err;
151
+ const options = await (0, determinism_1.buildReplayOptions)(workflowsPath, {
152
+ enabled: temporalConfig.encryptionEnabled,
153
+ keyId: temporalConfig.encryptionKeyId,
154
+ }, this.envService);
155
+ for (const [i, workflowId] of workflowIds.entries()) {
156
+ if (i > 0) {
157
+ await new Promise((resolve) => setTimeout(resolve, this.delayBetweenWorkflows));
154
158
  }
155
- failedAttempts++;
156
- lastError = err;
157
- const errorMessage = err instanceof Error ? err.message : String(err);
158
- originalErrors.push(`Attempt ${attempt}: ${errorMessage}`);
159
- this.logger.warn(`🔁 Failed to replay history for workflow ${workflowId} on attempt ${attempt}/${maxRetries}`, { err });
160
- continue;
159
+ await this.checkSingleWorkflow(client, options, workflowId, reportBuilder);
161
160
  }
162
161
  }
163
- throw lastError ?? new Error('Unknown error during replay history retry');
162
+ catch (err) {
163
+ this.logger.error('❌ Failed to check workflow determinism', { err });
164
+ throw err;
165
+ }
166
+ return reportBuilder.build();
164
167
  }
165
- async checkSingleWorkflow(client, workflowsPath, workflowId) {
168
+ async checkSingleWorkflow(client, options, workflowId, reportBuilder) {
166
169
  this.logger.info(`Checking workflow ${workflowId}`);
167
170
  const handle = client.workflow.getHandle(workflowId);
168
171
  const history = await handle.fetchHistory();
169
172
  const description = await handle.describe();
170
173
  const workflowName = description.type;
171
- try {
172
- this.logger.info(`Checking determinism for workflow functions in ${workflowId}`);
173
- const retryResult = await this.runReplayHistory(workflowsPath, history, workflowId);
174
- this.logger.info(`✅ Workflow ${workflowId} is deterministic`);
175
- if (retryResult.recoveredOnRetry) {
176
- this.report.warnings.push({
177
- workflowId,
178
- errorType: 'ReplayFailure',
179
- errorMessage: `Workflow failed ${retryResult.failedAttempts} time(s) but recovered on retry`,
180
- details: {
181
- issue: 'Workflow Recovered on Retry',
182
- explanation: `This workflow initially failed replay but succeeded after ${retryResult.failedAttempts} failed attempt(s). This may indicate transient issues or race conditions.`,
183
- failedAttempts: retryResult.failedAttempts,
184
- originalErrors: retryResult.originalErrors,
185
- },
186
- });
187
- this.logger.warn(`⚠️ Workflow ${workflowId} recovered after ${retryResult.failedAttempts} failed attempt(s)`);
188
- }
189
- this.report.checkedWorkflows.push({
190
- name: workflowName,
191
- id: workflowId,
192
- status: 'success',
193
- });
194
- }
195
- catch (err) {
196
- this.report.checkedWorkflows.push({
197
- name: workflowName,
198
- id: workflowId,
199
- status: 'failure',
200
- });
201
- if (err instanceof workflow_1.DeterminismViolationError) {
202
- const errorMessage = err.message || '';
203
- const activityMismatchRegex = /Activity type of scheduled event '(.+?)' does not match activity type of activity command '(.+?)'/;
204
- const match = errorMessage.match(activityMismatchRegex);
205
- if (match) {
206
- const [, scheduledEvent, activityCommand] = match;
207
- const details = {
208
- issue: 'Activity Type Mismatch',
209
- explanation: `The workflow history expected activity '${scheduledEvent}' but the code attempted to execute '${activityCommand}'`,
210
- };
211
- this.report.errors.push({
174
+ const outcome = await (0, determinism_1.replaySingle)(options, history, workflowId, workflowName, {
175
+ maxRetries: this.maxRetries,
176
+ retryDelayMs: this.retryDelayMs,
177
+ timeoutMs: this.replayTimeoutMs,
178
+ });
179
+ switch (outcome.status) {
180
+ case 'success': {
181
+ this.logger.info(`✅ Workflow ${workflowId} is deterministic`);
182
+ if (outcome.recoveredOnRetry) {
183
+ reportBuilder.addWarning({
212
184
  workflowId,
213
- errorType: 'DeterminismViolation',
214
- errorMessage,
215
- details,
216
- });
217
- this.logger.fatal(`❌ Workflow ${workflowId} has determinism issues: Activity type mismatch`, {
218
- nondeterminismDetails: details,
185
+ errorType: 'ReplayFailure',
186
+ errorMessage: `Workflow failed ${outcome.failedAttempts} time(s) but recovered on retry`,
187
+ details: {
188
+ issue: 'Workflow Recovered on Retry',
189
+ explanation: `This workflow initially failed replay but succeeded after ${outcome.failedAttempts} failed attempt(s). This may indicate transient issues or race conditions.`,
190
+ failedAttempts: outcome.failedAttempts,
191
+ originalErrors: outcome.originalErrors,
192
+ },
219
193
  });
194
+ this.logger.warn(`⚠️ Workflow ${workflowId} recovered after ${outcome.failedAttempts} failed attempt(s)`);
220
195
  }
221
- else if (errorMessage.includes('WorkflowExecutionCompleted')) {
222
- const details = {
223
- issue: 'New Steps Added',
224
- explanation: 'This workflow has been modified to add new steps after the point where it previously completed. This is safe to ignore as it does not affect existing history.',
225
- };
226
- this.report.warnings.push({
227
- workflowId,
228
- errorType: 'DeterminismViolation',
229
- errorMessage,
230
- details,
231
- });
232
- this.logger.warn(`⚠️ Workflow ${workflowId} has been modified to add new steps`, {
233
- details,
234
- err,
235
- });
236
- const lastWorkflow = this.report.checkedWorkflows.at(-1);
237
- if (lastWorkflow) {
238
- lastWorkflow.status = 'success';
239
- }
240
- return;
196
+ reportBuilder.addSuccess(workflowId, workflowName);
197
+ break;
198
+ }
199
+ case 'failure': {
200
+ if ((0, determinism_1.isNewStepsAdded)(outcome.error)) {
201
+ reportBuilder.addSuccess(workflowId, workflowName);
202
+ reportBuilder.addWarning(outcome.error);
203
+ this.logger.warn(`⚠️ Workflow ${workflowId} has been modified to add new steps`);
241
204
  }
242
205
  else {
243
- this.report.errors.push({
244
- workflowId,
245
- errorType: 'DeterminismViolation',
246
- errorMessage,
247
- });
248
- this.logger.error(`❌ Workflow ${workflowId} has determinism issues`, {});
206
+ reportBuilder.addFailure(workflowId, workflowName, outcome.error);
207
+ this.logger.error(`❌ Workflow ${workflowId} has determinism issues`);
249
208
  }
209
+ break;
250
210
  }
251
- else {
252
- const errorMessage = err instanceof Error ? err.message : String(err);
253
- this.report.errors.push({
211
+ case 'timeout': {
212
+ reportBuilder.addTimeout(workflowId, workflowName, {
254
213
  workflowId,
255
214
  errorType: 'ReplayFailure',
256
- errorMessage,
215
+ errorMessage: `Replay timed out after ${outcome.timeoutMs / 1000}s`,
216
+ details: {
217
+ issue: 'Replay Timeout',
218
+ explanation: `Replay did not complete within ${outcome.timeoutMs / 1000}s. This may indicate a stuck workflow.`,
219
+ },
257
220
  });
258
- this.logger.error(`⚠️ Workflow ${workflowId} replay failed`, { err });
221
+ this.logger.warn(`⏰ Workflow ${workflowId} timed out after ${outcome.timeoutMs / 1000}s — skipping`);
222
+ break;
259
223
  }
260
- throw err;
261
224
  }
262
225
  }
263
226
  async loadWorkflows(workflowsPath) {
264
- const fullWorkflowsPath = this.resolveWorkflowsPath(workflowsPath);
227
+ const fullWorkflowsPath = (0, determinism_1.resolveWorkflowsPath)(workflowsPath);
265
228
  // eslint-disable-next-line security/detect-non-literal-fs-filename
266
229
  const workflowsExist = (0, node_fs_1.existsSync)(fullWorkflowsPath); // nosemgrep: eslint.detect-non-literal-fs-filename
267
230
  if (!workflowsExist) {
@@ -310,14 +273,6 @@ class CheckWorkflowDeterminismCommand {
310
273
  }
311
274
  return Object.values(filteredWorkflowsByType).flat();
312
275
  }
313
- resolveWorkflowsPath(workflowsPath) {
314
- const baseDir = node_path_1.default.resolve('./dist');
315
- const fullPath = node_path_1.default.resolve(baseDir, workflowsPath, 'index.js');
316
- if (!fullPath.startsWith(baseDir + node_path_1.default.sep)) {
317
- throw new Error(`Invalid workflows path: path traversal detected in '${workflowsPath}'`);
318
- }
319
- return fullPath;
320
- }
321
276
  getTaskQueue() {
322
277
  const taskQueue = env_1.EnvService.getVar('TEMPORAL_TASK_QUEUE', 'string', '');
323
278
  if (!taskQueue) {
@@ -325,119 +280,6 @@ class CheckWorkflowDeterminismCommand {
325
280
  }
326
281
  return taskQueue;
327
282
  }
328
- printBeautifulResults() {
329
- const reset = '\u001B[0m';
330
- const bold = '\u001B[1m';
331
- const green = '\u001B[32m';
332
- const red = '\u001B[31m';
333
- const yellow = '\u001B[33m';
334
- const magenta = '\u001B[35m';
335
- const cyan = '\u001B[36m';
336
- const white = '\u001B[37m';
337
- const bgBlue = '\u001B[44m';
338
- const bgRed = '\u001B[41m';
339
- const bgGreen = '\u001B[42m';
340
- const bgYellow = '\u001B[43m';
341
- const dim = '\u001B[2m';
342
- const underline = '\u001B[4m';
343
- node_process_1.stdout.write('\n\n');
344
- node_process_1.stdout.write(` ${bgBlue}${bold}${white} WORKFLOW DETERMINISM CHECK RESULTS ${reset}\n\n`);
345
- if (this.report.errors.length > 0) {
346
- node_process_1.stdout.write(` ${bold}${red}${underline}Errors${reset}\n\n`);
347
- for (const [index, error] of this.report.errors.entries()) {
348
- const errorTypeColor = error.errorType === 'DeterminismViolation' ? red : yellow;
349
- const errorBg = error.errorType === 'DeterminismViolation' ? bgRed : bgYellow;
350
- node_process_1.stdout.write(` ${errorBg}${white}${bold} Error #${index + 1} ${reset} ${errorTypeColor}${bold}${error.errorType}${reset}\n\n`);
351
- node_process_1.stdout.write(` ${bold}Workflow ID:${reset} ${cyan}${error.workflowId}${reset}\n`);
352
- node_process_1.stdout.write(` ${bold}Message:${reset} ${errorTypeColor}${error.errorMessage}${reset}\n`);
353
- if (error.details) {
354
- node_process_1.stdout.write(`\n ${bold}${underline}Details:${reset}\n`);
355
- for (const [key, value] of Object.entries(error.details)) {
356
- const formattedValue = typeof value === 'string' ? value : (0, node_util_1.format)('%o', value);
357
- node_process_1.stdout.write(` ${magenta}${key}:${reset} ${formattedValue}\n`);
358
- }
359
- }
360
- if (index < this.report.errors.length - 1) {
361
- node_process_1.stdout.write(`\n ${dim}${'─'.repeat(60)}${reset}\n\n`);
362
- }
363
- }
364
- }
365
- if (this.report.warnings.length > 0) {
366
- node_process_1.stdout.write(`\n ${bold}${yellow}${underline}Warnings${reset}\n\n`);
367
- for (const [index, warning] of this.report.warnings.entries()) {
368
- const errorBg = bgYellow;
369
- const errorTypeColor = yellow;
370
- node_process_1.stdout.write(` ${errorBg}${white}${bold} Warning #${index + 1} ${reset} ${errorTypeColor}${bold}${warning.errorType}${reset}\n\n`);
371
- node_process_1.stdout.write(` ${bold}Workflow ID:${reset} ${cyan}${warning.workflowId}${reset}\n`);
372
- node_process_1.stdout.write(` ${bold}Message:${reset} ${errorTypeColor}${warning.errorMessage}${reset}\n`);
373
- if (warning.details) {
374
- node_process_1.stdout.write(`\n ${bold}${underline}Details:${reset}\n`);
375
- for (const [key, value] of Object.entries(warning.details)) {
376
- const formattedValue = typeof value === 'string' ? value : (0, node_util_1.format)('%o', value);
377
- node_process_1.stdout.write(` ${magenta}${key}:${reset} ${formattedValue}\n`);
378
- }
379
- }
380
- if (index < this.report.warnings.length - 1) {
381
- node_process_1.stdout.write(`\n ${dim}${'─'.repeat(60)}${reset}\n\n`);
382
- }
383
- }
384
- }
385
- if (this.report.checkedWorkflows.length > 0) {
386
- node_process_1.stdout.write(`\n ${bold}${underline}Checked Workflow Types${reset}\n\n`);
387
- const workflowTypeMap = new Map();
388
- for (const workflow of this.report.checkedWorkflows) {
389
- if (workflowTypeMap.has(workflow.name)) {
390
- const entry = workflowTypeMap.get(workflow.name);
391
- entry.totalCount++;
392
- if (workflow.status === 'failure') {
393
- entry.status = 'failure';
394
- entry.failingCount++;
395
- }
396
- }
397
- else {
398
- workflowTypeMap.set(workflow.name, {
399
- status: workflow.status,
400
- totalCount: 1,
401
- failingCount: workflow.status === 'failure' ? 1 : 0,
402
- });
403
- }
404
- }
405
- const sortedTypes = Array.from(workflowTypeMap.entries()).toSorted((a, b) => a[0].localeCompare(b[0]));
406
- const deterministic = sortedTypes.filter(([, data]) => data.status === 'success');
407
- if (deterministic.length > 0) {
408
- node_process_1.stdout.write(` ${bgGreen}${white}${bold} DETERMINISTIC WORKFLOW TYPES ${reset}\n\n`);
409
- for (const [name, data] of deterministic) {
410
- node_process_1.stdout.write(` ${green}✓${reset} ${bold}${name}${reset} (${data.totalCount} instance${data.totalCount === 1 ? '' : 's'})\n`);
411
- }
412
- node_process_1.stdout.write('\n');
413
- }
414
- const nonDeterministic = sortedTypes.filter(([, data]) => data.status === 'failure');
415
- if (nonDeterministic.length > 0) {
416
- node_process_1.stdout.write(` ${bgRed}${white}${bold} NON-DETERMINISTIC WORKFLOW TYPES ${reset}\n\n`);
417
- for (const [name, data] of nonDeterministic) {
418
- node_process_1.stdout.write(` ${red}✗${reset} ${bold}${name}${reset} (${data.failingCount} failing instance${data.failingCount === 1 ? '' : 's'} out of ${data.totalCount})\n`);
419
- }
420
- node_process_1.stdout.write('\n');
421
- }
422
- }
423
- node_process_1.stdout.write('\n');
424
- node_process_1.stdout.write(` ${bold}${underline}Summary${reset}\n\n`);
425
- node_process_1.stdout.write(` ${green}✓ ${bold}Passed:${reset} ${this.report.successCount > 0 ? green : dim}${this.report.successCount}${reset}\n`);
426
- node_process_1.stdout.write(` ${red}✗ ${bold}Failed:${reset} ${this.report.failureCount > 0 ? red : dim}${this.report.failureCount}${reset}\n`);
427
- const total = this.report.successCount + this.report.failureCount;
428
- node_process_1.stdout.write(` ${bold}Total:${reset} ${total > 0 ? bold : dim}${total}${reset}\n\n`);
429
- if (this.report.failureCount === 0 && this.report.successCount > 0) {
430
- node_process_1.stdout.write(` ${bgGreen}${white}${bold} SUCCESS ${reset} ${green}All workflows are deterministic!${reset}\n\n`);
431
- }
432
- else if (this.report.failureCount > 0) {
433
- node_process_1.stdout.write(` ${bgRed}${white}${bold} FAILURE ${reset} ${red}Some workflows have determinism issues!${reset}\n\n`);
434
- }
435
- else {
436
- node_process_1.stdout.write(` ${bgYellow}${white}${bold} INFO ${reset} ${yellow}No workflows were checked.${reset}\n\n`);
437
- }
438
- node_process_1.stdout.write('\n');
439
- this.logger.info(`Workflow determinism check results: ${this.report.successCount} passed, ${this.report.failureCount} failed`);
440
- }
441
283
  }
442
284
  exports.CheckWorkflowDeterminismCommand = CheckWorkflowDeterminismCommand;
443
285
  //# sourceMappingURL=checkWorkflowDeterminism.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkWorkflowDeterminism.js","sourceRoot":"","sources":["../../src/cli/checkWorkflowDeterminism.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkWorkflowDeterminism.js","sourceRoot":"","sources":["../../src/cli/checkWorkflowDeterminism.ts"],"names":[],"mappings":"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"}