@calmo/task-runner 3.7.0 → 3.8.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.
- package/.github/workflows/ci.yml +3 -0
- package/.jules/nexus.md +5 -0
- package/.jules/sentinel.md +6 -0
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +10 -0
- package/README.md +2 -0
- package/coverage/coverage-final.json +7 -7
- package/coverage/index.html +9 -9
- package/coverage/lcov-report/index.html +9 -9
- package/coverage/lcov-report/src/EventBus.ts.html +4 -4
- package/coverage/lcov-report/src/TaskGraphValidationError.ts.html +1 -1
- package/coverage/lcov-report/src/TaskGraphValidator.ts.html +38 -38
- package/coverage/lcov-report/src/TaskRunner.ts.html +25 -25
- package/coverage/lcov-report/src/TaskRunnerBuilder.ts.html +1 -1
- package/coverage/lcov-report/src/TaskRunnerExecutionConfig.ts.html +1 -1
- package/coverage/lcov-report/src/TaskStateManager.ts.html +35 -35
- package/coverage/lcov-report/src/WorkflowExecutor.ts.html +56 -47
- package/coverage/lcov-report/src/contracts/RunnerEvents.ts.html +1 -1
- package/coverage/lcov-report/src/contracts/index.html +1 -1
- package/coverage/lcov-report/src/index.html +9 -9
- package/coverage/lcov-report/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
- package/coverage/lcov-report/src/strategies/RetryingExecutionStrategy.ts.html +5 -5
- package/coverage/lcov-report/src/strategies/StandardExecutionStrategy.ts.html +3 -3
- package/coverage/lcov-report/src/strategies/index.html +1 -1
- package/coverage/lcov.info +251 -244
- package/coverage/src/EventBus.ts.html +4 -4
- package/coverage/src/TaskGraphValidationError.ts.html +1 -1
- package/coverage/src/TaskGraphValidator.ts.html +38 -38
- package/coverage/src/TaskRunner.ts.html +25 -25
- package/coverage/src/TaskRunnerBuilder.ts.html +1 -1
- package/coverage/src/TaskRunnerExecutionConfig.ts.html +1 -1
- package/coverage/src/TaskStateManager.ts.html +35 -35
- package/coverage/src/WorkflowExecutor.ts.html +56 -47
- package/coverage/src/contracts/RunnerEvents.ts.html +1 -1
- package/coverage/src/contracts/index.html +1 -1
- package/coverage/src/index.html +9 -9
- package/coverage/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
- package/coverage/src/strategies/RetryingExecutionStrategy.ts.html +5 -5
- package/coverage/src/strategies/StandardExecutionStrategy.ts.html +3 -3
- package/coverage/src/strategies/index.html +1 -1
- package/dist/TaskRunner.js +1 -1
- package/dist/TaskRunner.js.map +1 -1
- package/dist/TaskStep.d.ts +6 -0
- package/dist/WorkflowExecutor.js +2 -0
- package/dist/WorkflowExecutor.js.map +1 -1
- package/openspec/changes/feat-task-metrics/proposal.md +17 -0
- package/openspec/changes/feat-task-metrics/tasks.md +6 -0
- package/package.json +14 -3
- package/src/TaskRunner.ts +1 -1
- package/src/TaskStep.ts +7 -0
- package/src/WorkflowExecutor.ts +3 -0
- package/test-report.xml +139 -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'>
|
|
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'>
|
|
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'>
|
|
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'>
|
|
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
|
|
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"> </span>
|
|
255
258
|
<span class="cline-any cline-neutral"> </span>
|
|
256
259
|
<span class="cline-any cline-neutral"> </span>
|
|
257
260
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -262,7 +265,7 @@
|
|
|
262
265
|
<span class="cline-any cline-neutral"> </span>
|
|
263
266
|
<span class="cline-any cline-neutral"> </span>
|
|
264
267
|
<span class="cline-any cline-neutral"> </span>
|
|
265
|
-
<span class="cline-any cline-yes">
|
|
268
|
+
<span class="cline-any cline-yes">64x</span>
|
|
266
269
|
<span class="cline-any cline-neutral"> </span>
|
|
267
270
|
<span class="cline-any cline-neutral"> </span>
|
|
268
271
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -272,11 +275,11 @@
|
|
|
272
275
|
<span class="cline-any cline-neutral"> </span>
|
|
273
276
|
<span class="cline-any cline-neutral"> </span>
|
|
274
277
|
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-yes">
|
|
276
|
-
<span class="cline-any cline-yes">
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
279
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
281
284
|
<span class="cline-any cline-neutral"> </span>
|
|
282
285
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -289,11 +292,11 @@
|
|
|
289
292
|
<span class="cline-any cline-neutral"> </span>
|
|
290
293
|
<span class="cline-any cline-neutral"> </span>
|
|
291
294
|
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-yes">
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
295
298
|
<span class="cline-any cline-neutral"> </span>
|
|
296
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
299
302
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -302,22 +305,22 @@
|
|
|
302
305
|
<span class="cline-any cline-yes">3x</span>
|
|
303
306
|
<span class="cline-any cline-neutral"> </span>
|
|
304
307
|
<span class="cline-any cline-neutral"> </span>
|
|
305
|
-
<span class="cline-any cline-yes">
|
|
308
|
+
<span class="cline-any cline-yes">61x</span>
|
|
306
309
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">
|
|
310
|
+
<span class="cline-any cline-yes">61x</span>
|
|
308
311
|
<span class="cline-any cline-neutral"> </span>
|
|
309
312
|
<span class="cline-any cline-yes">11x</span>
|
|
310
313
|
<span class="cline-any cline-neutral"> </span>
|
|
311
314
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
315
318
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
-
<span class="cline-any cline-yes">
|
|
319
|
+
<span class="cline-any cline-yes">61x</span>
|
|
317
320
|
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-yes">
|
|
321
|
+
<span class="cline-any cline-yes">61x</span>
|
|
319
322
|
<span class="cline-any cline-neutral"> </span>
|
|
320
|
-
<span class="cline-any cline-yes">
|
|
323
|
+
<span class="cline-any cline-yes">61x</span>
|
|
321
324
|
<span class="cline-any cline-neutral"> </span>
|
|
322
325
|
<span class="cline-any cline-neutral"> </span>
|
|
323
326
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -325,29 +328,29 @@
|
|
|
325
328
|
<span class="cline-any cline-neutral"> </span>
|
|
326
329
|
<span class="cline-any cline-neutral"> </span>
|
|
327
330
|
<span class="cline-any cline-neutral"> </span>
|
|
328
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
331
334
|
<span class="cline-any cline-neutral"> </span>
|
|
332
|
-
<span class="cline-any cline-yes">
|
|
335
|
+
<span class="cline-any cline-yes">120x</span>
|
|
333
336
|
<span class="cline-any cline-neutral"> </span>
|
|
334
337
|
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
338
341
|
<span class="cline-any cline-neutral"> </span>
|
|
339
|
-
<span class="cline-any cline-yes">
|
|
342
|
+
<span class="cline-any cline-yes">109x</span>
|
|
340
343
|
<span class="cline-any cline-neutral"> </span>
|
|
341
344
|
<span class="cline-any cline-neutral"> </span>
|
|
342
345
|
<span class="cline-any cline-neutral"> </span>
|
|
343
346
|
<span class="cline-any cline-neutral"> </span>
|
|
344
|
-
<span class="cline-any cline-yes">
|
|
347
|
+
<span class="cline-any cline-yes">61x</span>
|
|
345
348
|
<span class="cline-any cline-neutral"> </span>
|
|
346
|
-
<span class="cline-any cline-yes">
|
|
347
|
-
<span class="cline-any cline-yes">
|
|
348
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
350
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
353
356
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -360,27 +363,30 @@
|
|
|
360
363
|
<span class="cline-any cline-neutral"> </span>
|
|
361
364
|
<span class="cline-any cline-neutral"> </span>
|
|
362
365
|
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-yes">
|
|
366
|
+
<span class="cline-any cline-yes">319x</span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
368
|
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
|
369
373
|
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-yes">319x</span>
|
|
370
375
|
<span class="cline-any cline-neutral"> </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"> </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"> </span>
|
|
375
380
|
<span class="cline-any cline-neutral"> </span>
|
|
376
|
-
<span class="cline-any cline-yes">12x</span>
|
|
377
381
|
<span class="cline-any cline-neutral"> </span>
|
|
382
|
+
<span class="cline-any cline-yes">28x</span>
|
|
378
383
|
<span class="cline-any cline-neutral"> </span>
|
|
379
|
-
<span class="cline-any cline-yes">129x</span>
|
|
380
384
|
<span class="cline-any cline-neutral"> </span>
|
|
381
|
-
<span class="cline-any cline-yes">
|
|
382
|
-
<span class="cline-any cline-
|
|
383
|
-
<span class="cline-any cline-yes">
|
|
385
|
+
<span class="cline-any cline-yes">149x</span>
|
|
386
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
@@ -414,7 +420,7 @@
|
|
|
414
420
|
<span class="cline-any cline-yes">2x</span>
|
|
415
421
|
<span class="cline-any cline-neutral"> </span>
|
|
416
422
|
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
420
426
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -422,20 +428,20 @@
|
|
|
422
428
|
<span class="cline-any cline-yes">1x</span>
|
|
423
429
|
<span class="cline-any cline-neutral"> </span>
|
|
424
430
|
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-yes">
|
|
431
|
+
<span class="cline-any cline-yes">142x</span>
|
|
426
432
|
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-yes">
|
|
433
|
+
<span class="cline-any cline-yes">142x</span>
|
|
428
434
|
<span class="cline-any cline-neutral"> </span>
|
|
429
435
|
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-yes">
|
|
436
|
+
<span class="cline-any cline-yes">142x</span>
|
|
431
437
|
<span class="cline-any cline-neutral"> </span>
|
|
432
438
|
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-yes">
|
|
439
|
+
<span class="cline-any cline-yes">149x</span>
|
|
434
440
|
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-yes">
|
|
441
|
+
<span class="cline-any cline-yes">149x</span>
|
|
436
442
|
<span class="cline-any cline-neutral"> </span>
|
|
437
443
|
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-yes">
|
|
444
|
+
<span class="cline-any cline-yes">149x</span>
|
|
439
445
|
<span class="cline-any cline-neutral"> </span>
|
|
440
446
|
<span class="cline-any cline-neutral"> </span>
|
|
441
447
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -554,6 +560,9 @@ export class WorkflowExecutor<TContext> {
|
|
|
554
560
|
for (const task of newlyReady) {
|
|
555
561
|
this.readyQueue.push(task);
|
|
556
562
|
}
|
|
563
|
+
|
|
564
|
+
// Sort by priority (descending) once after adding new tasks
|
|
565
|
+
this.readyQueue.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
557
566
|
|
|
558
567
|
// Execute ready tasks while respecting concurrency limit
|
|
559
568
|
while (this.readyQueue.length > 0) {
|
|
@@ -634,7 +643,7 @@ export class WorkflowExecutor<TContext> {
|
|
|
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-
|
|
646
|
+
at 2026-01-21T00:01:00.997Z
|
|
638
647
|
</div>
|
|
639
648
|
<script src="../prettify.js"></script>
|
|
640
649
|
<script>
|
|
@@ -202,7 +202,7 @@ export type ListenerMap<TContext> = {
|
|
|
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-
|
|
205
|
+
at 2026-01-21T00:01:00.997Z
|
|
206
206
|
</div>
|
|
207
207
|
<script src="../../prettify.js"></script>
|
|
208
208
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2026-01-
|
|
104
|
+
at 2026-01-21T00:01:00.997Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../prettify.js"></script>
|
|
107
107
|
<script>
|
package/coverage/src/index.html
CHANGED
|
@@ -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'>
|
|
28
|
+
<span class='fraction'>253/253</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'>
|
|
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'>
|
|
42
|
+
<span class='fraction'>47/47</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'>
|
|
49
|
+
<span class='fraction'>249/249</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -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="
|
|
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="
|
|
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="
|
|
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="
|
|
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-
|
|
209
|
+
at 2026-01-21T00:01:00.997Z
|
|
210
210
|
</div>
|
|
211
211
|
<script src="../prettify.js"></script>
|
|
212
212
|
<script>
|
|
@@ -163,7 +163,7 @@ export class DryRunExecutionStrategy<
|
|
|
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-
|
|
166
|
+
at 2026-01-21T00:01:00.997Z
|
|
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"> </span>
|
|
170
170
|
<span class="cline-any cline-neutral"> </span>
|
|
171
171
|
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-yes">
|
|
172
|
+
<span class="cline-any cline-yes">73x</span>
|
|
173
173
|
<span class="cline-any cline-neutral"> </span>
|
|
174
174
|
<span class="cline-any cline-neutral"> </span>
|
|
175
175
|
<span class="cline-any cline-neutral"> </span>
|
|
176
176
|
<span class="cline-any cline-neutral"> </span>
|
|
177
177
|
<span class="cline-any cline-neutral"> </span>
|
|
178
178
|
<span class="cline-any cline-neutral"> </span>
|
|
179
|
-
<span class="cline-any cline-yes">
|
|
180
|
-
<span class="cline-any cline-yes">
|
|
181
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
183
183
|
<span class="cline-any cline-neutral"> </span>
|
|
184
184
|
<span class="cline-any cline-yes">7x</span>
|
|
@@ -358,7 +358,7 @@ export class RetryingExecutionStrategy<
|
|
|
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-
|
|
361
|
+
at 2026-01-21T00:01:00.997Z
|
|
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"> </span>
|
|
114
114
|
<span class="cline-any cline-neutral"> </span>
|
|
115
115
|
<span class="cline-any cline-neutral"> </span>
|
|
116
|
-
<span class="cline-any cline-yes">
|
|
117
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
119
119
|
<span class="cline-any cline-neutral"> </span>
|
|
120
120
|
<span class="cline-any cline-yes">10x</span>
|
|
@@ -175,7 +175,7 @@ export class StandardExecutionStrategy<
|
|
|
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-
|
|
178
|
+
at 2026-01-21T00:01:00.997Z
|
|
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-
|
|
134
|
+
at 2026-01-21T00:01:00.997Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="../../prettify.js"></script>
|
|
137
137
|
<script>
|
package/dist/TaskRunner.js
CHANGED
|
@@ -86,7 +86,7 @@ export class TaskRunner {
|
|
|
86
86
|
* @returns The sanitized string.
|
|
87
87
|
*/
|
|
88
88
|
static sanitizeMermaidId(id) {
|
|
89
|
-
return id.replaceAll(/
|
|
89
|
+
return id.replaceAll(/[^a-zA-Z0-9_-]/g, "_");
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Executes a list of tasks, respecting their dependencies and running
|
package/dist/TaskRunner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../src/TaskRunner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAKlF;;;;GAIG;AACH,MAAM,OAAO,UAAU;IASD;IARZ,QAAQ,GAAG,IAAI,QAAQ,EAAY,CAAC;IACpC,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACrC,iBAAiB,GACvB,IAAI,yBAAyB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;IAEjE;;OAEG;IACH,YAAoB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAEzC;;;;OAIG;IACI,EAAE,CACP,KAAQ,EACR,QAA0C;QAE1C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,GAAG,CACR,KAAQ,EACR,QAA0C;QAE1C,sBAAsB;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,oBAAoB,CAAC,QAAsC;QAChE,sBAAsB;QACtB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAI,KAAoB;QACnD,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;QAEhC,uDAAuD;QACvD,+EAA+E;QAC/E,6EAA6E;QAC7E,0EAA0E;QAC1E,0DAA0D;QAC1D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEhE,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,qDAAqD;YACrD,sBAAsB;YACtB,wFAAwF;YACxF,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC;QAED,YAAY;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpC,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,iBAAiB,CAAC,EAAU;QACzC,OAAO,EAAE,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"TaskRunner.js","sourceRoot":"","sources":["../src/TaskRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/TaskStep.d.ts
CHANGED
|
@@ -16,6 +16,12 @@ export interface TaskStep<TContext> {
|
|
|
16
16
|
* If it returns false (synchronously or asynchronously), the task is skipped.
|
|
17
17
|
*/
|
|
18
18
|
condition?: (context: TContext) => boolean | Promise<boolean>;
|
|
19
|
+
/**
|
|
20
|
+
* Optional priority.
|
|
21
|
+
* Higher values are picked first. Default is 0.
|
|
22
|
+
* Only affects ordering when multiple tasks are ready and concurrency slots are limited.
|
|
23
|
+
*/
|
|
24
|
+
priority?: number;
|
|
19
25
|
/**
|
|
20
26
|
* The core logic of the task.
|
|
21
27
|
* @param context The shared context object, allowing for state to be passed between tasks.
|
package/dist/WorkflowExecutor.js
CHANGED
|
@@ -92,6 +92,8 @@ export class WorkflowExecutor {
|
|
|
92
92
|
for (const task of newlyReady) {
|
|
93
93
|
this.readyQueue.push(task);
|
|
94
94
|
}
|
|
95
|
+
// Sort by priority (descending) once after adding new tasks
|
|
96
|
+
this.readyQueue.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
95
97
|
// Execute ready tasks while respecting concurrency limit
|
|
96
98
|
while (this.readyQueue.length > 0) {
|
|
97
99
|
if (this.concurrency !== undefined &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutor.js","sourceRoot":"","sources":["../src/WorkflowExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowExecutor.js","sourceRoot":"","sources":["../src/WorkflowExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Change: Task Execution Metrics
|
|
2
|
+
|
|
3
|
+
## Why
|
|
4
|
+
|
|
5
|
+
Users currently lack visibility into the performance of individual tasks within a workflow. When a workflow is slow, it is difficult to identify which task is the bottleneck without adding manual logging code to every task. Providing built-in execution metrics (start time, end time, duration) will allow users to optimize their workflows and debug performance issues more effectively.
|
|
6
|
+
|
|
7
|
+
## What Changes
|
|
8
|
+
|
|
9
|
+
- Update `TaskResult` interface to include an optional `metrics` property containing `startTime`, `endTime`, and `duration`.
|
|
10
|
+
- Update `WorkflowExecutor` to capture these timestamps during task execution and populate the `metrics` property.
|
|
11
|
+
- Ensure these metrics are available in the final `TaskResult` map returned by `TaskRunner.execute`.
|
|
12
|
+
|
|
13
|
+
## Impact
|
|
14
|
+
|
|
15
|
+
- Affected specs: `001-generic-task-runner`
|
|
16
|
+
- Affected code: `src/TaskResult.ts`, `src/WorkflowExecutor.ts`
|
|
17
|
+
- **Non-breaking change**: The new property is optional, so existing code consuming `TaskResult` will continue to work.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
## 1. Implementation
|
|
2
|
+
|
|
3
|
+
- [ ] 1.1 Update `TaskResult` interface in `src/TaskResult.ts` to include `metrics`.
|
|
4
|
+
- [ ] 1.2 Update `WorkflowExecutor.ts` to capture start/end times and calculate duration.
|
|
5
|
+
- [ ] 1.3 Update `WorkflowExecutor.ts` to inject metrics into the `TaskResult`.
|
|
6
|
+
- [ ] 1.4 Add unit tests in `tests/TaskMetrics.test.ts` to verify metrics are present and correct.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calmo/task-runner",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "3.8.0",
|
|
4
|
+
"description": "A lightweight, type-safe, and domain-agnostic task orchestration engine. It resolves a Directed Acyclic Graph (DAG) of steps, executes independent tasks in parallel, and manages a shared context across the pipeline.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/thalesraymond/task-runner.git"
|
|
@@ -30,7 +30,18 @@
|
|
|
30
30
|
"path": "git-cz"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
|
-
"keywords": [
|
|
33
|
+
"keywords": [
|
|
34
|
+
"task-runner",
|
|
35
|
+
"workflow",
|
|
36
|
+
"pipeline",
|
|
37
|
+
"orchestration",
|
|
38
|
+
"dag",
|
|
39
|
+
"typescript",
|
|
40
|
+
"parallel-execution",
|
|
41
|
+
"dependency-graph",
|
|
42
|
+
"async",
|
|
43
|
+
"type-safe"
|
|
44
|
+
],
|
|
34
45
|
"author": "",
|
|
35
46
|
"license": "ISC",
|
|
36
47
|
"packageManager": "pnpm@10.28.0",
|
package/src/TaskRunner.ts
CHANGED
|
@@ -113,7 +113,7 @@ export class TaskRunner<TContext> {
|
|
|
113
113
|
* @returns The sanitized string.
|
|
114
114
|
*/
|
|
115
115
|
private static sanitizeMermaidId(id: string): string {
|
|
116
|
-
return id.replaceAll(/
|
|
116
|
+
return id.replaceAll(/[^a-zA-Z0-9_-]/g, "_");
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/**
|
package/src/TaskStep.ts
CHANGED
|
@@ -18,6 +18,13 @@ export interface TaskStep<TContext> {
|
|
|
18
18
|
*/
|
|
19
19
|
condition?: (context: TContext) => boolean | Promise<boolean>;
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Optional priority.
|
|
23
|
+
* Higher values are picked first. Default is 0.
|
|
24
|
+
* Only affects ordering when multiple tasks are ready and concurrency slots are limited.
|
|
25
|
+
*/
|
|
26
|
+
priority?: number;
|
|
27
|
+
|
|
21
28
|
/**
|
|
22
29
|
* The core logic of the task.
|
|
23
30
|
* @param context The shared context object, allowing for state to be passed between tasks.
|
package/src/WorkflowExecutor.ts
CHANGED
|
@@ -114,6 +114,9 @@ export class WorkflowExecutor<TContext> {
|
|
|
114
114
|
this.readyQueue.push(task);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
// Sort by priority (descending) once after adding new tasks
|
|
118
|
+
this.readyQueue.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
119
|
+
|
|
117
120
|
// Execute ready tasks while respecting concurrency limit
|
|
118
121
|
while (this.readyQueue.length > 0) {
|
|
119
122
|
if (
|