@exaudeus/workrail 3.75.0 → 3.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/console-ui/assets/index-D9pYbwS0.js +28 -0
  2. package/dist/console-ui/index.html +1 -1
  3. package/dist/coordinators/adaptive-pipeline.d.ts +8 -0
  4. package/dist/coordinators/context-assembly.d.ts +4 -0
  5. package/dist/coordinators/context-assembly.js +156 -0
  6. package/dist/coordinators/modes/full-pipeline.d.ts +1 -1
  7. package/dist/coordinators/modes/full-pipeline.js +140 -27
  8. package/dist/coordinators/modes/implement-shared.d.ts +3 -2
  9. package/dist/coordinators/modes/implement-shared.js +16 -6
  10. package/dist/coordinators/modes/implement.js +49 -3
  11. package/dist/coordinators/pipeline-run-context.d.ts +1811 -0
  12. package/dist/coordinators/pipeline-run-context.js +114 -0
  13. package/dist/daemon/context-loader.d.ts +1 -1
  14. package/dist/daemon/core/agent-client.d.ts +7 -0
  15. package/dist/daemon/core/agent-client.js +31 -0
  16. package/dist/daemon/core/index.d.ts +6 -0
  17. package/dist/daemon/core/index.js +19 -0
  18. package/dist/daemon/core/session-context.d.ts +14 -0
  19. package/dist/daemon/core/session-context.js +24 -0
  20. package/dist/daemon/core/session-result.d.ts +10 -0
  21. package/dist/daemon/core/session-result.js +92 -0
  22. package/dist/daemon/core/system-prompt.d.ts +6 -0
  23. package/dist/daemon/core/system-prompt.js +151 -0
  24. package/dist/daemon/io/conversation-log.d.ts +2 -0
  25. package/dist/daemon/io/conversation-log.js +45 -0
  26. package/dist/daemon/io/execution-stats.d.ts +7 -0
  27. package/dist/daemon/io/execution-stats.js +86 -0
  28. package/dist/daemon/io/index.d.ts +5 -0
  29. package/dist/daemon/io/index.js +24 -0
  30. package/dist/daemon/io/session-notes-loader.d.ts +4 -0
  31. package/dist/daemon/io/session-notes-loader.js +45 -0
  32. package/dist/daemon/io/soul-loader.d.ts +3 -0
  33. package/dist/daemon/io/soul-loader.js +68 -0
  34. package/dist/daemon/io/workspace-context-loader.d.ts +17 -0
  35. package/dist/daemon/io/workspace-context-loader.js +137 -0
  36. package/dist/daemon/runner/agent-loop-runner.d.ts +28 -0
  37. package/dist/daemon/runner/agent-loop-runner.js +250 -0
  38. package/dist/daemon/runner/construct-tools.d.ts +5 -0
  39. package/dist/daemon/runner/construct-tools.js +30 -0
  40. package/dist/daemon/runner/finalize-session.d.ts +3 -0
  41. package/dist/daemon/runner/finalize-session.js +75 -0
  42. package/dist/daemon/runner/index.d.ts +8 -0
  43. package/dist/daemon/runner/index.js +18 -0
  44. package/dist/daemon/runner/pre-agent-session.d.ts +7 -0
  45. package/dist/daemon/runner/pre-agent-session.js +227 -0
  46. package/dist/daemon/runner/runner-types.d.ts +73 -0
  47. package/dist/daemon/runner/runner-types.js +39 -0
  48. package/dist/daemon/runner/tool-schemas.d.ts +1 -0
  49. package/dist/daemon/runner/tool-schemas.js +151 -0
  50. package/dist/daemon/session-scope.d.ts +1 -1
  51. package/dist/daemon/startup-recovery.d.ts +20 -0
  52. package/dist/daemon/startup-recovery.js +323 -0
  53. package/dist/daemon/state/index.d.ts +6 -0
  54. package/dist/daemon/state/index.js +14 -0
  55. package/dist/daemon/state/session-state.d.ts +23 -0
  56. package/dist/daemon/state/session-state.js +44 -0
  57. package/dist/daemon/state/stuck-detection.d.ts +22 -0
  58. package/dist/daemon/state/stuck-detection.js +25 -0
  59. package/dist/daemon/state/terminal-signal.d.ts +9 -0
  60. package/dist/daemon/state/terminal-signal.js +10 -0
  61. package/dist/daemon/tools/file-tools.d.ts +1 -1
  62. package/dist/daemon/turn-end/detect-stuck.d.ts +2 -2
  63. package/dist/daemon/turn-end/detect-stuck.js +2 -2
  64. package/dist/daemon/turn-end/step-injector.d.ts +1 -1
  65. package/dist/daemon/types.d.ts +105 -0
  66. package/dist/daemon/types.js +11 -0
  67. package/dist/daemon/workflow-enricher.d.ts +16 -0
  68. package/dist/daemon/workflow-enricher.js +58 -0
  69. package/dist/daemon/workflow-runner.d.ts +13 -277
  70. package/dist/daemon/workflow-runner.js +63 -1421
  71. package/dist/manifest.json +280 -56
  72. package/dist/trigger/coordinator-deps.d.ts +1 -1
  73. package/dist/trigger/coordinator-deps.js +131 -0
  74. package/dist/trigger/delivery-client.d.ts +1 -1
  75. package/dist/trigger/delivery-pipeline.d.ts +1 -1
  76. package/dist/trigger/notification-service.d.ts +1 -1
  77. package/dist/trigger/trigger-listener.js +6 -2
  78. package/dist/trigger/trigger-router.d.ts +2 -2
  79. package/dist/v2/durable-core/domain/artifact-contract-validator.js +99 -0
  80. package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.d.ts +39 -0
  81. package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.js +10 -1
  82. package/dist/v2/durable-core/schemas/artifacts/index.d.ts +2 -1
  83. package/dist/v2/durable-core/schemas/artifacts/index.js +12 -1
  84. package/dist/v2/durable-core/schemas/artifacts/phase-handoff.d.ts +89 -0
  85. package/dist/v2/durable-core/schemas/artifacts/phase-handoff.js +56 -0
  86. package/docs/authoring-v2.md +12 -0
  87. package/docs/ideas/backlog.md +639 -25
  88. package/docs/reference/worktrain-daemon-invariants.md +33 -49
  89. package/docs/vision.md +5 -15
  90. package/package.json +2 -2
  91. package/workflows/coding-task-workflow-agentic.json +9 -6
  92. package/workflows/mr-review-workflow.agentic.v2.json +2 -2
  93. package/workflows/wr.discovery.json +2 -1
  94. package/workflows/wr.shaping.json +7 -4
  95. package/dist/console-ui/assets/index-BvBihscd.js +0 -28
