@calmo/task-runner 3.7.0 → 3.8.1

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 (68) hide show
  1. package/.github/workflows/ci.yml +3 -0
  2. package/.jules/nexus.md +5 -0
  3. package/.jules/sentinel.md +6 -0
  4. package/AGENTS.md +1 -0
  5. package/CHANGELOG.md +16 -0
  6. package/README.md +2 -0
  7. package/coverage/coverage-final.json +8 -7
  8. package/coverage/index.html +20 -20
  9. package/coverage/lcov-report/index.html +20 -20
  10. package/coverage/lcov-report/src/EventBus.ts.html +4 -4
  11. package/coverage/lcov-report/src/TaskGraphValidationError.ts.html +1 -1
  12. package/coverage/lcov-report/src/TaskGraphValidator.ts.html +142 -82
  13. package/coverage/lcov-report/src/TaskRunner.ts.html +94 -79
  14. package/coverage/lcov-report/src/TaskRunnerBuilder.ts.html +1 -1
  15. package/coverage/lcov-report/src/TaskRunnerExecutionConfig.ts.html +1 -1
  16. package/coverage/lcov-report/src/TaskStateManager.ts.html +42 -54
  17. package/coverage/lcov-report/src/WorkflowExecutor.ts.html +56 -47
  18. package/coverage/lcov-report/src/contracts/ErrorTypes.ts.html +103 -0
  19. package/coverage/lcov-report/src/contracts/RunnerEvents.ts.html +1 -1
  20. package/coverage/lcov-report/src/contracts/index.html +23 -8
  21. package/coverage/lcov-report/src/index.html +15 -15
  22. package/coverage/lcov-report/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
  23. package/coverage/lcov-report/src/strategies/RetryingExecutionStrategy.ts.html +5 -5
  24. package/coverage/lcov-report/src/strategies/StandardExecutionStrategy.ts.html +3 -3
  25. package/coverage/lcov-report/src/strategies/index.html +1 -1
  26. package/coverage/lcov.info +361 -332
  27. package/coverage/src/EventBus.ts.html +4 -4
  28. package/coverage/src/TaskGraphValidationError.ts.html +1 -1
  29. package/coverage/src/TaskGraphValidator.ts.html +142 -82
  30. package/coverage/src/TaskRunner.ts.html +94 -79
  31. package/coverage/src/TaskRunnerBuilder.ts.html +1 -1
  32. package/coverage/src/TaskRunnerExecutionConfig.ts.html +1 -1
  33. package/coverage/src/TaskStateManager.ts.html +42 -54
  34. package/coverage/src/WorkflowExecutor.ts.html +56 -47
  35. package/coverage/src/contracts/ErrorTypes.ts.html +103 -0
  36. package/coverage/src/contracts/RunnerEvents.ts.html +1 -1
  37. package/coverage/src/contracts/index.html +23 -8
  38. package/coverage/src/index.html +15 -15
  39. package/coverage/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
  40. package/coverage/src/strategies/RetryingExecutionStrategy.ts.html +5 -5
  41. package/coverage/src/strategies/StandardExecutionStrategy.ts.html +3 -3
  42. package/coverage/src/strategies/index.html +1 -1
  43. package/dist/TaskGraphValidator.d.ts +3 -0
  44. package/dist/TaskGraphValidator.js +33 -26
  45. package/dist/TaskGraphValidator.js.map +1 -1
  46. package/dist/TaskRunner.d.ts +4 -0
  47. package/dist/TaskRunner.js +39 -45
  48. package/dist/TaskRunner.js.map +1 -1
  49. package/dist/TaskStateManager.js +1 -5
  50. package/dist/TaskStateManager.js.map +1 -1
  51. package/dist/TaskStep.d.ts +6 -0
  52. package/dist/WorkflowExecutor.js +2 -0
  53. package/dist/WorkflowExecutor.js.map +1 -1
  54. package/dist/contracts/ErrorTypes.d.ts +6 -0
  55. package/dist/contracts/ErrorTypes.js +7 -0
  56. package/dist/contracts/ErrorTypes.js.map +1 -0
  57. package/dist/contracts/ValidationError.d.ts +2 -1
  58. package/openspec/changes/feat-task-metrics/proposal.md +17 -0
  59. package/openspec/changes/feat-task-metrics/tasks.md +6 -0
  60. package/package.json +14 -3
  61. package/src/TaskGraphValidator.ts +52 -32
  62. package/src/TaskRunner.ts +52 -47
  63. package/src/TaskStateManager.ts +1 -5
  64. package/src/TaskStep.ts +7 -0
  65. package/src/WorkflowExecutor.ts +3 -0
  66. package/src/contracts/ErrorTypes.ts +6 -0
  67. package/src/contracts/ValidationError.ts +10 -1
  68. package/test-report.xml +145 -123
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>64/64</span>
28
+ <span class='fraction'>66/66</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>31/31</span>
35
+ <span class='fraction'>35/35</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/7</span>
42
+ <span class='fraction'>8/8</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>64/64</span>
49
+ <span class='fraction'>65/65</span>
50
50
  </div>
