@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.
- package/dist/console-ui/assets/index-D9pYbwS0.js +28 -0
- package/dist/console-ui/index.html +1 -1
- package/dist/coordinators/adaptive-pipeline.d.ts +8 -0
- package/dist/coordinators/context-assembly.d.ts +4 -0
- package/dist/coordinators/context-assembly.js +156 -0
- package/dist/coordinators/modes/full-pipeline.d.ts +1 -1
- package/dist/coordinators/modes/full-pipeline.js +140 -27
- package/dist/coordinators/modes/implement-shared.d.ts +3 -2
- package/dist/coordinators/modes/implement-shared.js +16 -6
- package/dist/coordinators/modes/implement.js +49 -3
- package/dist/coordinators/pipeline-run-context.d.ts +1811 -0
- package/dist/coordinators/pipeline-run-context.js +114 -0
- package/dist/daemon/context-loader.d.ts +1 -1
- package/dist/daemon/core/agent-client.d.ts +7 -0
- package/dist/daemon/core/agent-client.js +31 -0
- package/dist/daemon/core/index.d.ts +6 -0
- package/dist/daemon/core/index.js +19 -0
- package/dist/daemon/core/session-context.d.ts +14 -0
- package/dist/daemon/core/session-context.js +24 -0
- package/dist/daemon/core/session-result.d.ts +10 -0
- package/dist/daemon/core/session-result.js +92 -0
- package/dist/daemon/core/system-prompt.d.ts +6 -0
- package/dist/daemon/core/system-prompt.js +151 -0
- package/dist/daemon/io/conversation-log.d.ts +2 -0
- package/dist/daemon/io/conversation-log.js +45 -0
- package/dist/daemon/io/execution-stats.d.ts +7 -0
- package/dist/daemon/io/execution-stats.js +86 -0
- package/dist/daemon/io/index.d.ts +5 -0
- package/dist/daemon/io/index.js +24 -0
- package/dist/daemon/io/session-notes-loader.d.ts +4 -0
- package/dist/daemon/io/session-notes-loader.js +45 -0
- package/dist/daemon/io/soul-loader.d.ts +3 -0
- package/dist/daemon/io/soul-loader.js +68 -0
- package/dist/daemon/io/workspace-context-loader.d.ts +17 -0
- package/dist/daemon/io/workspace-context-loader.js +137 -0
- package/dist/daemon/runner/agent-loop-runner.d.ts +28 -0
- package/dist/daemon/runner/agent-loop-runner.js +250 -0
- package/dist/daemon/runner/construct-tools.d.ts +5 -0
- package/dist/daemon/runner/construct-tools.js +30 -0
- package/dist/daemon/runner/finalize-session.d.ts +3 -0
- package/dist/daemon/runner/finalize-session.js +75 -0
- package/dist/daemon/runner/index.d.ts +8 -0
- package/dist/daemon/runner/index.js +18 -0
- package/dist/daemon/runner/pre-agent-session.d.ts +7 -0
- package/dist/daemon/runner/pre-agent-session.js +227 -0
- package/dist/daemon/runner/runner-types.d.ts +73 -0
- package/dist/daemon/runner/runner-types.js +39 -0
- package/dist/daemon/runner/tool-schemas.d.ts +1 -0
- package/dist/daemon/runner/tool-schemas.js +151 -0
- package/dist/daemon/session-scope.d.ts +1 -1
- package/dist/daemon/startup-recovery.d.ts +20 -0
- package/dist/daemon/startup-recovery.js +323 -0
- package/dist/daemon/state/index.d.ts +6 -0
- package/dist/daemon/state/index.js +14 -0
- package/dist/daemon/state/session-state.d.ts +23 -0
- package/dist/daemon/state/session-state.js +44 -0
- package/dist/daemon/state/stuck-detection.d.ts +22 -0
- package/dist/daemon/state/stuck-detection.js +25 -0
- package/dist/daemon/state/terminal-signal.d.ts +9 -0
- package/dist/daemon/state/terminal-signal.js +10 -0
- package/dist/daemon/tools/file-tools.d.ts +1 -1
- package/dist/daemon/turn-end/detect-stuck.d.ts +2 -2
- package/dist/daemon/turn-end/detect-stuck.js +2 -2
- package/dist/daemon/turn-end/step-injector.d.ts +1 -1
- package/dist/daemon/types.d.ts +105 -0
- package/dist/daemon/types.js +11 -0
- package/dist/daemon/workflow-enricher.d.ts +16 -0
- package/dist/daemon/workflow-enricher.js +58 -0
- package/dist/daemon/workflow-runner.d.ts +13 -277
- package/dist/daemon/workflow-runner.js +63 -1421
- package/dist/manifest.json +280 -56
- package/dist/trigger/coordinator-deps.d.ts +1 -1
- package/dist/trigger/coordinator-deps.js +131 -0
- package/dist/trigger/delivery-client.d.ts +1 -1
- package/dist/trigger/delivery-pipeline.d.ts +1 -1
- package/dist/trigger/notification-service.d.ts +1 -1
- package/dist/trigger/trigger-listener.js +6 -2
- package/dist/trigger/trigger-router.d.ts +2 -2
- package/dist/v2/durable-core/domain/artifact-contract-validator.js +99 -0
- package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.d.ts +39 -0
- package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.js +10 -1
- package/dist/v2/durable-core/schemas/artifacts/index.d.ts +2 -1
- package/dist/v2/durable-core/schemas/artifacts/index.js +12 -1
- package/dist/v2/durable-core/schemas/artifacts/phase-handoff.d.ts +89 -0
- package/dist/v2/durable-core/schemas/artifacts/phase-handoff.js +56 -0
- package/docs/authoring-v2.md +12 -0
- package/docs/ideas/backlog.md +639 -25
- package/docs/reference/worktrain-daemon-invariants.md +33 -49
- package/docs/vision.md +5 -15
- package/package.json +2 -2
- package/workflows/coding-task-workflow-agentic.json +9 -6
- package/workflows/mr-review-workflow.agentic.v2.json +2 -2
- package/workflows/wr.discovery.json +2 -1
- package/workflows/wr.shaping.json +7 -4
- package/dist/console-ui/assets/index-BvBihscd.js +0 -28
package/dist/manifest.json
CHANGED
|
@@ -473,16 +473,16 @@
|
|
|
473
473
|
"sha256": "5fe866e54f796975dec5d8ba9983aefd86074db212d3fccd64eed04bc9f0b3da",
|
|
474
474
|
"bytes": 8011
|
|
475
475
|
},
|
|
476
|
-
"console-ui/assets/index-
|
|
477
|
-
"sha256": "
|
|
478
|
-
"bytes":
|
|
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": "
|
|
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": "
|
|
530
|
-
"bytes":
|
|
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": "
|
|
538
|
-
"bytes":
|
|
545
|
+
"sha256": "88230513db280be8b63106fef82a408499ba16a7acfbe5fa69f86af0a0c3ae04",
|
|
546
|
+
"bytes": 450
|
|
539
547
|
},
|
|
540
548
|
"coordinators/modes/full-pipeline.js": {
|
|
541
|
-
"sha256": "
|
|
542
|
-
"bytes":
|
|
549
|
+
"sha256": "99dc73260d66bb5c9e5c8f477467f5f934aad81b171d0e1cbe661109e939f9e7",
|
|
550
|
+
"bytes": 20365
|
|
543
551
|
},
|
|
544
552
|
"coordinators/modes/implement-shared.d.ts": {
|
|
545
|
-
"sha256": "
|
|
546
|
-
"bytes":
|
|
553
|
+
"sha256": "3203d8cb8a51dfe0cf88f3ab29d2dd5e0e60ae3b9c9dcc9f426a8581f55e71ff",
|
|
554
|
+
"bytes": 918
|
|
547
555
|
},
|
|
548
556
|
"coordinators/modes/implement-shared.js": {
|
|
549
|
-
"sha256": "
|
|
550
|
-
"bytes":
|
|
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": "
|
|
558
|
-
"bytes":
|
|
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": "
|
|
626
|
-
"bytes":
|
|
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": "
|
|
666
|
-
"bytes":
|
|
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": "
|
|
714
|
-
"bytes":
|
|
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": "
|
|
762
|
-
"bytes":
|
|
961
|
+
"sha256": "d52253c4c7ed17350afb52bbaa748d5ecb65f8f89d6142d61f6f911a20030b50",
|
|
962
|
+
"bytes": 160
|
|
763
963
|
},
|
|
764
964
|
"daemon/turn-end/detect-stuck.js": {
|
|
765
|
-
"sha256": "
|
|
766
|
-
"bytes":
|
|
965
|
+
"sha256": "0ec5c28ddcc806baf17a27ecb3163cd453b79f7127e931cb597389a5a410f617",
|
|
966
|
+
"bytes": 315
|
|
767
967
|
},
|
|
768
968
|
"daemon/turn-end/step-injector.d.ts": {
|
|
769
|
-
"sha256": "
|
|
770
|
-
"bytes":
|
|
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": "
|
|
778
|
-
"bytes":
|
|
993
|
+
"sha256": "9c6152b4eb2a4ce8fb967f5600cadc7d8a534dfa38b4728b87b59261bfd6f0b0",
|
|
994
|
+
"bytes": 3159
|
|
779
995
|
},
|
|
780
996
|
"daemon/workflow-runner.js": {
|
|
781
|
-
"sha256": "
|
|
782
|
-
"bytes":
|
|
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": "
|
|
1794
|
-
"bytes":
|
|
2009
|
+
"sha256": "c036b2ede68110b345028708074854ecd0be7f5d644231240b54d9692ef5c410",
|
|
2010
|
+
"bytes": 844
|
|
1795
2011
|
},
|
|
1796
2012
|
"trigger/coordinator-deps.js": {
|
|
1797
|
-
"sha256": "
|
|
1798
|
-
"bytes":
|
|
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": "
|
|
1810
|
-
"bytes":
|
|
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": "
|
|
1818
|
-
"bytes":
|
|
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": "
|
|
1850
|
-
"bytes":
|
|
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": "
|
|
1878
|
-
"bytes":
|
|
2093
|
+
"sha256": "845ea2563561a093487d090005d033157820f12ab6a879f39280ffdfca176340",
|
|
2094
|
+
"bytes": 13715
|
|
1879
2095
|
},
|
|
1880
2096
|
"trigger/trigger-router.d.ts": {
|
|
1881
|
-
"sha256": "
|
|
1882
|
-
"bytes":
|
|
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": "
|
|
2062
|
-
"bytes":
|
|
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": "
|
|
2418
|
-
"bytes":
|
|
2633
|
+
"sha256": "36b933327a0aed2b767834c4567c7bc51209f9f39e844f3a2503ddccc70ec93e",
|
|
2634
|
+
"bytes": 2323
|
|
2419
2635
|
},
|
|
2420
2636
|
"v2/durable-core/schemas/artifacts/discovery-handoff.js": {
|
|
2421
|
-
"sha256": "
|
|
2422
|
-
"bytes":
|
|
2637
|
+
"sha256": "2c8e2f51df1691a34e64bfb4ecfbfd8b4447ca961824612c366f9a30092bfe9b",
|
|
2638
|
+
"bytes": 1624
|
|
2423
2639
|
},
|
|
2424
2640
|
"v2/durable-core/schemas/artifacts/index.d.ts": {
|
|
2425
|
-
"sha256": "
|
|
2426
|
-
"bytes":
|
|
2641
|
+
"sha256": "016e3d46d2eac61e12caf851f8b9d46512b2a3a186bbab7d672127f7f48eb168",
|
|
2642
|
+
"bytes": 1976
|
|
2427
2643
|
},
|
|
2428
2644
|
"v2/durable-core/schemas/artifacts/index.js": {
|
|
2429
|
-
"sha256": "
|
|
2430
|
-
"bytes":
|
|
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/
|
|
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/
|
|
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';
|