@trevonistrevon/pi-loop 0.5.8 → 0.5.9

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 (50) hide show
  1. package/.release-please-manifest.json +3 -0
  2. package/Dockerfile +17 -0
  3. package/coverage/coverage-final.json +25 -24
  4. package/coverage/index.html +42 -42
  5. package/coverage/src/commands/index.html +15 -15
  6. package/coverage/src/commands/loop-command.ts.html +3 -3
  7. package/coverage/src/commands/tasks-command.ts.html +23 -23
  8. package/coverage/src/coordinator.ts.html +3 -3
  9. package/coverage/src/goal-coordinator.ts.html +1 -1
  10. package/coverage/src/goal-reducer.ts.html +1 -1
  11. package/coverage/src/goal-store.ts.html +1 -1
  12. package/coverage/src/goal-verifier.ts.html +1 -1
  13. package/coverage/src/index.html +18 -18
  14. package/coverage/src/index.ts.html +126 -78
  15. package/coverage/src/loop-parse.ts.html +38 -38
  16. package/coverage/src/loop-reducer.ts.html +17 -17
  17. package/coverage/src/monitor-completion-coordinator.ts.html +1 -1
  18. package/coverage/src/monitor-manager.ts.html +16 -16
  19. package/coverage/src/monitor-reducer.ts.html +10 -10
  20. package/coverage/src/notification-reducer.ts.html +11 -11
  21. package/coverage/src/reducer-backed-store.ts.html +49 -49
  22. package/coverage/src/runtime/index.html +35 -20
  23. package/coverage/src/runtime/monitor-ondone-runtime.ts.html +5 -5
  24. package/coverage/src/runtime/notification-runtime.ts.html +25 -25
  25. package/coverage/src/runtime/scope.ts.html +12 -12
  26. package/coverage/src/runtime/session-runtime.ts.html +23 -23
  27. package/coverage/src/runtime/task-backlog-runtime.ts.html +7 -7
  28. package/coverage/src/runtime/task-events.ts.html +208 -0
  29. package/coverage/src/runtime/task-rpc.ts.html +21 -15
  30. package/coverage/src/scheduler.ts.html +25 -25
  31. package/coverage/src/store.ts.html +12 -12
  32. package/coverage/src/task-backlog-coordinator.ts.html +1 -1
  33. package/coverage/src/task-reducer.ts.html +1 -1
  34. package/coverage/src/task-store.ts.html +5 -5
  35. package/coverage/src/tools/index.html +11 -11
  36. package/coverage/src/tools/loop-tools.ts.html +5 -5
  37. package/coverage/src/tools/monitor-tools.ts.html +5 -5
  38. package/coverage/src/tools/native-task-tools.ts.html +41 -20
  39. package/coverage/src/trigger-system.ts.html +8 -8
  40. package/coverage/src/ui/index.html +1 -1
  41. package/coverage/src/ui/widget.ts.html +5 -5
  42. package/dist/index.js +34 -19
  43. package/dist/monitor-manager.d.ts +4 -1
  44. package/dist/monitor-manager.js +5 -3
  45. package/docker-compose.yml +12 -0
  46. package/package.json +1 -1
  47. package/release-please-config.json +9 -0
  48. package/src/index.ts +37 -21
  49. package/src/monitor-manager.ts +11 -3
  50. package/vitest.config.ts +4 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.89% </span>
26
+ <span class="strong">94.48% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>130/137</span>
28
+ <span class='fraction'>137/145</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">88.63% </span>
33
+ <span class="strong">87.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>39/44</span>
35
+ <span class='fraction'>42/48</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">96.55% </span>
40
+ <span class="strong">96.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>56/58</span>
42
+ <span class='fraction'>58/60</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">96.72% </span>
47
+ <span class="strong">96.15% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>118/122</span>
49
+ <span class='fraction'>125/130</span>
50
50
  </div>
51
51
 
52
52
 
@@ -389,7 +389,23 @@
389
389
  <a name='L324'></a><a href='#L324'>324</a>
390
390
  <a name='L325'></a><a href='#L325'>325</a>