@@ -473,16 +473,16 @@
473
473
  "sha256": "5fe866e54f796975dec5d8ba9983aefd86074db212d3fccd64eed04bc9f0b3da",
474
474
  "bytes": 8011
475
475
  },
476
- "console-ui/assets/index-BvBihscd.js": {
477
- "sha256": "58bbe4f1249aa4987c65367e6675d7081da84f69d0877b0922e21bc9fcd28ce0",
478
- "bytes": 768234
476
+ "console-ui/assets/index-D9pYbwS0.js": {
477
+ "sha256": "63645cec957a21bdf1b7d6cf3e5a47283589c0c614cc48c2109f427561299bdb",
478
+ "bytes": 767524
479
479
  },
480
480
  "console-ui/assets/index-DHrKiMCf.css": {
481
481
  "sha256": "40290b50e21ee7e82433efe13b1aa31c1ea608bd057a5c4e324982f284bc928b",
482
482
  "bytes": 60673
483
483
  },
484
484
  "console-ui/index.html": {
485
- "sha256": "b441d6137262e5fbe4673e515579928db3e073d6fbd1fa1dceedb20c3ac48d25",
485
+ "sha256": "c3550015382c0eff7fbb459fa26334c081bb94d61e774cb78996d4575847f144",
486
486
  "bytes": 417
487
487
  },
488
488
  "console/standalone-console.d.ts": {
@@ -526,36 +526,44 @@
526
526
  "bytes": 77
527
527
  },
528
528
  "coordinators/adaptive-pipeline.d.ts": {
529
- "sha256": "8f1e9ee8e14fe847d57ab65d75dab48b08afd376af1fb70c65f760f4a26ff855",
530
- "bytes": 2811
529
+ "sha256": "1ab143720fd019202368715d774a045b55cf953827571570d1396a62d9cacda0",
530
+ "bytes": 3512
531
531
  },
532
532
  "coordinators/adaptive-pipeline.js": {
533
533
  "sha256": "afac18f8fc5fd75bc5ddd32cb3aaf8e02c22210c4ece001a4dd3c69ac2c10c8a",
534
534
  "bytes": 4588
535
535
  },
536
+ "coordinators/context-assembly.d.ts": {
537
+ "sha256": "ce8e19d9c2902329a96d2447d7d7c6489bafdafc9c8cfdb23423994524640d14",
538
+ "bytes": 466
539
+ },
540
+ "coordinators/context-assembly.js": {
541
+ "sha256": "6f8f3480b4cd42af02e279d9a67587eb0ce55b32611a94ce8dccf57a6589b71d",
542
+ "bytes": 7937
543
+ },
536
544
  "coordinators/modes/full-pipeline.d.ts": {
537
- "sha256": "94735f14cbacab0c37f4474b636646b7bd6b9e3b2304181f14b3939157ebe3dd",
538
- "bytes": 462
545
+ "sha256": "88230513db280be8b63106fef82a408499ba16a7acfbe5fa69f86af0a0c3ae04",
546
+ "bytes": 450
539
547
  },
540
548
  "coordinators/modes/full-pipeline.js": {
541
- "sha256": "040b412e33ecb46dcc27c9968c9c0cc5d416880a03dab6f93ed09b8f447c21aa",
542
- "bytes": 13161
549
+ "sha256": "99dc73260d66bb5c9e5c8f477467f5f934aad81b171d0e1cbe661109e939f9e7",
550
+ "bytes": 20365
543
551
  },
544
552
  "coordinators/modes/implement-shared.d.ts": {
545
- "sha256": "fbad9d91d84d2112b273175618686489a7f106385e0e62d6cab80804d6d0f2d7",
546
- "bytes": 708
553
+ "sha256": "3203d8cb8a51dfe0cf88f3ab29d2dd5e0e60ae3b9c9dcc9f426a8581f55e71ff",
554
+ "bytes": 918
547
555
  },
548
556
  "coordinators/modes/implement-shared.js": {
549
- "sha256": "96f95d9fca1c511eb1b12247148d0e0de3dd3add5aacd72e2a8bba4b36f5995b",
550
- "bytes": 13636
557
+ "sha256": "ef9385ab3881aafcf677a9a8823b139f1b197436276c448ff67cc3b4500acf98",
558
+ "bytes": 14254
551
559
  },
552
560
  "coordinators/modes/implement.d.ts": {
553
561
  "sha256": "23919c24d62a0bf15296a52fbc594cca8b1b34e6f8d98dcf7dede8d97ad4cabb",
554
562
  "bytes": 347
555
563
  },
556
564
  "coordinators/modes/implement.js": {
557
- "sha256": "59b0dddf00587db1d565c1e460cdad1f75b4ca32687e3649452b0f4de90a3061",
558
- "bytes": 5482
565
+ "sha256": "e779f11315f4e911aa71318271070d7ffc7f2cc243c33669285b6f10b7c0d901",
566
+ "bytes": 8265
559
567
  },
560
568
  "coordinators/modes/quick-review.d.ts": {
561
569
  "sha256": "03a4f29a07047b0bf788d84f8e0ebab63d64c8eb98aa57087943a8fb84563998",
@@ -573,6 +581,14 @@
573
581
  "sha256": "a7da0b06ea4b16ae71b3d08a559dade91b01ffe1270633eb8ac1c355d57126eb",
574
582
  "bytes": 1198
575
583
  },
584
+ "coordinators/pipeline-run-context.d.ts": {
585
+ "sha256": "8fc743a1458e4d7a0971c968d51749d55a3bc114b286efe6b2030eb062809589",
586
+ "bytes": 68469
587
+ },
588
+ "coordinators/pipeline-run-context.js": {
589
+ "sha256": "5489319764a0dbd1b037521e014784fab518c4ff4f9137e045129e6845793e55",
590
+ "bytes": 4790
591
+ },
576
592
  "coordinators/pr-review.d.ts": {
577
593
  "sha256": "0dba830dd29cd82c58300ca9fdfb4c29d0acd0b257740ce3e65f2360239a106b",
578
594
  "bytes": 4501
@@ -622,13 +638,53 @@
622
638
  "bytes": 10607
623
639
  },
624
640
  "daemon/context-loader.d.ts": {
625
- "sha256": "db099ae68c8f0fd69503afd49daaf2f84fa0ada9791dc3c5e3278382506b13c5",
626
- "bytes": 1375
641
+ "sha256": "73992e98475c16b94b880c1daac1da0d0650adfb895d1415ac18e73606f99a5c",
642
+ "bytes": 1365
627
643
  },
628
644
  "daemon/context-loader.js": {
629
645
  "sha256": "a3db45565ef02ca178b8d66ea93cb2877def528f3008dc067787d9983c589bd0",
630
646
  "bytes": 1255
631
647
  },
648
+ "daemon/core/agent-client.d.ts": {
649
+ "sha256": "b95f30d0be2524f9750aded5f0810e163aa32ba36a9dab0786b7d5aef341e5c0",
650
+ "bytes": 338
651
+ },
652
+ "daemon/core/agent-client.js": {
653
+ "sha256": "75250e4b7f020296462540fddd01c3e84c4a4de35d59b35f2499dab606a1797b",
654
+ "bytes": 1383
655
+ },
656
+ "daemon/core/index.d.ts": {
657
+ "sha256": "cb0faa0a552fa66a697e812f0a19fd6dcba717d2653ce504a1b01a03e7d013c1",
658
+ "bytes": 534
659
+ },
660
+ "daemon/core/index.js": {
661
+ "sha256": "ad816a5eea11808d018c4bee285df319d6e67b5a0f3ddc70fd218c3fb59b9da8",
662
+ "bytes": 2465
663
+ },
664
+ "daemon/core/session-context.d.ts": {
665
+ "sha256": "d42dd909fb2729cc5105c147f7c902af494d9ff814335ba9a8e62c070894e2dc",
666
+ "bytes": 752
667
+ },
668
+ "daemon/core/session-context.js": {
669
+ "sha256": "18acd35fdbb8933771b001a38030c64aa6bc8f4dbfc4aeeb72cb42670906a5af",
670
+ "bytes": 1655
671
+ },
672
+ "daemon/core/session-result.d.ts": {
673
+ "sha256": "9f71824862fd5d258b3cd5cb4b3a830e0ac04afefb6515e91fbb9449c8922ca8",
674
+ "bytes": 750
675
+ },
676
+ "daemon/core/session-result.js": {
677
+ "sha256": "d29501089caeba4fa21ccd4be31d585894f66879543b90bbc17fc0e7dfd1d584",
678
+ "bytes": 4129
679
+ },
680
+ "daemon/core/system-prompt.d.ts": {
681
+ "sha256": "13199ad594625b937cfda88116cc9297aef12fc3d8bb17dfad60c4ffd48741a3",
682
+ "bytes": 5275
683
+ },
684
+ "daemon/core/system-prompt.js": {
685
+ "sha256": "b7ae5966fbc18639626780ea8911465c1d7d0c34f161f0c38d7c702fffeafa14",
686
+ "bytes": 9661
687
+ },
632
688
  "daemon/daemon-env.d.ts": {
633
689
  "sha256": "4546caacd79c21b162d2d03c1cde24d4f6d232e684229828722be75d4a33920a",
634
690
  "bytes": 213
@@ -645,6 +701,54 @@
645
701
  "sha256": "b6841eef4634bb266faf81961c1e387b535dd64a74d58582f3f2bad8c3469d95",
646
702
  "bytes": 2252
647
703
  },
704
+ "daemon/io/conversation-log.d.ts": {
705
+ "sha256": "eff40d1f2f707469b94665741de33ca3a505863d5b97aa8a73f070458e3cf5b5",
706
+ "bytes": 194
707
+ },
708
+ "daemon/io/conversation-log.js": {
709
+ "sha256": "16d2e4d17e8e2c6db568c2a3ff1f0140e1cd8d533732466ab1a77cfb1fb8391f",
710
+ "bytes": 1908
711
+ },
712
+ "daemon/io/execution-stats.d.ts": {
713
+ "sha256": "0d4957762e3424be38d98a5b16bd291fc322320f3138b0a19a3eeb0ce01624da",
714
+ "bytes": 452
715
+ },
716
+ "daemon/io/execution-stats.js": {
717
+ "sha256": "acaeb02b970690d10e6a56164757edf36959922d03d58a5455fca37323797b78",
718
+ "bytes": 3627
719
+ },
720
+ "daemon/io/index.d.ts": {
721
+ "sha256": "7bf1ae53abe1839eeb5da437c61f8ffb03257c70f988b1f8c1e641d166682cdb",
722
+ "bytes": 569
723
+ },
724
+ "daemon/io/index.js": {
725
+ "sha256": "28116a31ba2f13eab3d745a3721872a683ee75d962abe532563c2e944c6ec564",
726
+ "bytes": 3378
727
+ },
728
+ "daemon/io/session-notes-loader.d.ts": {
729
+ "sha256": "83b9d9cdbeb1dbb324462e58193055f91c36afe188dcda0f86ba232f4e27bae8",
730
+ "bytes": 271
731
+ },
732
+ "daemon/io/session-notes-loader.js": {
733
+ "sha256": "17338669b9f4a2dde4658c13c50c1a1b6c90255eed9a0d4c53ca9d5bb4bf3999",
734
+ "bytes": 2491
735
+ },
736
+ "daemon/io/soul-loader.d.ts": {
737
+ "sha256": "911aa78442437dc54ac40ba1d56232a1db1e8cc84bf7fc4b99049051f4f1c90a",
738
+ "bytes": 204
739
+ },
740
+ "daemon/io/soul-loader.js": {
741
+ "sha256": "4d186fdd67baa26e76952a509267f347617ee474aa28f3822e36037a5ef71fa9",
742
+ "bytes": 3269
743
+ },
744
+ "daemon/io/workspace-context-loader.d.ts": {
745
+ "sha256": "a8b3fd833fa43e00a4f3e134bf474eca7982ab85f088773a08ebb97cabb2719e",
746
+ "bytes": 705
747
+ },
748
+ "daemon/io/workspace-context-loader.js": {
749
+ "sha256": "e8a9afcaeb87c120bc7763d9d8bbe278a4781adb5e3a3bf27758f6dde527ac9b",
750
+ "bytes": 6311
751
+ },
648
752
  "daemon/pi-mono-loader.d.ts": {
649
753
  "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
650
754
  "bytes": 0
@@ -653,6 +757,62 @@
653
757
  "sha256": "77f5eec38c5ef075e11892244ccf9e249d82937e07401398df98319568775a17",
654
758
  "bytes": 14
655
759
  },
760
+ "daemon/runner/agent-loop-runner.d.ts": {
761
+ "sha256": "605a8bde5f1a2be3d082d52e50b67d1d2e6323faae8dfed95c80db2760a33ce3",
762
+ "bytes": 2021
763
+ },
764
+ "daemon/runner/agent-loop-runner.js": {
765
+ "sha256": "95ba3bad184189519c228b50b6c6dbd03c8daf2d6d43c2cf4ee8205bda3ff67b",
766
+ "bytes": 13466
767
+ },
768
+ "daemon/runner/construct-tools.d.ts": {
769
+ "sha256": "6386bc54bcb95bb7ea414c05e5b993314a50339989476bc6d4927b12c5931679",
770
+ "bytes": 407
771
+ },
772
+ "daemon/runner/construct-tools.js": {
773
+ "sha256": "881f36fecee3d03a58d7868a0ea656fb2c9be875f770d6d5cbc8286e69224f6d",
774
+ "bytes": 2415
775
+ },
776
+ "daemon/runner/finalize-session.d.ts": {
777
+ "sha256": "fc5c33925bb08ec5f39c5a10699a61dd52fe4fd9e565b4b82fba7cf1cc3bdbbc",
778
+ "bytes": 225
779
+ },
780
+ "daemon/runner/finalize-session.js": {
781
+ "sha256": "7cd8800a1000ea73c6caf044d6ac0b2be457baf871faff6b1ffdfeba50ca95e6",
782
+ "bytes": 3345
783
+ },
784
+ "daemon/runner/index.d.ts": {
785
+ "sha256": "f404bd099f858697fbaaa8e69d1fffa2e267d8d9d1545a41bdf3fe595c8cd764",
786
+ "bytes": 609
787
+ },
788
+ "daemon/runner/index.js": {
789
+ "sha256": "52261e26320d94e053f79d6129f8d09f00d4e03fdc1bcee9edb3d13f13cfc978",
790
+ "bytes": 1978
791
+ },
792
+ "daemon/runner/pre-agent-session.d.ts": {
793
+ "sha256": "a500ff9d433245f37c3bf14d1c03ca5b291873e2d9da019d66760dba81df3bb9",
794
+ "bytes": 770
795
+ },
796
+ "daemon/runner/pre-agent-session.js": {
797
+ "sha256": "56c8bce2a4be1409973cfc2b6bcbdade90d6d404559256aaa74e5d10fb674c09",
798
+ "bytes": 10675
799
+ },
800
+ "daemon/runner/runner-types.d.ts": {
801
+ "sha256": "e8760c0c0dd21fdf31807894c6bc2e237b5f8bd21db58a29abd6641c51a91897",
802
+ "bytes": 2889
803
+ },
804
+ "daemon/runner/runner-types.js": {
805
+ "sha256": "7a81aac9aeafd9fd7b8037dae4b8e4a5e35c6b363ab946d6431de081d873ef5d",
806
+ "bytes": 1637
807
+ },
808
+ "daemon/runner/tool-schemas.d.ts": {
809
+ "sha256": "40fdcc52dd898cd421381e39c85d49c445d86d343c4abfc3c848a062fd58492d",
810
+ "bytes": 59
811
+ },
812
+ "daemon/runner/tool-schemas.js": {
813
+ "sha256": "2c130b34dcfce901aabd30a8eb9b48b7fa5dd4e7c1051a8bf806f281bc86a2c9",
814
+ "bytes": 8198
815
+ },
656
816
  "daemon/session-recovery-policy.d.ts": {
657
817
  "sha256": "89b50c3543268c74a955103ca04e990a259350ccfe900bcb0bd0ce0382d28911",
658
818
  "bytes": 249
@@ -662,8 +822,8 @@
662
822
  "bytes": 247
663
823
  },
664
824
  "daemon/session-scope.d.ts": {
665
- "sha256": "35e102ecaeb59fbb57b715a43c030e8aba7a2e0aa757d0f828dc677910020ada",
666
- "bytes": 1681
825
+ "sha256": "278afe2add5fa0d56eb3736d21d027bee91d1f8a9d50594c741205e807d529f4",
826
+ "bytes": 1671
667
827
  },
668
828
  "daemon/session-scope.js": {
669
829
  "sha256": "2f5295aa36b8d46b162a2b1f4d6f13af00517796aa468956563a8de46e2ecd56",
@@ -677,6 +837,46 @@
677
837
  "sha256": "d7c425a03d9a39994a2a961470a892bc8c5936b697b6a59fa161d19d72825015",
678
838
  "bytes": 1512
679
839
  },
840
+ "daemon/startup-recovery.d.ts": {
841
+ "sha256": "873bf9fd959912a25ea4d190199e9c62c97f239ef015c58d1146ccd8e809df61",
842
+ "bytes": 1552
843
+ },
844
+ "daemon/startup-recovery.js": {
845
+ "sha256": "a40f8974640340e6f83db38ac849de2b978bff30b8e05ee070d440de6b180881",
846
+ "bytes": 16073
847
+ },
848
+ "daemon/state/index.d.ts": {
849
+ "sha256": "73a88f07267b952425222bfea4ef747f4881daf28f325da5d126194393699faf",
850
+ "bytes": 437
851
+ },
852
+ "daemon/state/index.js": {
853
+ "sha256": "25dd736ae79b6f1f765294d54f246b9f0e37b3c6e1e4b12ab668251e42ea5ca8",
854
+ "bytes": 1574
855
+ },
856
+ "daemon/state/session-state.d.ts": {
857
+ "sha256": "7dc9b8c53447da67d0e1c5ff98792c57dc4e19b23858e8afc0e51a103256713b",
858
+ "bytes": 1129
859
+ },
860
+ "daemon/state/session-state.js": {
861
+ "sha256": "6f01bde9558bd3c985011195b175297c5bbe471df7de803d0db7af960cd5b8fb",
862
+ "bytes": 1430
863
+ },
864
+ "daemon/state/stuck-detection.d.ts": {
865
+ "sha256": "772ed526fb71302f4a1e760b016ba9c733f9dc6691f18e907b5a85dde3790c8a",
866
+ "bytes": 654
867
+ },
868
+ "daemon/state/stuck-detection.js": {
869
+ "sha256": "9222e8370156108d70166ca1463227a13c952cbe3a4e048e23897a94ea42a017",
870
+ "bytes": 1171
871
+ },
872
+ "daemon/state/terminal-signal.d.ts": {
873
+ "sha256": "9ddebaf0a95f405f159eaf84ed9a340a544b6b57389eb1e52c6cfbfaa6017615",
874
+ "bytes": 369
875
+ },
876
+ "daemon/state/terminal-signal.js": {
877
+ "sha256": "33505487f32b6dae0256f9d6dde5810cc0596426c4a930e674f2bd58d6ac0962",
878
+ "bytes": 295
879
+ },
680
880
  "daemon/stats-summary.d.ts": {
681
881
  "sha256": "2136d6f7345fe54c2b881757aa26062dbd1ed54d75e0df5feecd4c0588571c6b",
682
882
  "bytes": 76
@@ -710,8 +910,8 @@
710
910
  "bytes": 11377
711
911
  },
712
912
  "daemon/tools/file-tools.d.ts": {
713
- "sha256": "a758cb2bc9f657110e2a18d31db761d375eef4034aa8016102ae68ef3753c7bc",
714
- "bytes": 865
913
+ "sha256": "5ae91a3fab8cd1e42817af93532e135d7a0bfd1efe7ac7d31337376a739c9646",
914
+ "bytes": 855
715
915
  },
716
916
  "daemon/tools/file-tools.js": {
717
917
  "sha256": "289a440a337f11b04192884278d85f8a9a0b3240f3b53583a0c3fd0d78eda0d5",
@@ -758,28 +958,44 @@
758
958
  "bytes": 382
759
959
  },
760
960
  "daemon/turn-end/detect-stuck.d.ts": {
761
- "sha256": "d2d88889b9397d0cb4893f73498c673ba57d264c052485449ef5c3fc50c1d806",
762
- "bytes": 148
961
+ "sha256": "d52253c4c7ed17350afb52bbaa748d5ecb65f8f89d6142d61f6f911a20030b50",
962
+ "bytes": 160
763
963
  },
764
964
  "daemon/turn-end/detect-stuck.js": {
765
- "sha256": "a6ec84d4bca121179927ecb21ee7fb798999097bec52491be88e1f6d559357cf",
766
- "bytes": 309
965
+ "sha256": "0ec5c28ddcc806baf17a27ecb3163cd453b79f7127e931cb597389a5a410f617",
966
+ "bytes": 315
767
967
  },
768
968
  "daemon/turn-end/step-injector.d.ts": {
769
- "sha256": "0f0e8dc1a1db140c2fc9a5b531f4990a284482a63795d13d4874f0f82e4ea6d3",
770
- "bytes": 247
969
+ "sha256": "44d9c277327d5d9b438155f8cb7817a660dcac4cd155bd2c1d0c169c7581d0af",
970
+ "bytes": 251
771
971
  },
772
972
  "daemon/turn-end/step-injector.js": {
773
973
  "sha256": "073b6735f7bfa59c7e7ee398a9290fb15484465640d86f8bf28f06be83d6040f",
774
974
  "bytes": 429
775
975
  },
976
+ "daemon/types.d.ts": {
977
+ "sha256": "4a80d31e2dd4f09dbee45238ec2dcb19a49b6449ffc98379976cacdaa463ac7e",
978
+ "bytes": 3625
979
+ },
980
+ "daemon/types.js": {
981
+ "sha256": "fdfd53db3769331d50bd9265b6c5050fd9a7d0ccf55a950519b385cc849c92b8",
982
+ "bytes": 404
983
+ },
984
+ "daemon/workflow-enricher.d.ts": {
985
+ "sha256": "eff2e65cd34eb03405bd9d070a79f497ea80b9f44e9ef8268f82332e1b8b37eb",
986
+ "bytes": 986
987
+ },
988
+ "daemon/workflow-enricher.js": {
989
+ "sha256": "bbec1d3f2f6cfed4b3dc9926a7b832b325f6991b37b1e14e0d06629a2967c1d6",
990
+ "bytes": 2293
991
+ },
776
992
  "daemon/workflow-runner.d.ts": {
777
- "sha256": "27fd8ac603948712aaf266ef57d2c165c1b4f92f877358debc40ad4f43d5b24c",
778
- "bytes": 13463
993
+ "sha256": "9c6152b4eb2a4ce8fb967f5600cadc7d8a534dfa38b4728b87b59261bfd6f0b0",
994
+ "bytes": 3159
779
995
  },
780
996
  "daemon/workflow-runner.js": {
781
- "sha256": "458be357c7dd86b215aaa8eabb3fe7ddb05172a0a4a771523232dc9b012ea156",
782
- "bytes": 80362
997
+ "sha256": "ef4fcb5e9c83e081ab4c652babea8260320e744fbb5491fc344fc7c565520c08",
998
+ "bytes": 14314
783
999
  },
784
1000
  "di/container.d.ts": {
785
1001
  "sha256": "003bb7fb7478d627524b9b1e76bd0a963a243794a687ff233b96dc0e33a06d9f",
@@ -1790,12 +2006,12 @@
1790
2006
  "bytes": 2763
1791
2007
  },
1792
2008
  "trigger/coordinator-deps.d.ts": {
1793
- "sha256": "cf5ea595ed2e817318744042e1010aab8766617caba9b105a46b9d5d35d2caae",
1794
- "bytes": 854
2009
+ "sha256": "c036b2ede68110b345028708074854ecd0be7f5d644231240b54d9692ef5c410",
2010
+ "bytes": 844
1795
2011
  },
1796
2012
  "trigger/coordinator-deps.js": {
1797
- "sha256": "1b400abbd6158e900d4559c74b9f3069a46b60fd02d046f36e30cc40a58acb51",
1798
- "bytes": 22626
2013
+ "sha256": "ceff71f1fd76b8ce7c490eee80fb2c13496d53adc321b85be525784eeafe930a",
2014
+ "bytes": 29393
1799
2015
  },
1800
2016
  "trigger/delivery-action.d.ts": {
1801
2017
  "sha256": "bba98a08e35653304b604cd3ec126374cb731620db27ee2c8d6782d5b5b31207",
@@ -1806,16 +2022,16 @@
1806
2022
  "bytes": 14651
1807
2023
  },
1808
2024
  "trigger/delivery-client.d.ts": {
1809
- "sha256": "0cb2be24b854cb31e3d2fe7eeaba6032de7a9b2a5290c8bc886df94faf5306f7",
1810
- "bytes": 533
2025
+ "sha256": "e625150a698efdb47fae33d2125d77202e549ac8d9e570fe1ee5f0ea8726961d",
2026
+ "bytes": 523
1811
2027
  },
1812
2028
  "trigger/delivery-client.js": {
1813
2029
  "sha256": "da358ced4e99c327493b6d3ca975a623aca21f72e68787a092b2760601801c99",
1814
2030
  "bytes": 1269
1815
2031
  },
1816
2032
  "trigger/delivery-pipeline.d.ts": {
1817
- "sha256": "257f04e9018bda1a4a373e0709951057dd40b9a30c749c87f3a720f77137bbba",
1818
- "bytes": 1463
2033
+ "sha256": "1ea1455aba07f64548c4c2bce5d28a8866a2476db513f1f96c73180ea7637278",
2034
+ "bytes": 1453
1819
2035
  },
1820
2036
  "trigger/delivery-pipeline.js": {
1821
2037
  "sha256": "ba011b9360749df47ee540cea08ccba57534a57a8a1d91d3ec240f990396be14",
@@ -1846,8 +2062,8 @@
1846
2062
  "bytes": 1222
1847
2063
  },
1848
2064
  "trigger/notification-service.d.ts": {
1849
- "sha256": "25509f290a11ac9a8aa03e5d7e44011950c841436e9458eb855b94d15d036d68",
1850
- "bytes": 1582
2065
+ "sha256": "2934a798e421b2bd05300fe0deb07dc674eb3c2dd19842b4a4c8540f633981f1",
2066
+ "bytes": 1572
1851
2067
  },
1852
2068
  "trigger/notification-service.js": {
1853
2069
  "sha256": "9d9a5951229f2c6ffaa413a7421efa6611d9ca0ed456edf5c297a4506e84a80e",
@@ -1874,12 +2090,12 @@
1874
2090
  "bytes": 1744
1875
2091
  },
1876
2092
  "trigger/trigger-listener.js": {
1877
- "sha256": "12a137a0ad256f2473171edc54bc624f4ad28f986d31bb4658538237b2082094",
1878
- "bytes": 13222
2093
+ "sha256": "845ea2563561a093487d090005d033157820f12ab6a879f39280ffdfca176340",
2094
+ "bytes": 13715
1879
2095
  },
1880
2096
  "trigger/trigger-router.d.ts": {
1881
- "sha256": "24cc8e6abe08ca139af6599984e395863b5115076500b8faaae1d3b42bbe43b6",
1882
- "bytes": 3220
2097
+ "sha256": "f5b7ca038477c8256bdaa540b84c0aedeb0c65710dc4aa047bd8b5f6c3c91b68",
2098
+ "bytes": 3288
1883
2099
  },
1884
2100
  "trigger/trigger-router.js": {
1885
2101
  "sha256": "ec971ba1f36a6ace7521fad51ba833fa804d5591b3b51e9805e331bbf5ef7159",
@@ -2058,8 +2274,8 @@
2058
2274
  "bytes": 1343
2059
2275
  },
2060
2276
  "v2/durable-core/domain/artifact-contract-validator.js": {
2061
- "sha256": "d7ad3b9c3c3bbb54616682640be23bb04b6256bb96f8fad5daf56cc0df43ec36",
2062
- "bytes": 6500
2277
+ "sha256": "f3b3e7505a820ab3870b19994d9a4d8e61d9051452a28d86feef737d24c144a3",
2278
+ "bytes": 10619
2063
2279
  },
2064
2280
  "v2/durable-core/domain/assessment-consequence-event-builder.d.ts": {
2065
2281
  "sha256": "be91245e615888ae4675c093a9f323500099dbe6d1250ced4726764e1029e9ad",
@@ -2414,20 +2630,20 @@
2414
2630
  "bytes": 1242
2415
2631
  },
2416
2632
  "v2/durable-core/schemas/artifacts/discovery-handoff.d.ts": {
2417
- "sha256": "ccf5b234bc4e1d98a688ecdf555cb8a0cc4e171209f31845d13ac89ef747bbe9",
2418
- "bytes": 1174
2633
+ "sha256": "36b933327a0aed2b767834c4567c7bc51209f9f39e844f3a2503ddccc70ec93e",
2634
+ "bytes": 2323
2419
2635
  },
2420
2636
  "v2/durable-core/schemas/artifacts/discovery-handoff.js": {
2421
- "sha256": "78b5ce8abef29a1f15d8e10f33a9174f8d027550ffdfc419ddad03db8d0fc7d6",
2422
- "bytes": 1138
2637
+ "sha256": "2c8e2f51df1691a34e64bfb4ecfbfd8b4447ca961824612c366f9a30092bfe9b",
2638
+ "bytes": 1624
2423
2639
  },
2424
2640
  "v2/durable-core/schemas/artifacts/index.d.ts": {
2425
- "sha256": "7821aa8564f8900b81396497e26ad3718805c64daf02147f1427d35dfe6c957d",
2426
- "bytes": 1557
2641
+ "sha256": "016e3d46d2eac61e12caf851f8b9d46512b2a3a186bbab7d672127f7f48eb168",
2642
+ "bytes": 1976
2427
2643
  },
2428
2644
  "v2/durable-core/schemas/artifacts/index.js": {
2429
- "sha256": "6755939280959c6a8ad70a5141a0a8803ad136eb1064f6238bb08e294c2330d0",
2430
- "bytes": 5772
2645
+ "sha256": "55392c70481c4a89aebf42ad7b1becb17e128d575b3bd832f7fd8f2b85ae89b9",
2646
+ "bytes": 7493
2431
2647
  },
2432
2648
  "v2/durable-core/schemas/artifacts/loop-control.d.ts": {
2433
2649
  "sha256": "95dabfdcedb1a71c58c38a805dcf24c76254783bc0b2c7d429a3b8ffb94202ed",
@@ -2437,6 +2653,14 @@
2437
2653
  "sha256": "c4b2ed38f9fdda3fbe3e4b68b0a228890fd9a7c73117a6d202928acabe6fc0f9",
2438
2654
  "bytes": 2115
2439
2655
  },
2656
+ "v2/durable-core/schemas/artifacts/phase-handoff.d.ts": {
2657
+ "sha256": "e56371b1e7e5ca83c2867c04d9e1c4b9f24ca654905c5c24d2577acc48a005c4",
2658
+ "bytes": 3228
2659
+ },
2660
+ "v2/durable-core/schemas/artifacts/phase-handoff.js": {
2661
+ "sha256": "05e038285bcd4a140a22b71e7bf1a53ee123de8f23b021b4e9cb9164e266b02a",
2662
+ "bytes": 2651
2663
+ },
2440
2664
  "v2/durable-core/schemas/artifacts/review-verdict.d.ts": {
2441
2665
  "sha256": "2b9f7ae6b3fafe6c26f266bb249c8c286144eb1f753c803d4358ef81e30d1736",
2442
2666
  "bytes": 2211
@@ -1,6 +1,6 @@
1
1
  import type { V2ToolContext } from '../mcp/types.js';
2
2
  import type { AdaptiveCoordinatorDeps } from '../coordinators/adaptive-pipeline.js';
3
- import type { WorkflowTrigger, SessionSource } from '../daemon/workflow-runner.js';
3
+ import type { WorkflowTrigger, SessionSource } from '../daemon/types.js';
4
4
  import type { ConsoleService } from '../v2/usecases/console-service.js';
5
5
  export interface CoordinatorDepsDependencies {
6
6
  readonly ctx: V2ToolContext;
@@ -38,10 +38,12 @@ const fs = __importStar(require("node:fs"));
38
38
  const os = __importStar(require("node:os"));
39
39
  const path = __importStar(require("node:path"));
40
40
  const node_crypto_1 = require("node:crypto");
41
+ const neverthrow_1 = require("neverthrow");
41
42
  const start_js_1 = require("../mcp/handlers/v2-execution/start.js");
42
43
  const v2_token_ops_js_1 = require("../mcp/handlers/v2-token-ops.js");
43
44
  const index_js_1 = require("../context-assembly/index.js");
44
45
  const infra_js_1 = require("../context-assembly/infra.js");
46
+ const pipeline_run_context_js_1 = require("../coordinators/pipeline-run-context.js");
45
47
  function createCoordinatorDeps(deps) {
46
48
  const { ctx, execFileAsync, consoleService } = deps;
47
49
  let dispatch = null;
@@ -485,5 +487,134 @@ function createCoordinatorDeps(deps) {
485
487
  }
486
488
  return 'timeout';
487
489
  },
490
+ generateRunId: () => (0, node_crypto_1.randomUUID)(),
491
+ readActiveRunId: async (workspace) => {
492
+ const runsDir = path.join(workspace, '.workrail', 'pipeline-runs');
493
+ try {
494
+ const entries = await fs.promises.readdir(runsDir);
495
+ const candidates = [];
496
+ for (const entry of entries) {
497
+ if (!entry.endsWith('-context.json'))
498
+ continue;
499
+ try {
500
+ const raw = await fs.promises.readFile(path.join(runsDir, entry), 'utf-8');
501
+ const ctx = JSON.parse(raw);
502
+ if (typeof ctx !== 'object' || ctx === null)
503
+ continue;
504
+ const c = ctx;
505
+ if (typeof c['runId'] !== 'string')
506
+ continue;
507
+ if (c['status'] === 'completed')
508
+ continue;
509
+ candidates.push({ runId: c['runId'], startedAt: String(c['startedAt'] ?? '') });
510
+ }
511
+ catch {
512
+ continue;
513
+ }
514
+ }
515
+ if (candidates.length === 0)
516
+ return (0, neverthrow_1.ok)(null);
517
+ candidates.sort((a, b) => b.startedAt.localeCompare(a.startedAt));
518
+ if (candidates.length > 1) {
519
+ process.stderr.write(`[WARN coordinator] ${candidates.length} in-progress pipeline runs found -- resuming newest (${candidates[0].runId}). ` +
520
+ `Others: ${candidates.slice(1).map(c => c.runId).join(', ')}. Run 'worktrain cleanup' to clear stale runs.\n`);
521
+ }
522
+ return (0, neverthrow_1.ok)(candidates[0].runId);
523
+ }
524
+ catch (e) {
525
+ if (e.code === 'ENOENT')
526
+ return (0, neverthrow_1.ok)(null);
527
+ const msg = e instanceof Error ? e.message : String(e);
528
+ process.stderr.write(`[WARN coordinator] readActiveRunId failed -- crash recovery skipped: ${msg}\n`);
529
+ return (0, neverthrow_1.err)(`readActiveRunId failed: ${msg}`);
530
+ }
531
+ },
532
+ markPipelineRunComplete: async (workspace, runId) => {
533
+ const runsDir = path.join(workspace, '.workrail', 'pipeline-runs');
534
+ const filePath = path.join(runsDir, `${runId}-context.json`);
535
+ const tmpPath = filePath + '.tmp';
536
+ try {
537
+ const raw = await fs.promises.readFile(filePath, 'utf-8');
538
+ const existing = JSON.parse(raw);
539
+ const updated = { ...existing, status: 'completed' };
540
+ await fs.promises.writeFile(tmpPath, JSON.stringify(updated, null, 2) + '\n', 'utf-8');
541
+ await fs.promises.rename(tmpPath, filePath);
542
+ return (0, neverthrow_1.ok)(undefined);
543
+ }
544
+ catch (e) {
545
+ try {
546
+ await fs.promises.unlink(tmpPath);
547
+ }
548
+ catch { }
549
+ return (0, neverthrow_1.err)(`markPipelineRunComplete failed: ${e instanceof Error ? e.message : String(e)}`);
550
+ }
551
+ },
552
+ readPipelineContext: async (workspace, runId) => {
553
+ const runsDir = path.join(workspace, '.workrail', 'pipeline-runs');
554
+ const filePath = path.join(runsDir, `${runId}-context.json`);
555
+ try {
556
+ const raw = await fs.promises.readFile(filePath, 'utf-8');
557
+ const parsed = JSON.parse(raw);
558
+ return (0, pipeline_run_context_js_1.parsePipelineRunContext)(parsed);
559
+ }
560
+ catch (e) {
561
+ if (e.code === 'ENOENT') {
562
+ return (0, neverthrow_1.ok)(null);
563
+ }
564
+ const msg = e instanceof Error ? e.message : String(e);
565
+ return (0, neverthrow_1.err)(`readPipelineContext failed: ${msg}`);
566
+ }
567
+ },
568
+ createPipelineContext: async (workspace, runId, goal, pipelineMode) => {
569
+ const runsDir = path.join(workspace, '.workrail', 'pipeline-runs');
570
+ const filePath = path.join(runsDir, `${runId}-context.json`);
571
+ const tmpPath = filePath + '.tmp';
572
+ try {
573
+ await fs.promises.mkdir(runsDir, { recursive: true });
574
+ const initial = { runId, goal, workspace, startedAt: new Date().toISOString(), pipelineMode, phases: {} };
575
+ await fs.promises.writeFile(tmpPath, JSON.stringify(initial, null, 2) + '\n', 'utf-8');
576
+ await fs.promises.rename(tmpPath, filePath);
577
+ return (0, neverthrow_1.ok)(undefined);
578
+ }
579
+ catch (e) {
580
+ try {
581
+ await fs.promises.unlink(tmpPath);
582
+ }
583
+ catch { }
584
+ return (0, neverthrow_1.err)(`createPipelineContext failed: ${e instanceof Error ? e.message : String(e)}`);
585
+ }
586
+ },
587
+ writePhaseRecord: async (workspace, runId, entry) => {
588
+ const runsDir = path.join(workspace, '.workrail', 'pipeline-runs');
589
+ const filePath = path.join(runsDir, `${runId}-context.json`);
590
+ const tmpPath = filePath + '.tmp';
591
+ try {
592
+ await fs.promises.mkdir(runsDir, { recursive: true });
593
+ const raw = await fs.promises.readFile(filePath, 'utf-8');
594
+ const parsed = JSON.parse(raw);
595
+ const existing = (0, pipeline_run_context_js_1.parsePipelineRunContext)(parsed);
596
+ if (existing.isErr() || existing.value === null) {
597
+ return (0, neverthrow_1.err)(`writePhaseRecord: context file missing or invalid for runId=${runId}`);
598
+ }
599
+ const updated = {
600
+ ...existing.value,
601
+ phases: {
602
+ ...existing.value.phases,
603
+ [entry.phase]: entry.record,
604
+ },
605
+ };
606
+ await fs.promises.writeFile(tmpPath, JSON.stringify(updated, null, 2) + '\n', 'utf-8');
607
+ await fs.promises.rename(tmpPath, filePath);
608
+ return (0, neverthrow_1.ok)(undefined);
609
+ }
610
+ catch (e) {
611
+ const msg = e instanceof Error ? e.message : String(e);
612
+ try {
613
+ await fs.promises.unlink(tmpPath);
614
+ }
615
+ catch { }
616
+ return (0, neverthrow_1.err)(`writePhaseRecord failed: ${msg}`);
617
+ }
618
+ },
488
619
  };
489
620
  }
@@ -1,5 +1,5 @@
1
1
  import type { Result } from '../runtime/result.js';
2
- import type { WorkflowRunResult } from '../daemon/workflow-runner.js';
2
+ import type { WorkflowRunResult } from '../daemon/types.js';
3
3
  import type { DaemonEventEmitter } from '../daemon/daemon-events.js';
4
4
  export type DeliveryError = {
5
5
  readonly kind: 'http_error';