51
51
 
52
52
 
@@ -251,7 +251,10 @@
251
251
  <a name='L186'></a><a href='#L186'>186</a>
252
252
  <a name='L187'></a><a href='#L187'>187</a>
253
253
  <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
255
258
  <span class="cline-any cline-neutral">&nbsp;</span>
256
259
  <span class="cline-any cline-neutral">&nbsp;</span>
257
260
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -262,7 +265,7 @@
262
265
  <span class="cline-any cline-neutral">&nbsp;</span>
263
266
  <span class="cline-any cline-neutral">&nbsp;</span>
264
267
  <span class="cline-any cline-neutral">&nbsp;</span>
265
- <span class="cline-any cline-yes">58x</span>
268
+ <span class="cline-any cline-yes">64x</span>
266
269
  <span class="cline-any cline-neutral">&nbsp;</span>
267
270
  <span class="cline-any cline-neutral">&nbsp;</span>
268
271
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -272,11 +275,11 @@
272
275
  <span class="cline-any cline-neutral">&nbsp;</span>
273
276
  <span class="cline-any cline-neutral">&nbsp;</span>
274
277
  <span class="cline-any cline-neutral">&nbsp;</span>
275
- <span class="cline-any cline-yes">58x</span>
276
- <span class="cline-any cline-yes">58x</span>
277
- <span class="cline-any cline-yes">58x</span>
278
- <span class="cline-any cline-yes">58x</span>
279
- <span class="cline-any cline-yes">58x</span>
278
+ <span class="cline-any cline-yes">64x</span>
279
+ <span class="cline-any cline-yes">64x</span>
280
+ <span class="cline-any cline-yes">64x</span>
281
+ <span class="cline-any cline-yes">64x</span>
282
+ <span class="cline-any cline-yes">64x</span>
280
283
  <span class="cline-any cline-neutral">&nbsp;</span>
281
284
  <span class="cline-any cline-neutral">&nbsp;</span>
282
285
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -289,11 +292,11 @@
289
292
  <span class="cline-any cline-neutral">&nbsp;</span>
290
293
  <span class="cline-any cline-neutral">&nbsp;</span>
291
294
  <span class="cline-any cline-neutral">&nbsp;</span>
292
- <span class="cline-any cline-yes">58x</span>
293
- <span class="cline-any cline-yes">58x</span>
295
+ <span class="cline-any cline-yes">64x</span>
296
+ <span class="cline-any cline-yes">64x</span>
294
297
  <span class="cline-any cline-neutral">&nbsp;</span>
295
298
  <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-yes">58x</span>
299
+ <span class="cline-any cline-yes">64x</span>
297
300
  <span class="cline-any cline-yes">3x</span>