391
391
  <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
393
409
  <span class="cline-any cline-neutral">&nbsp;</span>
394
410
  <span class="cline-any cline-neutral">&nbsp;</span>
395
411
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -431,25 +447,29 @@
431
447
  <span class="cline-any cline-neutral">&nbsp;</span>
432
448
  <span class="cline-any cline-yes">3x</span>
433
449
  <span class="cline-any cline-neutral">&nbsp;</span>
434
- <span class="cline-any cline-yes">83x</span>
450
+ <span class="cline-any cline-yes">85x</span>
435
451
  <span class="cline-any cline-neutral">&nbsp;</span>
436
452
  <span class="cline-any cline-neutral">&nbsp;</span>
437
453
  <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-yes">61x</span>
439
- <span class="cline-any cline-yes">61x</span>
440
- <span class="cline-any cline-yes">61x</span>
454
+ <span class="cline-any cline-yes">1x</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
457
  <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">152x</span>
458
+ <span class="cline-any cline-yes">63x</span>
459
+ <span class="cline-any cline-yes">63x</span>
460
+ <span class="cline-any cline-yes">63x</span>
443
461
  <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-yes">61x</span>
445
- <span class="cline-any cline-yes">61x</span>
462
+ <span class="cline-any cline-yes">155x</span>
446
463
  <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-yes">63x</span>
465
+ <span class="cline-any cline-yes">63x</span>
447
466
  <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">61x</span>
449
467
  <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-yes">63x</span>
450
469
  <span class="cline-any cline-neutral">&nbsp;</span>
451
- <span class="cline-any cline-yes">61x</span>
452
- <span class="cline-any cline-yes">61x</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-yes">63x</span>
472
+ <span class="cline-any cline-yes">63x</span>
453
473
  <span class="cline-any cline-yes">156x</span>
454
474
  <span class="cline-any cline-yes">234x</span>
455
475
  <span class="cline-any cline-yes">171x</span>
@@ -462,21 +482,21 @@
462
482
  <span class="cline-any cline-yes">156x</span>
463
483
  <span class="cline-any cline-neutral">&nbsp;</span>
464
484
  <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-yes">61x</span>
466
- <span class="cline-any cline-yes">61x</span>
485
+ <span class="cline-any cline-yes">63x</span>
486
+ <span class="cline-any cline-yes">63x</span>
467
487
  <span class="cline-any cline-neutral">&nbsp;</span>
468
488
  <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-yes">61x</span>
489
+ <span class="cline-any cline-yes">63x</span>
470
490
  <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-yes">61x</span>
491
+ <span class="cline-any cline-yes">63x</span>
472
492
  <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-yes">61x</span>
493
+ <span class="cline-any cline-yes">63x</span>
474
494
  <span class="cline-any cline-neutral">&nbsp;</span>
475
- <span class="cline-any cline-yes">39x</span>
495
+ <span class="cline-any cline-yes">45x</span>
476
496
  <span class="cline-any cline-neutral">&nbsp;</span>
477
497
  <span class="cline-any cline-yes">2x</span>
478
498
  <span class="cline-any cline-neutral">&nbsp;</span>
479
- <span class="cline-any cline-yes">36x</span>
499
+ <span class="cline-any cline-yes">42x</span>
480
500
  <span class="cline-any cline-neutral">&nbsp;</span>
481
501
  <span class="cline-any cline-yes">1x</span>
482
502
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -487,14 +507,14 @@
487
507
  <span class="cline-any cline-neutral">&nbsp;</span>
488
508
  <span class="cline-any cline-neutral">&nbsp;</span>
489
509
  <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-yes">61x</span>
491
- <span class="cline-any cline-yes">61x</span>
510
+ <span class="cline-any cline-yes">63x</span>
511
+ <span class="cline-any cline-yes">63x</span>
492
512
  <span class="cline-any cline-neutral">&nbsp;</span>