298
301
  <span class="cline-any cline-neutral">&nbsp;</span>
299
302
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -302,22 +305,22 @@
302
305
  <span class="cline-any cline-yes">3x</span>
303
306
  <span class="cline-any cline-neutral">&nbsp;</span>
304
307
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-yes">55x</span>
308
+ <span class="cline-any cline-yes">61x</span>
306
309
  <span class="cline-any cline-neutral">&nbsp;</span>
307
- <span class="cline-any cline-yes">55x</span>
310
+ <span class="cline-any cline-yes">61x</span>
308
311
  <span class="cline-any cline-neutral">&nbsp;</span>
309
312
  <span class="cline-any cline-yes">11x</span>
310
313
  <span class="cline-any cline-neutral">&nbsp;</span>
311
314
  <span class="cline-any cline-neutral">&nbsp;</span>
312
- <span class="cline-any cline-yes">55x</span>
315
+ <span class="cline-any cline-yes">61x</span>
313
316
  <span class="cline-any cline-yes">11x</span>
314
317
  <span class="cline-any cline-neutral">&nbsp;</span>
315
318
  <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-yes">55x</span>
319
+ <span class="cline-any cline-yes">61x</span>
317
320
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">55x</span>
321
+ <span class="cline-any cline-yes">61x</span>
319
322
  <span class="cline-any cline-neutral">&nbsp;</span>
320
- <span class="cline-any cline-yes">55x</span>
323
+ <span class="cline-any cline-yes">61x</span>
321
324
  <span class="cline-any cline-neutral">&nbsp;</span>
322
325
  <span class="cline-any cline-neutral">&nbsp;</span>
323
326
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -325,29 +328,29 @@
325
328
  <span class="cline-any cline-neutral">&nbsp;</span>
326
329
  <span class="cline-any cline-neutral">&nbsp;</span>
327
330
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-yes">102x</span>
331
+ <span class="cline-any cline-yes">122x</span>
329
332
  <span class="cline-any cline-yes">2x</span>
330
333
  <span class="cline-any cline-neutral">&nbsp;</span>
331
334
  <span class="cline-any cline-neutral">&nbsp;</span>
332
- <span class="cline-any cline-yes">100x</span>
335
+ <span class="cline-any cline-yes">120x</span>
333
336
  <span class="cline-any cline-neutral">&nbsp;</span>
334
337
  <span class="cline-any cline-neutral">&nbsp;</span>
335
- <span class="cline-any cline-yes">100x</span>
338
+ <span class="cline-any cline-yes">120x</span>
336
339
  <span class="cline-any cline-yes">11x</span>
337
340
  <span class="cline-any cline-neutral">&nbsp;</span>
338
341
  <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-yes">89x</span>
342
+ <span class="cline-any cline-yes">109x</span>
340
343
  <span class="cline-any cline-neutral">&nbsp;</span>
341
344
  <span class="cline-any cline-neutral">&nbsp;</span>
342
345
  <span class="cline-any cline-neutral">&nbsp;</span>
343
346
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">55x</span>
347
+ <span class="cline-any cline-yes">61x</span>
345
348
  <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">55x</span>
347
- <span class="cline-any cline-yes">55x</span>
348
- <span class="cline-any cline-yes">55x</span>
349
+ <span class="cline-any cline-yes">61x</span>
350
+ <span class="cline-any cline-yes">61x</span>
351
+ <span class="cline-any cline-yes">61x</span>
349
352
  <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-yes">55x</span>
353
+ <span class="cline-any cline-yes">61x</span>
351
354
  <span class="cline-any cline-yes">11x</span>
352
355
  <span class="cline-any cline-neutral">&nbsp;</span>
353
356
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -360,27 +363,30 @@
360
363
  <span class="cline-any cline-neutral">&nbsp;</span>
361
364
  <span class="cline-any cline-neutral">&nbsp;</span>
362
365
  <span class="cline-any cline-neutral">&nbsp;</span>
363
- <span class="cline-any cline-yes">273x</span>
366
+ <span class="cline-any cline-yes">319x</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">319x</span>
370
+ <span class="cline-any cline-yes">149x</span>
365
371
  <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">273x</span>
367
- <span class="cline-any cline-yes">129x</span>
368
372
  <span class="cline-any cline-neutral">&nbsp;</span>
369
373
  <span class="cline-any cline-neutral">&nbsp;</span>
374
+ <span class="cline-any cline-yes">319x</span>
370
375
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">273x</span>
372
- <span class="cline-any cline-yes">141x</span>
373
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-yes">319x</span>
378
+ <span class="cline-any cline-yes">177x</span>
374
379
  <span class="cline-any cline-neutral">&nbsp;</span>
375
380
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">12x</span>
377
381
  <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-yes">28x</span>
378
383
  <span class="cline-any cline-neutral">&nbsp;</span>
379
- <span class="cline-any cline-yes">129x</span>
380
384
  <span class="cline-any cline-neutral">&nbsp;</span>
381
- <span class="cline-any cline-yes">129x</span>
382
- <span class="cline-any cline-yes">129x</span>
383
- <span class="cline-any cline-yes">129x</span>
385
+ <span class="cline-any cline-yes">149x</span>
386
+ <span class="cline-any cline-neutral">&nbsp;</span>
387
+ <span class="cline-any cline-yes">149x</span>
388
+ <span class="cline-any cline-yes">149x</span>
389
+ <span class="cline-any cline-yes">149x</span>
384
390
  <span class="cline-any cline-yes">7x</span>
385
391
  <span class="cline-any cline-yes">7x</span>
386
392
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -414,7 +420,7 @@
414
420
  <span class="cline-any cline-yes">2x</span>
415
421
  <span class="cline-any cline-neutral">&nbsp;</span>
416
422
  <span class="cline-any cline-neutral">&nbsp;</span>
417
- <span class="cline-any cline-yes">123x</span>
423
+ <span class="cline-any cline-yes">143x</span>
418
424
  <span class="cline-any cline-yes">1x</span>
419
425
  <span class="cline-any cline-neutral">&nbsp;</span>
420
426
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -422,20 +428,20 @@
422
428
  <span class="cline-any cline-yes">1x</span>
423
429
  <span class="cline-any cline-neutral">&nbsp;</span>
424
430
  <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-yes">122x</span>
431
+ <span class="cline-any cline-yes">142x</span>
426
432
  <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">122x</span>
433
+ <span class="cline-any cline-yes">142x</span>
428
434
  <span class="cline-any cline-neutral">&nbsp;</span>
429
435
  <span class="cline-any cline-neutral">&nbsp;</span>
430
- <span class="cline-any cline-yes">122x</span>
436
+ <span class="cline-any cline-yes">142x</span>
431
437
  <span class="cline-any cline-neutral">&nbsp;</span>
432
438
  <span class="cline-any cline-neutral">&nbsp;</span>
433
- <span class="cline-any cline-yes">129x</span>
439
+ <span class="cline-any cline-yes">149x</span>
434
440
  <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">129x</span>
441
+ <span class="cline-any cline-yes">149x</span>
436
442
  <span class="cline-any cline-neutral">&nbsp;</span>
437
443
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-yes">129x</span>
444
+ <span class="cline-any cline-yes">149x</span>
439
445
  <span class="cline-any cline-neutral">&nbsp;</span>
440
446
  <span class="cline-any cline-neutral">&nbsp;</span>