493
- <span class="cline-any cline-yes">61x</span>
494
- <span class="cline-any cline-yes">61x</span>
495
- <span class="cline-any cline-yes">61x</span>
513
+ <span class="cline-any cline-yes">63x</span>
514
+ <span class="cline-any cline-yes">63x</span>
515
+ <span class="cline-any cline-yes">63x</span>
496
516
  <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">61x</span>
517
+ <span class="cline-any cline-yes">63x</span>
498
518
  <span class="cline-any cline-neutral">&nbsp;</span>
499
519
  <span class="cline-any cline-yes">11x</span>
500
520
  <span class="cline-any cline-yes">2x</span>
@@ -502,7 +522,7 @@
502
522
  <span class="cline-any cline-neutral">&nbsp;</span>
503
523
  <span class="cline-any cline-neutral">&nbsp;</span>
504
524
  <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-yes">61x</span>
525
+ <span class="cline-any cline-yes">63x</span>
506
526
  <span class="cline-any cline-neutral">&nbsp;</span>
507
527
  <span class="cline-any cline-yes">6x</span>
508
528
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -542,7 +562,7 @@
542
562
  <span class="cline-any cline-yes">9x</span>
543
563
  <span class="cline-any cline-neutral">&nbsp;</span>
544
564
  <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-yes">61x</span>
565
+ <span class="cline-any cline-yes">63x</span>
546
566
  <span class="cline-any cline-yes">41x</span>
547
567
  <span class="cline-any cline-yes">6x</span>
548
568
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -563,30 +583,30 @@
563
583
  <span class="cline-any cline-neutral">&nbsp;</span>
564
584
  <span class="cline-any cline-neutral">&nbsp;</span>
565
585
  <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-yes">61x</span>
567
- <span class="cline-any cline-yes">61x</span>
568
- <span class="cline-any cline-yes">61x</span>
569
- <span class="cline-any cline-yes">61x</span>
586
+ <span class="cline-any cline-yes">63x</span>
587
+ <span class="cline-any cline-yes">63x</span>
588
+ <span class="cline-any cline-yes">63x</span>
589
+ <span class="cline-any cline-yes">63x</span>
570
590
  <span class="cline-any cline-neutral">&nbsp;</span>
571
591
  <span class="cline-any cline-neutral">&nbsp;</span>
572
592
  <span class="cline-any cline-neutral">&nbsp;</span>
573
593
  <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-yes">15x</span>
594
+ <span class="cline-any cline-yes">16x</span>
575
595
  <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-yes">15x</span>
596
+ <span class="cline-any cline-yes">16x</span>
577
597
  <span class="cline-any cline-no">&nbsp;</span>
578
598
  <span class="cline-any cline-no">&nbsp;</span>
579
599
  <span class="cline-any cline-no">&nbsp;</span>
580
600
  <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-yes">15x</span>
601
+ <span class="cline-any cline-yes">16x</span>
582
602
  <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">15x</span>
603
+ <span class="cline-any cline-yes">16x</span>
584
604
  <span class="cline-any cline-yes">1x</span>
585
605
  <span class="cline-any cline-yes">1x</span>
586
606
  <span class="cline-any cline-neutral">&nbsp;</span>
587
607
  <span class="cline-any cline-neutral">&nbsp;</span>
588
608
  <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-yes">15x</span>
609
+ <span class="cline-any cline-yes">16x</span>
590
610
  <span class="cline-any cline-neutral">&nbsp;</span>
591
611
  <span class="cline-any cline-neutral">&nbsp;</span>
592
612
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -602,7 +622,7 @@
602
622
  <span class="cline-any cline-neutral">&nbsp;</span>
603
623
  <span class="cline-any cline-neutral">&nbsp;</span>
604
624
  <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">61x</span>
625
+ <span class="cline-any cline-yes">63x</span>
606
626
  <span class="cline-any cline-neutral">&nbsp;</span>
607
627
  <span class="cline-any cline-yes">51x</span>
608
628
  <span class="cline-any cline-yes">46x</span>
@@ -635,10 +655,10 @@
635
655
  <span class="cline-any cline-neutral">&nbsp;</span>
636
656
  <span class="cline-any cline-neutral">&nbsp;</span>
637
657
  <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">61x</span>
639
- <span class="cline-any cline-yes">33x</span>
658
+ <span class="cline-any cline-yes">63x</span>
659
+ <span class="cline-any cline-yes">34x</span>
640
660
  <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-yes">33x</span>
661
+ <span class="cline-any cline-yes">34x</span>
642
662
  <span class="cline-any cline-yes">4x</span>
643
663
  <span class="cline-any cline-yes">4x</span>
644
664
  <span class="cline-any cline-yes">1x</span>
@@ -647,10 +667,10 @@
647
667
  <span class="cline-any cline-neutral">&nbsp;</span>
648
668
  <span class="cline-any cline-neutral">&nbsp;</span>
649
669
  <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">32x</span>
670
+ <span class="cline-any cline-yes">33x</span>
651
671
  <span class="cline-any cline-neutral">&nbsp;</span>
652
672
  <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">61x</span>
673
+ <span class="cline-any cline-yes">63x</span>
654
674
  <span class="cline-any cline-neutral">&nbsp;</span>
655
675
  <span class="cline-any cline-yes">38x</span>
656
676
  <span class="cline-any cline-yes">21x</span>
@@ -667,7 +687,7 @@
667
687
  <span class="cline-any cline-yes">7x</span>
668
688
  <span class="cline-any cline-neutral">&nbsp;</span>
669
689
  <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-yes">61x</span>
690
+ <span class="cline-any cline-yes">63x</span>
671
691
  <span class="cline-any cline-neutral">&nbsp;</span>
672
692
  <span class="cline-any cline-yes">7x</span>
673
693
  <span class="cline-any cline-yes">29x</span>
@@ -677,7 +697,7 @@
677
697
  <span class="cline-any cline-neutral">&nbsp;</span>
678
698
  <span class="cline-any cline-neutral">&nbsp;</span>
679
699
  <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-yes">61x</span>
700
+ <span class="cline-any cline-yes">63x</span>
681
701
  <span class="cline-any cline-neutral">&nbsp;</span>
682
702
  <span class="cline-any cline-yes">1x</span>
683
703
  <span class="cline-any cline-yes">1x</span>
@@ -688,13 +708,12 @@
688
708
  <span class="cline-any cline-neutral">&nbsp;</span>
689
709
  <span class="cline-any cline-neutral">&nbsp;</span>
690
710
  <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-yes">61x</span>
711
+ <span class="cline-any cline-yes">63x</span>
712
+ <span class="cline-any cline-yes">47x</span>
692
713
  <span class="cline-any cline-yes">46x</span>
693
- <span class="cline-any cline-yes">45x</span>
694
- <span class="cline-any cline-yes">45x</span>
695
- <span class="cline-any cline-yes">45x</span>
696
714
  <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-yes">45x</span>
715
+ <span class="cline-any cline-yes">46x</span>
716
+ <span class="cline-any cline-yes">46x</span>
698
717
  <span class="cline-any cline-neutral">&nbsp;</span>
699
718
  <span class="cline-any cline-yes">2x</span>
700
719
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -703,7 +722,7 @@
703
722
  <span class="cline-any cline-neutral">&nbsp;</span>
704
723
  <span class="cline-any cline-neutral">&nbsp;</span>
705
724
  <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-yes">45x</span>
725
+ <span class="cline-any cline-yes">46x</span>
707
726
  <span class="cline-any cline-neutral">&nbsp;</span>
708
727
  <span class="cline-any cline-neutral">&nbsp;</span>
709
728
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -712,7 +731,20 @@
712
731
  <span class="cline-any cline-neutral">&nbsp;</span>
713
732
  <span class="cline-any cline-neutral">&nbsp;</span>
714
733
  <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-yes">1x</span>
735
+ <span class="cline-any cline-yes">1x</span>
736
+ <span class="cline-any cline-yes">1x</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-yes">45x</span>
715
742
  <span class="cline-any cline-yes">45x</span>