441
447
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -554,6 +560,9 @@ export class WorkflowExecutor&lt;TContext&gt; {
554
560
  for (const task of newlyReady) {
555
561
  this.readyQueue.push(task);
556
562
  }
563
+ &nbsp;
564
+ // Sort by priority (descending) once after adding new tasks
565
+ this.readyQueue.sort((a, b) =&gt; (b.priority ?? 0) - (a.priority ?? 0));
557
566
  &nbsp;
558
567
  // Execute ready tasks while respecting concurrency limit
559
568
  while (this.readyQueue.length &gt; 0) {
@@ -634,7 +643,7 @@ export class WorkflowExecutor&lt;TContext&gt; {
634
643
  <div class='footer quiet pad2 space-top1 center small'>
635
644
  Code coverage generated by
636
645
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
637
- at 2026-01-19T22:41:01.764Z
646
+ at 2026-01-21T01:05:21.392Z
638
647
  </div>
639
648
  <script src="../prettify.js"></script>
640
649
  <script>
@@ -0,0 +1,103 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/contracts/ErrorTypes.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/contracts</a> ErrorTypes.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>3/3</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>0/0</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>0/0</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>3/3</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
73
+ <span class="cline-any cline-neutral">&nbsp;</span>
74
+ <span class="cline-any cline-neutral">&nbsp;</span>
75
+ <span class="cline-any cline-yes">17x</span>
76
+ <span class="cline-any cline-yes">17x</span>
77
+ <span class="cline-any cline-yes">17x</span>
78
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
79
+ * Error type constants for task graph validation.
80
+ */
81
+ export const ERROR_DUPLICATE_TASK = "duplicate_task" as const;
82
+ export const ERROR_MISSING_DEPENDENCY = "missing_dependency" as const;
83
+ export const ERROR_CYCLE = "cycle" as const;
84
+ &nbsp;</pre></td></tr></table></pre>
85
+
86
+ <div class='push'></div><!-- for sticky footer -->
87
+ </div><!-- /wrapper -->
88
+ <div class='footer quiet pad2 space-top1 center small'>
89
+ Code coverage generated by
90
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
91
+ at 2026-01-21T01:05:21.392Z
92
+ </div>
93
+ <script src="../../prettify.js"></script>
94
+ <script>
95
+ window.onload = function () {
96
+ prettyPrint();
97
+ };
98
+ </script>
99
+ <script src="../../sorter.js"></script>
100
+ <script src="../../block-navigation.js"></script>
101
+ </body>
102
+ </html>
103
+
@@ -202,7 +202,7 @@ export type ListenerMap&lt;TContext&gt; = {
202
202
  <div class='footer quiet pad2 space-top1 center small'>
203
203
  Code coverage generated by
204
204
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
205
- at 2026-01-19T22:41:01.764Z
205
+ at 2026-01-21T01:05:21.392Z
206
206
  </div>
207
207
  <script src="../../prettify.js"></script>
208
208
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/0</span>
28
+ <span class='fraction'>3/3</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
35
  <span class='fraction'>0/0</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
42
  <span class='fraction'>0/0</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/0</span>
49
+ <span class='fraction'>3/3</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -79,6 +79,21 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
+ <td class="file high" data-value="ErrorTypes.ts"><a href="ErrorTypes.ts.html">ErrorTypes.ts</a></td>
83
+ <td data-value="100" class="pic high">
84
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
+ </td>
86
+ <td data-value="100" class="pct high">100%</td>
87
+ <td data-value="3" class="abs high">3/3</td>
88
+ <td data-value="100" class="pct high">100%</td>
89
+ <td data-value="0" class="abs high">0/0</td>
90
+ <td data-value="100" class="pct high">100%</td>
91
+ <td data-value="0" class="abs high">0/0</td>
92
+ <td data-value="100" class="pct high">100%</td>
93
+ <td data-value="3" class="abs high">3/3</td>
94
+ </tr>
95
+
96
+ <tr>
82
97
  <td class="file empty" data-value="RunnerEvents.ts"><a href="RunnerEvents.ts.html">RunnerEvents.ts</a></td>
83
98
  <td data-value="0" class="pic empty">
84
99
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
@@ -101,7 +116,7 @@
101
116
  <div class='footer quiet pad2 space-top1 center small'>
102
117
  Code coverage generated by
103
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-01-19T22:41:01.764Z
119
+ at 2026-01-21T01:05:21.392Z
105
120
  </div>
106
121
  <script src="../../prettify.js"></script>
107
122
  <script>
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>251/251</span>
28
+ <span class='fraction'>256/256</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>93/93</span>
35
+ <span class='fraction'>97/97</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>46/46</span>
42
+ <span class='fraction'>50/50</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>248/248</span>
49
+ <span class='fraction'>253/253</span>
50
50
  </div>
51
51
 
52
52
 
@@ -114,13 +114,13 @@
114
114
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
115
115
  </td>
116
116
  <td data-value="100" class="pct high">100%</td>
117
- <td data-value="56" class="abs high">56/56</td>
117
+ <td data-value="59" class="abs high">59/59</td>
118
118
  <td data-value="100" class="pct high">100%</td>
119
119
  <td data-value="16" class="abs high">16/16</td>
120
120
  <td data-value="100" class="pct high">100%</td>
121
- <td data-value="5" class="abs high">5/5</td>
121
+ <td data-value="8" class="abs high">8/8</td>
122
122
  <td data-value="100" class="pct high">100%</td>
123
- <td data-value="55" class="abs high">55/55</td>
123
+ <td data-value="58" class="abs high">58/58</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
@@ -129,7 +129,7 @@
129
129
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
130
130
  </td>
131
131
  <td data-value="100" class="pct high">100%</td>
132
- <td data-value="49" class="abs high">49/49</td>
132
+ <td data-value="48" class="abs high">48/48</td>
133
133
  <td data-value="100" class="pct high">100%</td>
134
134
  <td data-value="18" class="abs high">18/18</td>
135
135
  <td data-value="100" class="pct high">100%</td>
@@ -174,13 +174,13 @@
174
174
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
175
175
  </td>
176
176
  <td data-value="100" class="pct high">100%</td>
177
- <td data-value="47" class="abs high">47/47</td>
177
+ <td data-value="48" class="abs high">48/48</td>
178
178
  <td data-value="100" class="pct high">100%</td>
179
179
  <td data-value="16" class="abs high">16/16</td>
180
180
  <td data-value="100" class="pct high">100%</td>
181
181
  <td data-value="10" class="abs high">10/10</td>
182
182
  <td data-value="100" class="pct high">100%</td>
183
- <td data-value="47" class="abs high">47/47</td>
183
+ <td data-value="48" class="abs high">48/48</td>
184
184
  </tr>
185
185
 
186
186
  <tr>
@@ -189,13 +189,13 @@
189
189
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
190
190
  </td>
191
191
  <td data-value="100" class="pct high">100%</td>
192
- <td data-value="64" class="abs high">64/64</td>
192
+ <td data-value="66" class="abs high">66/66</td>
193
193
  <td data-value="100" class="pct high">100%</td>
194
- <td data-value="31" class="abs high">31/31</td>
194
+ <td data-value="35" class="abs high">35/35</td>
195
195
  <td data-value="100" class="pct high">100%</td>
196
- <td data-value="7" class="abs high">7/7</td>
196
+ <td data-value="8" class="abs high">8/8</td>
197
197
  <td data-value="100" class="pct high">100%</td>
198
- <td data-value="64" class="abs high">64/64</td>
198
+ <td data-value="65" class="abs high">65/65</td>
199
199
  </tr>
200
200
 
201
201
  </tbody>
@@ -206,7 +206,7 @@
206
206
  <div class='footer quiet pad2 space-top1 center small'>
207
207
  Code coverage generated by
208
208
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
209
- at 2026-01-19T22:41:01.764Z
209
+ at 2026-01-21T01:05:21.392Z
210
210
  </div>
211
211
  <script src="../prettify.js"></script>
212
212
  <script>
@@ -163,7 +163,7 @@ export class DryRunExecutionStrategy&lt;
163
163
  <div class='footer quiet pad2 space-top1 center small'>
164
164
  Code coverage generated by
165
165
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
166
- at 2026-01-19T22:41:01.764Z
166
+ at 2026-01-21T01:05:21.392Z
167
167
  </div>
168
168
  <script src="../../prettify.js"></script>
169
169
  <script>
@@ -169,16 +169,16 @@
169
169
  <span class="cline-any cline-neutral">&nbsp;</span>
170
170
  <span class="cline-any cline-neutral">&nbsp;</span>
171
171
  <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-yes">67x</span>
172
+ <span class="cline-any cline-yes">73x</span>
173
173
  <span class="cline-any cline-neutral">&nbsp;</span>
174
174
  <span class="cline-any cline-neutral">&nbsp;</span>
175
175
  <span class="cline-any cline-neutral">&nbsp;</span>
176
176
  <span class="cline-any cline-neutral">&nbsp;</span>
177
177
  <span class="cline-any cline-neutral">&nbsp;</span>
178
178
  <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-yes">119x</span>
180
- <span class="cline-any cline-yes">119x</span>
181
- <span class="cline-any cline-yes">112x</span>
179
+ <span class="cline-any cline-yes">139x</span>
180
+ <span class="cline-any cline-yes">139x</span>
181
+ <span class="cline-any cline-yes">132x</span>
182
182
  <span class="cline-any cline-neutral">&nbsp;</span>
183
183
  <span class="cline-any cline-neutral">&nbsp;</span>
184
184
  <span class="cline-any cline-yes">7x</span>
@@ -358,7 +358,7 @@ export class RetryingExecutionStrategy&lt;
358
358
  <div class='footer quiet pad2 space-top1 center small'>
359
359
  Code coverage generated by
360
360
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
361
- at 2026-01-19T22:41:01.764Z
361
+ at 2026-01-21T01:05:21.392Z
362
362
  </div>
363
363
  <script src="../../prettify.js"></script>
364
364
  <script>
@@ -113,8 +113,8 @@
113
113
  <span class="cline-any cline-neutral">&nbsp;</span>
114
114
  <span class="cline-any cline-neutral">&nbsp;</span>
115
115
  <span class="cline-any cline-neutral">&nbsp;</span>
116
- <span class="cline-any cline-yes">131x</span>
117
- <span class="cline-any cline-yes">131x</span>
116
+ <span class="cline-any cline-yes">151x</span>
117
+ <span class="cline-any cline-yes">151x</span>
118
118
  <span class="cline-any cline-neutral">&nbsp;</span>
119
119
  <span class="cline-any cline-neutral">&nbsp;</span>
120
120
  <span class="cline-any cline-yes">10x</span>
@@ -175,7 +175,7 @@ export class StandardExecutionStrategy&lt;
175
175
  <div class='footer quiet pad2 space-top1 center small'>
176
176
  Code coverage generated by
177
177
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
178
- at 2026-01-19T22:41:01.764Z
178
+ at 2026-01-21T01:05:21.392Z
179
179
  </div>
180
180
  <script src="../../prettify.js"></script>
181
181
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2026-01-19T22:41:01.764Z
134
+ at 2026-01-21T01:05:21.392Z
135
135
  </div>
136
136
  <script src="../../prettify.js"></script>
137
137
  <script>
@@ -19,5 +19,8 @@ export declare class TaskGraphValidator implements ITaskGraphValidator {
19
19
  * @returns A formatted error string.
20
20
  */
21
21
  createErrorMessage(result: ValidationResult): string;
22
+ private checkDuplicateTasks;
23
+ private checkMissingDependencies;
24
+ private checkCycles;
22
25
  private detectCycle;
23
26
  }