743
+ <span class="cline-any cline-yes">45x</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-yes">63x</span>
747
+ <span class="cline-any cline-yes">3x</span>
716
748
  <span class="cline-any cline-neutral">&nbsp;</span>
717
749
  <span class="cline-any cline-neutral">&nbsp;</span>
718
750
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
@@ -760,6 +792,10 @@ function debug(...args: unknown[]) {
760
792
  <span class="missing-if-branch" title="if path not taken" >I</span>if (DEBUG) <span class="cstat-no" title="statement not covered" >console.error("[pi-loop]", ...args);</span>
761
793
  }
762
794
  &nbsp;
795
+ function isStaleExtensionContextError(error: unknown): boolean {
796
+ return error instanceof Error &amp;&amp; error.message.includes("extension ctx is stale");
797
+ }
798
+ &nbsp;
763
799
  export default function (pi: ExtensionAPI) {
764
800
  const piLoopEnv = process.env.PI_LOOP;
765
801
  const piLoopScope = process.env.PI_LOOP_SCOPE as "memory" | "session" | "project" | undefined;
@@ -1014,32 +1050,44 @@ export default function (pi: ExtensionAPI) {
1014
1050
  &nbsp;
1015
1051
  // ── Native task tools (only when pi-tasks is absent) ──
1016
1052
  &nbsp;
1017
- setTimeout(async () =&gt; {
1053
+ const nativeTaskFallbackTimer = setTimeout(() =&gt; {
1018
1054
  if (tasksAvailable || nativeTasksRegistered) return;
1019
- nativeTaskStore = new TaskStore(resolveTaskStorePath(getScopeOptions(), _sessionId));
1020
- nativeTasksRegistered = true;
1021
- const taskStore = nativeTaskStore;
1055
+ const taskStore = new TaskStore(resolveTaskStorePath(getScopeOptions(), _sessionId));
1022
1056
  &nbsp;
1023
- registerTasksCommand({
1024
- pi,
1025
- getNativeTaskStore: () =&gt; nativeTaskStore,
1026
- evaluateTaskBacklog,
1027
- updateWidget: () =&gt; {
1028
- widget.update();
1029
- },
1030
- });
1057
+ try {
1058
+ registerTasksCommand({
1059
+ pi,
1060
+ getNativeTaskStore: () =&gt; nativeTaskStore,
1061
+ evaluateTaskBacklog,
1062
+ updateWidget: () =&gt; {
1063
+ widget.update();
1064
+ },
1065
+ });
1031
1066
  &nbsp;
1032
- registerNativeTaskTools({
1033
- pi,
1034
- taskStore,
1035
- evaluateTaskBacklog,
1036
- updateWidget: () =&gt; {
1037
- widget.update();
1038
- },
1039
- });
1067
+ registerNativeTaskTools({
1068
+ pi,
1069
+ taskStore,
1070
+ evaluateTaskBacklog,
1071
+ updateWidget: () =&gt; {
1072
+ widget.update();
1073
+ },
1074
+ });
1075
+ } catch (error) {
1076
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (isStaleExtensionContextError(error)) {
1077
+ debug("native task fallback skipped: extension context went stale");
1078
+ return;
1079
+ }
1080
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
1081
+ }
1040
1082
  &nbsp;
1083
+ nativeTaskStore = taskStore;
1084
+ nativeTasksRegistered = true;
1041
1085
  debug("native task tools registered (pi-tasks not detected)");
1042
1086
  }, 6000);
1087
+ &nbsp;
1088
+ pi.on("session_shutdown", () =&gt; {
1089
+ clearTimeout(nativeTaskFallbackTimer);
1090
+ });
1043
1091
  }
1044
1092
  &nbsp;</pre></td></tr></table></pre>
1045
1093
 
@@ -1048,7 +1096,7 @@ export default function (pi: ExtensionAPI) {
1048
1096
  <div class='footer quiet pad2 space-top1 center small'>
1049
1097
  Code coverage generated by
1050
1098
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1051
- at 2026-06-19T00:56:38.236Z
1099
+ at 2026-06-23T21:49:18.784Z
1052
1100
  </div>
1053
1101
  <script src="../prettify.js"></script>
1054
1102
  <script>
@@ -305,44 +305,44 @@
305
305
  <span class="cline-any cline-neutral">&nbsp;</span>
306
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-yes">43x</span>
309
+ <span class="cline-any cline-yes">43x</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">42x</span>
308
312
  <span class="cline-any cline-yes">42x</span>
309
313
  <span class="cline-any cline-yes">42x</span>
310
314
  <span class="cline-any cline-neutral">&nbsp;</span>
311
- <span class="cline-any cline-yes">41x</span>
312
- <span class="cline-any cline-yes">41x</span>
313
- <span class="cline-any cline-yes">41x</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-yes">41x</span>
316
- <span class="cline-any cline-yes">1302x</span>
315
+ <span class="cline-any cline-yes">42x</span>
316
+ <span class="cline-any cline-yes">1640x</span>
317
317
  <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-yes">1302x</span>
319
- <span class="cline-any cline-yes">55x</span>
320
- <span class="cline-any cline-yes">41x</span>
321
- <span class="cline-any cline-yes">41x</span>
322
- <span class="cline-any cline-yes">41x</span>
318
+ <span class="cline-any cline-yes">1640x</span>
319
+ <span class="cline-any cline-yes">62x</span>
320
+ <span class="cline-any cline-yes">42x</span>
321
+ <span class="cline-any cline-yes">42x</span>
322
+ <span class="cline-any cline-yes">42x</span>
323
323
  <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-yes">41x</span>
324
+ <span class="cline-any cline-yes">42x</span>
325
325
  <span class="cline-any cline-neutral">&nbsp;</span>
326
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
327
  <span class="cline-any cline-no">&nbsp;</span>
328
328
  <span class="cline-any cline-neutral">&nbsp;</span>
329
329
  <span class="cline-any cline-neutral">&nbsp;</span>
330
330
  <span class="cline-any cline-neutral">&nbsp;</span>
331
- <span class="cline-any cline-yes">1480x</span>
331
+ <span class="cline-any cline-yes">1828x</span>
332
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
- <span class="cline-any cline-yes">1322x</span>
334
- <span class="cline-any cline-yes">1322x</span>
335
- <span class="cline-any cline-yes">1362x</span>
333
+ <span class="cline-any cline-yes">1666x</span>
334
+ <span class="cline-any cline-yes">1666x</span>
335
+ <span class="cline-any cline-yes">1706x</span>
336
336
  <span class="cline-any cline-neutral">&nbsp;</span>
337
- <span class="cline-any cline-yes">1362x</span>
338
- <span class="cline-any cline-yes">133x</span>
339
- <span class="cline-any cline-yes">133x</span>
337
+ <span class="cline-any cline-yes">1706x</span>
338
+ <span class="cline-any cline-yes">97x</span>
339
+ <span class="cline-any cline-yes">97x</span>
340
340
  <span class="cline-any cline-neutral">&nbsp;</span>
341
341
  <span class="cline-any cline-neutral">&nbsp;</span>
342
342
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-yes">133x</span>
344
- <span class="cline-any cline-yes">133x</span>
345
- <span class="cline-any cline-yes">133x</span>
343
+ <span class="cline-any cline-yes">97x</span>
344
+ <span class="cline-any cline-yes">97x</span>
345
+ <span class="cline-any cline-yes">97x</span>
346
346
  <span class="cline-any cline-no">&nbsp;</span>
347
347
  <span class="cline-any cline-no">&nbsp;</span>
348
348
  <span class="cline-any cline-no">&nbsp;</span>
@@ -351,15 +351,15 @@
351
351
  <span class="cline-any cline-no">&nbsp;</span>
352
352
  <span class="cline-any cline-neutral">&nbsp;</span>
353
353
  <span class="cline-any cline-neutral">&nbsp;</span>
354
- <span class="cline-any cline-yes">133x</span>
355
- <span class="cline-any cline-yes">133x</span>
356
- <span class="cline-any cline-yes">1253x</span>
357
- <span class="cline-any cline-yes">1221x</span>
354
+ <span class="cline-any cline-yes">97x</span>
355
+ <span class="cline-any cline-yes">97x</span>
356
+ <span class="cline-any cline-yes">1011x</span>
357
+ <span class="cline-any cline-yes">978x</span>
358
358
  <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">101x</span>
359
+ <span class="cline-any cline-yes">64x</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
361
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">1229x</span>
362
+ <span class="cline-any cline-yes">1609x</span>
363
363
  <span class="cline-any cline-yes">10x</span>
364
364
  <span class="cline-any cline-yes">10x</span>
365
365
  <span class="cline-any cline-yes">10x</span>
@@ -367,22 +367,22 @@
367
367
  <span class="cline-any cline-yes">8x</span>
368
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
369
  <span class="cline-any cline-neutral">&nbsp;</span>
370
- <span class="cline-any cline-yes">1219x</span>
370
+ <span class="cline-any cline-yes">1599x</span>
371
371
  <span class="cline-any cline-neutral">&nbsp;</span>
372
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
- <span class="cline-any cline-yes">1261x</span>
373
+ <span class="cline-any cline-yes">1598x</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
376
  <span class="cline-any cline-neutral">&nbsp;</span>
377
- <span class="cline-any cline-yes">32x</span>
378
- <span class="cline-any cline-yes">32x</span>
379
- <span class="cline-any cline-yes">32x</span>
380
- <span class="cline-any cline-yes">32x</span>
377
+ <span class="cline-any cline-yes">33x</span>
378
+ <span class="cline-any cline-yes">33x</span>
379
+ <span class="cline-any cline-yes">33x</span>
380
+ <span class="cline-any cline-yes">33x</span>
381
381
  <span class="cline-any cline-neutral">&nbsp;</span>
382
- <span class="cline-any cline-yes">32x</span>
382
+ <span class="cline-any cline-yes">33x</span>
383
383
  <span class="cline-any cline-neutral">&nbsp;</span>
384
- <span class="cline-any cline-yes">32x</span>
385
- <span class="cline-any cline-yes">23x</span>
384
+ <span class="cline-any cline-yes">33x</span>
385
+ <span class="cline-any cline-yes">24x</span>
386
386
  <span class="cline-any cline-neutral">&nbsp;</span>
387
387
  <span class="cline-any cline-yes">9x</span>
388
388
  <span class="cline-any cline-no">&nbsp;</span>
@@ -559,7 +559,7 @@ export function computeJitter(taskId: string, recurring: boolean, scheduleMinute
559
559
  <div class='footer quiet pad2 space-top1 center small'>
560
560
  Code coverage generated by
561
561
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
562
- at 2026-06-19T00:56:38.236Z
562
+ at 2026-06-23T21:49:18.784Z
563
563
  </div>
564
564
  <script src="../prettify.js"></script>
565
565
  <script>
@@ -232,7 +232,7 @@
232
232
  <span class="cline-any cline-neutral">&nbsp;</span>
233
233
  <span class="cline-any cline-neutral">&nbsp;</span>
234
234
  <span class="cline-any cline-neutral">&nbsp;</span>
235
- <span class="cline-any cline-yes">30x</span>
235
+ <span class="cline-any cline-yes">31x</span>
236
236
  <span class="cline-any cline-neutral">&nbsp;</span>
237
237
  <span class="cline-any cline-neutral">&nbsp;</span>
238
238
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -305,14 +305,14 @@
305
305
  <span class="cline-any cline-neutral">&nbsp;</span>
306
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
307
  <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-yes">199x</span>
308
+ <span class="cline-any cline-yes">200x</span>
309
309
  <span class="cline-any cline-neutral">&nbsp;</span>
310
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
311
  <span class="cline-any cline-neutral">&nbsp;</span>
312
312
  <span class="cline-any cline-neutral">&nbsp;</span>
313
313
  <span class="cline-any cline-neutral">&nbsp;</span>
314
314
  <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-yes">200x</span>
315
+ <span class="cline-any cline-yes">201x</span>
316
316
  <span class="cline-any cline-yes">130x</span>
317
317
  <span class="cline-any cline-yes">130x</span>
318
318
  <span class="cline-any cline-yes">130x</span>
@@ -337,11 +337,11 @@
337
337
  <span class="cline-any cline-neutral">&nbsp;</span>
338
338
  <span class="cline-any cline-neutral">&nbsp;</span>
339
339
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-yes">70x</span>
341
- <span class="cline-any cline-yes">70x</span>
342
- <span class="cline-any cline-yes">70x</span>
340
+ <span class="cline-any cline-yes">71x</span>
341
+ <span class="cline-any cline-yes">71x</span>
342
+ <span class="cline-any cline-yes">71x</span>
343
343
  <span class="cline-any cline-neutral">&nbsp;</span>
344
- <span class="cline-any cline-yes">69x</span>
344
+ <span class="cline-any cline-yes">70x</span>
345
345
  <span class="cline-any cline-neutral">&nbsp;</span>
346
346
  <span class="cline-any cline-neutral">&nbsp;</span>
347
347
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -355,26 +355,26 @@
355
355
  <span class="cline-any cline-neutral">&nbsp;</span>
356
356
  <span class="cline-any cline-neutral">&nbsp;</span>
357
357
  <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-yes">36x</span>
359
- <span class="cline-any cline-yes">36x</span>
358
+ <span class="cline-any cline-yes">37x</span>
359
+ <span class="cline-any cline-yes">37x</span>
360
360
  <span class="cline-any cline-neutral">&nbsp;</span>
361
- <span class="cline-any cline-yes">36x</span>
361
+ <span class="cline-any cline-yes">37x</span>
362
362
  <span class="cline-any cline-yes">7x</span>
363
363
  <span class="cline-any cline-yes">7x</span>
364
364
  <span class="cline-any cline-neutral">&nbsp;</span>
365
365
  <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">36x</span>
366
+ <span class="cline-any cline-yes">37x</span>
367
367
  <span class="cline-any cline-yes">2x</span>
368
368
  <span class="cline-any cline-yes">2x</span>
369
369
  <span class="cline-any cline-neutral">&nbsp;</span>
370
370
  <span class="cline-any cline-neutral">&nbsp;</span>
371
- <span class="cline-any cline-yes">36x</span>
372
- <span class="cline-any cline-yes">27x</span>
373
- <span class="cline-any cline-yes">27x</span>
371
+ <span class="cline-any cline-yes">37x</span>
372
+ <span class="cline-any cline-yes">28x</span>
373
+ <span class="cline-any cline-yes">28x</span>
374
374
  <span class="cline-any cline-neutral">&nbsp;</span>
375
375
  <span class="cline-any cline-neutral">&nbsp;</span>
376
- <span class="cline-any cline-yes">36x</span>
377
- <span class="cline-any cline-yes">36x</span>
376
+ <span class="cline-any cline-yes">37x</span>
377
+ <span class="cline-any cline-yes">37x</span>
378
378
  <span class="cline-any cline-neutral">&nbsp;</span>
379
379
  <span class="cline-any cline-neutral">&nbsp;</span>
380
380
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -544,7 +544,7 @@ export function reduceLoopState(state: LoopReducerState, event: LoopReducerEvent
544
544
  <div class='footer quiet pad2 space-top1 center small'>
545
545
  Code coverage generated by
546
546
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
547
- at 2026-06-19T00:56:38.236Z
547
+ at 2026-06-23T21:49:18.784Z
548
548
  </div>
549
549
  <script src="../prettify.js"></script>
550
550
  <script>
@@ -142,7 +142,7 @@ export function reduceMonitorCompletionEvent(event: MonitorCompletionEvent): Mon
142
142
  <div class='footer quiet pad2 space-top1 center small'>
143
143
  Code coverage generated by
144
144
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
145
- at 2026-06-19T00:56:38.236Z
145
+ at 2026-06-23T21:49:18.784Z
146
146
  </div>
147
147
  <script src="../prettify.js"></script>
148
148
  <script>