@exaudeus/workrail 3.40.0 → 3.41.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 (75) hide show
  1. package/dist/cli/commands/init.js +0 -3
  2. package/dist/cli-worktrain.js +8 -0
  3. package/dist/cli.js +0 -18
  4. package/dist/config/app-config.d.ts +0 -16
  5. package/dist/config/app-config.js +0 -14
  6. package/dist/config/config-file.js +0 -3
  7. package/dist/console-ui/assets/index-CQt4UhPB.js +28 -0
  8. package/dist/console-ui/assets/index-DGj8EsFR.css +1 -0
  9. package/dist/console-ui/index.html +2 -2
  10. package/dist/coordinators/pr-review.d.ts +17 -0
  11. package/dist/coordinators/pr-review.js +164 -0
  12. package/dist/daemon/daemon-events.d.ts +9 -1
  13. package/dist/daemon/soul-template.d.ts +2 -2
  14. package/dist/daemon/soul-template.js +11 -1
  15. package/dist/daemon/workflow-runner.d.ts +14 -1
  16. package/dist/daemon/workflow-runner.js +395 -25
  17. package/dist/di/container.js +1 -25
  18. package/dist/di/tokens.d.ts +0 -3
  19. package/dist/di/tokens.js +0 -3
  20. package/dist/engine/engine-factory.js +0 -1
  21. package/dist/infrastructure/console-defaults.d.ts +1 -0
  22. package/dist/infrastructure/console-defaults.js +4 -0
  23. package/dist/infrastructure/session/index.d.ts +0 -1
  24. package/dist/infrastructure/session/index.js +1 -3
  25. package/dist/manifest.json +87 -103
  26. package/dist/mcp/handlers/session.d.ts +1 -0
  27. package/dist/mcp/handlers/session.js +61 -13
  28. package/dist/mcp/server.js +1 -18
  29. package/dist/mcp/transports/http-entry.js +0 -2
  30. package/dist/mcp/transports/stdio-entry.js +1 -2
  31. package/dist/mcp/types.d.ts +0 -2
  32. package/dist/trigger/daemon-console.d.ts +2 -0
  33. package/dist/trigger/daemon-console.js +1 -1
  34. package/dist/trigger/trigger-listener.d.ts +2 -0
  35. package/dist/trigger/trigger-listener.js +3 -1
  36. package/dist/trigger/trigger-router.d.ts +4 -3
  37. package/dist/trigger/trigger-router.js +4 -3
  38. package/dist/trigger/trigger-store.js +17 -4
  39. package/dist/v2/usecases/console-routes.d.ts +2 -1
  40. package/dist/v2/usecases/console-routes.js +29 -5
  41. package/dist/v2/usecases/console-service.js +14 -0
  42. package/dist/v2/usecases/console-types.d.ts +1 -0
  43. package/docs/authoring.md +16 -16
  44. package/docs/design/coordinator-message-queue-drain-plan.md +241 -0
  45. package/docs/design/coordinator-message-queue-drain-review.md +120 -0
  46. package/docs/design/coordinator-message-queue-drain.md +289 -0
  47. package/docs/design/shaping-workflow-external-research.md +119 -0
  48. package/docs/discovery/late-bound-goals-impl-plan.md +147 -0
  49. package/docs/discovery/late-bound-goals-review.md +82 -0
  50. package/docs/discovery/late-bound-goals.md +118 -0
  51. package/docs/discovery/steer-endpoint-design-candidates.md +288 -0
  52. package/docs/discovery/steer-endpoint-design-review-findings.md +104 -0
  53. package/docs/discovery/steer-endpoint-implementation-plan.md +284 -0
  54. package/docs/ideas/backlog.md +292 -0
  55. package/docs/ideas/design-candidates-console-session-tree-impl.md +64 -0
  56. package/docs/ideas/design-candidates-session-tree-view.md +196 -0
  57. package/docs/ideas/design-review-findings-console-session-tree-impl.md +75 -0
  58. package/docs/ideas/design-review-findings-session-tree-view.md +88 -0
  59. package/docs/ideas/implementation_plan_session_tree_view.md +238 -0
  60. package/package.json +2 -1
  61. package/spec/authoring-spec.json +16 -16
  62. package/spec/shape.schema.json +178 -0
  63. package/spec/workflow-tags.json +232 -47
  64. package/workflows/coding-task-workflow-agentic.json +491 -480
  65. package/workflows/wr.shaping.json +182 -0
  66. package/dist/console-ui/assets/index-8dh0Psu-.css +0 -1
  67. package/dist/console-ui/assets/index-CXWCAonr.js +0 -28
  68. package/dist/infrastructure/session/DashboardHeartbeat.d.ts +0 -8
  69. package/dist/infrastructure/session/DashboardHeartbeat.js +0 -39
  70. package/dist/infrastructure/session/DashboardLockRelease.d.ts +0 -2
  71. package/dist/infrastructure/session/DashboardLockRelease.js +0 -29
  72. package/dist/infrastructure/session/HttpServer.d.ts +0 -60
  73. package/dist/infrastructure/session/HttpServer.js +0 -912
  74. package/workflows/coding-task-workflow-agentic.lean.v2.json +0 -648
  75. package/workflows/coding-task-workflow-agentic.v2.json +0 -324
@@ -235,7 +235,6 @@ async function createWorkRailEngine(config = {}) {
235
235
  workflowService,
236
236
  featureFlags,
237
237
  sessionManager: null,
238
- httpServer: null,
239
238
  v2,
240
239
  };
241
240
  const v2Ctx = ctx;
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_CONSOLE_PORT = 3456;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONSOLE_PORT = void 0;
4
+ exports.DEFAULT_CONSOLE_PORT = 3456;
@@ -1,2 +1 @@
1
1
  export { SessionManager, Session, ProjectMetadata } from './SessionManager.js';
2
- export { HttpServer, ServerConfig } from './HttpServer.js';
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HttpServer = exports.SessionManager = void 0;
3
+ exports.SessionManager = void 0;
4
4
  var SessionManager_js_1 = require("./SessionManager.js");
5
5
  Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return SessionManager_js_1.SessionManager; } });
6
- var HttpServer_js_1 = require("./HttpServer.js");
7
- Object.defineProperty(exports, "HttpServer", { enumerable: true, get: function () { return HttpServer_js_1.HttpServer; } });
@@ -238,16 +238,16 @@
238
238
  "bytes": 31
239
239
  },
240
240
  "cli-worktrain.js": {
241
- "sha256": "b5f05c66e89a4d837f42ba1710e6daa49f32a68e43821ab2453f8993ba1d8ced",
242
- "bytes": 44941
241
+ "sha256": "d2b9e9e4f6d58be3a548d77cbd8a1d029693f4b1b3c4592ebe063ddb19c5f1f8",
242
+ "bytes": 45440
243
243
  },
244
244
  "cli.d.ts": {
245
245
  "sha256": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
246
246
  "bytes": 31
247
247
  },
248
248
  "cli.js": {
249
- "sha256": "d1f6bae5772a311043f08a063b735bd54023766de78c97a31757409c200f1b4e",
250
- "bytes": 12551
249
+ "sha256": "026b67f26c6b1153a98c8212723d9791b8f15be83fa04fc670bccae44dbfc4af",
250
+ "bytes": 11599
251
251
  },
252
252
  "cli/commands/cleanup.d.ts": {
253
253
  "sha256": "efe1f9e2ecd58e92007ed38b9581a3852c2babe4b3f2a97237dccd878eebe7ec",
@@ -270,8 +270,8 @@
270
270
  "bytes": 996
271
271
  },
272
272
  "cli/commands/init.js": {
273
- "sha256": "2231e989bc0804b4bee45ff85e4a989706dbca12bbcb02bb3b9e6c52ab4ff254",
274
- "bytes": 4718
273
+ "sha256": "39a7dc7461fc4ad546db11bd0f7443e74120dd939e8e5b52d799e5b49dd096ba",
274
+ "bytes": 4599
275
275
  },
276
276
  "cli/commands/list.d.ts": {
277
277
  "sha256": "b1fd33d3ec871bf1d544b2580c6b25720b747620bc690ec0e1fe4cb8af638504",
@@ -426,20 +426,20 @@
426
426
  "bytes": 1081
427
427
  },
428
428
  "config/app-config.d.ts": {
429
- "sha256": "3dfd25d14b9a4994f9d65652a0023074ed65f33e9e888148806d716d0186e603",
430
- "bytes": 1457
429
+ "sha256": "0cff34253cca35af8f435784fa367259b61b10029dca970ce91448f4e5352336",
430
+ "bytes": 1037
431
431
  },
432
432
  "config/app-config.js": {
433
- "sha256": "b8033dcf077cb0ab0978d5be1d7dca72edb2cd78eff9886e552ce8f14e26316f",
434
- "bytes": 2291
433
+ "sha256": "43827b728a0cda31d71de962413e8ffcb233cd636102d97b2117ebc578b11dc1",
434
+ "bytes": 1503
435
435
  },
436
436
  "config/config-file.d.ts": {
437
437
  "sha256": "13deb48a994605c4fe3336e47c20790dfa9f32f6760a46d1c4b2bbac6eb52dc4",
438
438
  "bytes": 506
439
439
  },
440
440
  "config/config-file.js": {
441
- "sha256": "22006b77ef2c6094c86b97007371b96fbd8792accec652c49bdcccaa40ad327f",
442
- "bytes": 7277
441
+ "sha256": "0cc52af9582758062c0de48ec44d34bf4d012a4831d5075543a40b79125aa7e2",
442
+ "bytes": 7170
443
443
  },
444
444
  "config/feature-flags.d.ts": {
445
445
  "sha256": "49cdf81a9c4f31eca560af5257c569143d2138ec996468b949f9807b7ad7802e",
@@ -449,16 +449,16 @@
449
449
  "sha256": "5fe866e54f796975dec5d8ba9983aefd86074db212d3fccd64eed04bc9f0b3da",
450
450
  "bytes": 8011
451
451
  },
452
- "console-ui/assets/index-8dh0Psu-.css": {
453
- "sha256": "cf9d09641f1c31fffe6c7835b30bbbad52572befec1acab7fb9a0c188431af36",
454
- "bytes": 60355
452
+ "console-ui/assets/index-CQt4UhPB.js": {
453
+ "sha256": "401861d73e3e6a62d6fa42977fd52b20e114a68947a7bcb83b090cbd526fdeb3",
454
+ "bytes": 760528
455
455
  },
456
- "console-ui/assets/index-CXWCAonr.js": {
457
- "sha256": "c158530b825c05ca94f709c20579976d94af944c5777958993c1146ecf912c43",
458
- "bytes": 754955
456
+ "console-ui/assets/index-DGj8EsFR.css": {
457
+ "sha256": "3bdb55ec0957928e0ebbb86a7d6b36d28f7ba7d5c0f3e236fd8f2e2aacee2fa4",
458
+ "bytes": 60631
459
459
  },
460
460
  "console-ui/index.html": {
461
- "sha256": "638d7716dfecb261d018c33aa45210c15415df5d0c036d3d6e1eb7fa8f1667fa",
461
+ "sha256": "109c9d143b49794ec3b0a1ed4afb8a6a5c9cf7243c5c7ddc4865413ab12a9e10",
462
462
  "bytes": 417
463
463
  },
464
464
  "console/standalone-console.d.ts": {
@@ -470,12 +470,12 @@
470
470
  "bytes": 6325
471
471
  },
472
472
  "coordinators/pr-review.d.ts": {
473
- "sha256": "8d2d5155b30c6d54da0ef38e3bd3c855266d57848ac60d9cf29a3325698fde28",
474
- "bytes": 2815
473
+ "sha256": "15bb232eceb035d137b996590f44692a03d05674dfd7a7bd6bb5299345d55fd3",
474
+ "bytes": 3667
475
475
  },
476
476
  "coordinators/pr-review.js": {
477
- "sha256": "70f3288df0d243312a0301ea527bfdfe1b3284f19b57a2aeb2af3792e78f65ef",
478
- "bytes": 24166
477
+ "sha256": "c58a423eab61e1f210f6952129a9a0ab1ac21c648103149887328f71efb8b5b2",
478
+ "bytes": 31196
479
479
  },
480
480
  "core/error-handler.d.ts": {
481
481
  "sha256": "80451f12ac8e185133ec3dc4c57285491a785f27525ed21e729db1da3f61010d",
@@ -494,8 +494,8 @@
494
494
  "bytes": 9803
495
495
  },
496
496
  "daemon/daemon-events.d.ts": {
497
- "sha256": "2195c771ec4829b37291c4a2f96c022269792b080d323f0a03623625287da4eb",
498
- "bytes": 4196
497
+ "sha256": "8157d89411cb535d3c08d1f0a94a7bd9b5fa4934777133c0217917f83e56d95e",
498
+ "bytes": 4488
499
499
  },
500
500
  "daemon/daemon-events.js": {
501
501
  "sha256": "b6841eef4634bb266faf81961c1e387b535dd64a74d58582f3f2bad8c3469d95",
@@ -510,36 +510,36 @@
510
510
  "bytes": 14
511
511
  },
512
512
  "daemon/soul-template.d.ts": {
513
- "sha256": "9beb44afd3fe5f2dae8c9496e1c3a50a62d59165bf30c10af15dfe9b2a090fb7",
514
- "bytes": 1215
513
+ "sha256": "abe720ac2d0bdc23b6e0a2b4aed78ae241b6553fd8f6784d0961a915f54d13c2",
514
+ "bytes": 2245
515
515
  },
516
516
  "daemon/soul-template.js": {
517
- "sha256": "70d110e7f0e7d1ba65d43926db2d4907c21ba33f9e2403a9da785fed0a11b8a6",
518
- "bytes": 1009
517
+ "sha256": "d7c425a03d9a39994a2a961470a892bc8c5936b697b6a59fa161d19d72825015",
518
+ "bytes": 1512
519
519
  },
520
520
  "daemon/workflow-runner.d.ts": {
521
- "sha256": "6870cd7444074c43eae9451f97c9e4c0ea65462ca71ce51d9fae539defcacefc",
522
- "bytes": 4710
521
+ "sha256": "7025b0023c763c6899511c5d3635e9ab99bdc361616249aa25b36508753bf3a0",
522
+ "bytes": 6154
523
523
  },
524
524
  "daemon/workflow-runner.js": {
525
- "sha256": "f48238053a14dc07d032cc99502507fbb2e2937284efcfab91404715fcef7e47",
526
- "bytes": 63877
525
+ "sha256": "53db37bda845975ca06f81e4df9db458bb5edc6a531f9574a4aeee08f06041bb",
526
+ "bytes": 84353
527
527
  },
528
528
  "di/container.d.ts": {
529
529
  "sha256": "003bb7fb7478d627524b9b1e76bd0a963a243794a687ff233b96dc0e33a06d9f",
530
530
  "bytes": 620
531
531
  },
532
532
  "di/container.js": {
533
- "sha256": "a3ac972a1d9d6412084cebffb1e612f855f8042c861223d9b849c6569af68f5c",
534
- "bytes": 22040
533
+ "sha256": "55c5218cb3a7e7a5735c475430e6d865b5d3d538c5680d872da0f1eb2e23acba",
534
+ "bytes": 20676
535
535
  },
536
536
  "di/tokens.d.ts": {
537
- "sha256": "04db6db34348aa36d897c85ab07eb1a386cb04e3595dbcb33525bd33974111ef",
538
- "bytes": 2083
537
+ "sha256": "66ac822b61508e3f9e92f8ccbefe4e86ed15315cde7cbdb19ff794cf7a9cfc4c",
538
+ "bytes": 1964
539
539
  },
540
540
  "di/tokens.js": {
541
- "sha256": "a1c92d99ea499260dedfcdad612873b92be7a8f02dca5dcb0be3ec5a9daf87cc",
542
- "bytes": 2584
541
+ "sha256": "f38db2853a1b299025f7226d80443ae3205ce80f7509f1b5a5c3f876fb671caa",
542
+ "bytes": 2422
543
543
  },
544
544
  "domain/execution/error.d.ts": {
545
545
  "sha256": "2eac85c42ec399a23724f868641eeadd0d196b4d324ee4caaff82a6b46155bd9",
@@ -594,8 +594,8 @@
594
594
  "bytes": 213
595
595
  },
596
596
  "engine/engine-factory.js": {
597
- "sha256": "876e8f1a5b8e44e05420a04855d0a17792644b8402be91657210d99d2cb57885",
598
- "bytes": 13990
597
+ "sha256": "2a920f5266fbaaa8bb7535bdc60e39472fad95e31d851ce402a0181c86afa2b7",
598
+ "bytes": 13964
599
599
  },
600
600
  "engine/index.d.ts": {
601
601
  "sha256": "91e12882c565e96a9809fdf43a0dc0a77fdffdfd562aaf43d2e86e6590ed0b16",
@@ -653,6 +653,14 @@
653
653
  "sha256": "1eca695e42de62caceca46ca6721af36b3756bc3bf8ae211c7d96ab14f396d3d",
654
654
  "bytes": 1361
655
655
  },
656
+ "infrastructure/console-defaults.d.ts": {
657
+ "sha256": "2af729f7876b47df5a590f385d4a949eeae1718488d283a5fa9e7f0e735577ad",
658
+ "bytes": 50
659
+ },
660
+ "infrastructure/console-defaults.js": {
661
+ "sha256": "cbec2e7764df68767403d9e46219d046ee0552a70ae06a380aeaea728507519d",
662
+ "bytes": 153
663
+ },
656
664
  "infrastructure/index.d.ts": {
657
665
  "sha256": "af0c8fc5a595bc00e3bcc400a9ce8b5a0cb3f4d1a8acf880bcd4d5a3099a594e",
658
666
  "bytes": 27
@@ -661,30 +669,6 @@
661
669
  "sha256": "ad16f3653a4de77225915108de61fa1eca6c86734a402d6f0d3e2408da65a139",
662
670
  "bytes": 802
663
671
  },
664
- "infrastructure/session/DashboardHeartbeat.d.ts": {
665
- "sha256": "d265457c0305cd34e7c7d1db52c3c16b4014465dc9258f614c75589fbb760727",
666
- "bytes": 224
667
- },
668
- "infrastructure/session/DashboardHeartbeat.js": {
669
- "sha256": "9f07b14090e5dd1d142164150680e1fdb8154f4ac2d41baac39fac0ffde3b060",
670
- "bytes": 1287
671
- },
672
- "infrastructure/session/DashboardLockRelease.d.ts": {
673
- "sha256": "409ed0524d32b2dcbb144148975839d8976e70aff230cf482d84ba76de4da3da",
674
- "bytes": 143
675
- },
676
- "infrastructure/session/DashboardLockRelease.js": {
677
- "sha256": "24f4e4236299d4ae329fab6bfbe0da762ef1c04c4137aecbcccdcd05b4c91d94",
678
- "bytes": 818
679
- },
680
- "infrastructure/session/HttpServer.d.ts": {
681
- "sha256": "79c0d8855d9437084756186f5e115aab82c829f48bafc1a5742903a1e7d808b6",
682
- "bytes": 2025
683
- },
684
- "infrastructure/session/HttpServer.js": {
685
- "sha256": "5ff243e7daf8fb84667ab395a0b1ec4b78dc516d5279e69e6f02dae168070438",
686
- "bytes": 35586
687
- },
688
672
  "infrastructure/session/SessionDataNormalizer.d.ts": {
689
673
  "sha256": "c89bb5e00d7d01fb4aa6d0095602541de53c425c6b99b67fa8367eb29cb63e9e",
690
674
  "bytes": 1859
@@ -710,12 +694,12 @@
710
694
  "bytes": 21438
711
695
  },
712
696
  "infrastructure/session/index.d.ts": {
713
- "sha256": "52957847da70fcece6a553334bd899efd8ede55cc31f3aa5eb5e3d4bb70e3862",
714
- "bytes": 140
697
+ "sha256": "1a1727565eb51ca32da6e0595f9b5c16f3b32f626c0be1198b7ccdd8c74aebd7",
698
+ "bytes": 80
715
699
  },
716
700
  "infrastructure/session/index.js": {
717
- "sha256": "6b9a5ff89c911be1004bec3cb6bfbb22d317dc023470b9e176304f92c70dfa26",
718
- "bytes": 501
701
+ "sha256": "67548e0e96b01f0cc987b8f10f937779d84f8bc31f0525cd77c3e3902726fa38",
702
+ "bytes": 305
719
703
  },
720
704
  "infrastructure/storage/caching-workflow-storage.d.ts": {
721
705
  "sha256": "27431341a28424c78a882f9de03ba0e9d904ea0a79cf8d29dae5d460c56cec36",
@@ -854,12 +838,12 @@
854
838
  "bytes": 6122
855
839
  },
856
840
  "mcp/handlers/session.d.ts": {
857
- "sha256": "38926e69a0e4935d1dbcdc53848be9fff0e4d8f96827883da3216f217918fa82",
858
- "bytes": 1394
841
+ "sha256": "79170e84eeeea60e8b79e1f04d1b302418fb4b77cfac6e61b8895222122409e1",
842
+ "bytes": 1417
859
843
  },
860
844
  "mcp/handlers/session.js": {
861
- "sha256": "9603507080bed6ed3600bd25df241db4df61a3c85ac1883e671e05d41902b886",
862
- "bytes": 5639
845
+ "sha256": "be770b456c0ae0381bc5159d27f115c7829da5f0236736aad7ee237f77e0fa58",
846
+ "bytes": 7675
863
847
  },
864
848
  "mcp/handlers/shared/remembered-roots.d.ts": {
865
849
  "sha256": "d98e4c6dbce6333248fd2e015efe482aab2882db61855e9b0576d50881bb0ea2",
@@ -1170,8 +1154,8 @@
1170
1154
  "bytes": 960
1171
1155
  },
1172
1156
  "mcp/server.js": {
1173
- "sha256": "655e05345310422de6487e9f045e04c53266eb0c71d4a6482a605c67761eb25e",
1174
- "bytes": 16962
1157
+ "sha256": "b4bb802ebe0fe7374ff0c60062bc9950fc2aba9aef21934805d16d531c0e8313",
1158
+ "bytes": 15911
1175
1159
  },
1176
1160
  "mcp/step-content-envelope.d.ts": {
1177
1161
  "sha256": "19bd63c4d4de1d5d93393d346625d28ffd1bebdc320d4ba4e694cb740ec97d3b",
@@ -1234,8 +1218,8 @@
1234
1218
  "bytes": 70
1235
1219
  },
1236
1220
  "mcp/transports/http-entry.js": {
1237
- "sha256": "bace094c4e67408b846ba8f1e2084bd576a9125d99cfd553e91acfe983322694",
1238
- "bytes": 3636
1221
+ "sha256": "3f75378532c8780b11ab040a3617062e467be3dae85a7964b89e7df577b83507",
1222
+ "bytes": 3556
1239
1223
  },
1240
1224
  "mcp/transports/http-listener.d.ts": {
1241
1225
  "sha256": "6c6cd6dcfe110ed8fa1dc2f9c96caba55959555f98048d3694ac104f42d6d51a",
@@ -1258,8 +1242,8 @@
1258
1242
  "bytes": 59
1259
1243
  },
1260
1244
  "mcp/transports/stdio-entry.js": {
1261
- "sha256": "907ddc69b7d182f6cc2c03aa375e45adec400a7af263c709914edd92af47cb2a",
1262
- "bytes": 4360
1245
+ "sha256": "6250cc570b42d7f9fdd570429a131065bf3278728a9cf595ab03d3fef54908fe",
1246
+ "bytes": 4288
1263
1247
  },
1264
1248
  "mcp/transports/transport-mode.d.ts": {
1265
1249
  "sha256": "1c59128ab0174bd2a113fff17521e6339ca367f2b8980c2f2c164ec393c10518",
@@ -1270,8 +1254,8 @@
1270
1254
  "bytes": 747
1271
1255
  },
1272
1256
  "mcp/types.d.ts": {
1273
- "sha256": "26de47115c67e38a7e3659bc404c60b3259b9bf5351286281876ebcaeea8a4ab",
1274
- "bytes": 5100
1257
+ "sha256": "801d390c856e733b5c728d0500dffc8c40c1247892682f58655aba1a9dfb9653",
1258
+ "bytes": 4981
1275
1259
  },
1276
1260
  "mcp/types.js": {
1277
1261
  "sha256": "d10c4070e4c3454d80f0fa9cdc0e978c69c53c13fd09baa8710fcd802fed8926",
@@ -1542,12 +1526,12 @@
1542
1526
  "bytes": 2763
1543
1527
  },
1544
1528
  "trigger/daemon-console.d.ts": {
1545
- "sha256": "8c1dca4a4683e4a96a8dc007df556309da0d2a2076ff0981c3b80f148cb5b3ad",
1546
- "bytes": 937
1529
+ "sha256": "a33ed256bb74a98031488e5bea3ff88d97b1650ac45158e79490cd7f4139d20b",
1530
+ "bytes": 1048
1547
1531
  },
1548
1532
  "trigger/daemon-console.js": {
1549
- "sha256": "51056eff122fea677803e8f17f800aa94c03cc796210f8d2ef40e767710444d0",
1550
- "bytes": 5448
1533
+ "sha256": "c5cbdb7bcf171a9c7c844a0d45f62b0fbadb44c2ff1f3c802aa82e5b652664ed",
1534
+ "bytes": 5471
1551
1535
  },
1552
1536
  "trigger/delivery-action.d.ts": {
1553
1537
  "sha256": "58109eaa7124d2864e1d872ff0148548932d2fa4d7e672f5fd83d4bbe40afdda",
@@ -1598,28 +1582,28 @@
1598
1582
  "bytes": 10255
1599
1583
  },
1600
1584
  "trigger/trigger-listener.d.ts": {
1601
- "sha256": "8f1ee8650d1f7ea099b080f44d4ac5fdc0e870e80b5ea23a1003460170e239fd",
1602
- "bytes": 1529
1585
+ "sha256": "92e971ab8f47c3c867860cffc01f54c4aae54fcc4ae199b9469210f4ce639423",
1586
+ "bytes": 1639
1603
1587
  },
1604
1588
  "trigger/trigger-listener.js": {
1605
- "sha256": "23f1eed165ae7ec03b2c46ff6d6fdf46f631319d5d58d3a993f710d2732e41f1",
1606
- "bytes": 10585
1589
+ "sha256": "347ce68b2b6d14be5277488e7d54ac0d9e80173407ee12dbb2f7df90765bac3c",
1590
+ "bytes": 10668
1607
1591
  },
1608
1592
  "trigger/trigger-router.d.ts": {
1609
- "sha256": "5293a744ac4763380716ec7c0b31f16531b9a666d08a3524c6c7993486a728b6",
1610
- "bytes": 2010
1593
+ "sha256": "b02e4c24865fc2ede2193d5b83d12a2b25b3c368a5acfdde0f7bd91865091329",
1594
+ "bytes": 2123
1611
1595
  },
1612
1596
  "trigger/trigger-router.js": {
1613
- "sha256": "46b4a49b980810e85889f3645e6160cee038e391b808ac9aea4609d8c8086455",
1614
- "bytes": 15874
1597
+ "sha256": "6584949ecc6bd8fe5d23bfe5b3b7feb3a488804987b2edd90733d2c0142aeec2",
1598
+ "bytes": 15973
1615
1599
  },
1616
1600
  "trigger/trigger-store.d.ts": {
1617
1601
  "sha256": "7afb05127d55bc3757a550dd15d4b797766b3fff29d1bfe76b303764b93322e7",
1618
1602
  "bytes": 1588
1619
1603
  },
1620
1604
  "trigger/trigger-store.js": {
1621
- "sha256": "a3385bef29f0741e22627c0ddf81fd2189845f182ed87cc2830eb56c309097cf",
1622
- "bytes": 34042
1605
+ "sha256": "4e03bf0bea132c67087d69e07f3d9abddb504396438437705c26c9e7870b0680",
1606
+ "bytes": 34667
1623
1607
  },
1624
1608
  "trigger/types.d.ts": {
1625
1609
  "sha256": "c0f14b59c95cae52e06f8d9fe841292886587fad20497fd6686e842cc5696d3a",
@@ -2934,24 +2918,24 @@
2934
2918
  "bytes": 4795
2935
2919
  },
2936
2920
  "v2/usecases/console-routes.d.ts": {
2937
- "sha256": "41cfffc165d2f98327b78ca86c92d69269cc399f6239ee394377af538ace4df1",
2938
- "bytes": 697
2921
+ "sha256": "ac61f68638291f9ce1d7709bcfc478a74cdc41219d629bd8ed2c5c996e545736",
2922
+ "bytes": 798
2939
2923
  },
2940
2924
  "v2/usecases/console-routes.js": {
2941
- "sha256": "ebc39fb04a1bfdfd2f9159ef7728f5a0cafd3384d6191c5a0bc6862b8918d298",
2942
- "bytes": 28445
2925
+ "sha256": "89749c3462728cd2a821af7e4cad61d2d42b8f580765f644c9f4e9d1e9187bd1",
2926
+ "bytes": 29558
2943
2927
  },
2944
2928
  "v2/usecases/console-service.d.ts": {
2945
2929
  "sha256": "fc8fe65427fa9f4f3535344b385b36f66ca06b7e3bfaea708931817a3edcad2b",
2946
2930
  "bytes": 1701
2947
2931
  },
2948
2932
  "v2/usecases/console-service.js": {
2949
- "sha256": "b14048889eca919325680e1e61d786519ba863567235134a844f32c23c75b830",
2950
- "bytes": 38111
2933
+ "sha256": "23f02155dc02d824835af7f6852182140ba391ac8df935bdc16f6871abb7de02",
2934
+ "bytes": 38580
2951
2935
  },
2952
2936
  "v2/usecases/console-types.d.ts": {
2953
- "sha256": "b2f0161db2bd9dba2d75226b51a91f55f657566951a82e7ac0b692f038e36596",
2954
- "bytes": 7716
2937
+ "sha256": "4699624ef9f22b27c74c371ca2a4c547389e5b45be47f32241aa620b57b3af33",
2938
+ "bytes": 7761
2955
2939
  },
2956
2940
  "v2/usecases/console-types.js": {
2957
2941
  "sha256": "d43aa81f5bc89faa359e0f97c814ba25155591ff078fbb9bfd40f8c7c9683230",
@@ -27,6 +27,7 @@ export interface ReadSessionSchemaOutput {
27
27
  }
28
28
  export interface OpenDashboardOutput {
29
29
  url: string;
30
+ guidance?: string;
30
31
  }
31
32
  export declare function handleCreateSession(input: CreateSessionInput, ctx: ToolContext): Promise<ToolResult<CreateSessionOutput>>;
32
33
  export declare function handleUpdateSession(input: UpdateSessionInput, ctx: ToolContext): Promise<ToolResult<UpdateSessionOutput>>;
@@ -1,10 +1,47 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.handleCreateSession = handleCreateSession;
4
37
  exports.handleUpdateSession = handleUpdateSession;
5
38
  exports.handleReadSession = handleReadSession;
6
39
  exports.handleOpenDashboard = handleOpenDashboard;
40
+ const fs = __importStar(require("fs/promises"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
7
43
  const types_js_1 = require("../types.js");
44
+ const console_defaults_js_1 = require("../../infrastructure/console-defaults.js");
8
45
  const SESSION_SCHEMA_OVERVIEW = {
9
46
  description: 'Bug Investigation Session Data Structure',
10
47
  mainSections: {
@@ -39,7 +76,7 @@ const SESSION_SCHEMA_OVERVIEW = {
39
76
  fullSchemaDoc: 'See docs/dashboard-architecture/bug-investigation-session-schema.md for complete details',
40
77
  };
41
78
  function requireSessionTools(ctx) {
42
- if (!ctx.sessionManager || !ctx.httpServer) {
79
+ if (!ctx.sessionManager) {
43
80
  return (0, types_js_1.errNotRetryable)('PRECONDITION_FAILED', 'Session tools are not enabled', { suggestion: 'Set WORKRAIL_ENABLE_SESSION_TOOLS=true to enable session tools' });
44
81
  }
45
82
  return null;
@@ -49,14 +86,12 @@ async function handleCreateSession(input, ctx) {
49
86
  if (guardError)
50
87
  return guardError;
51
88
  const sessionManager = ctx.sessionManager;
52
- const httpServer = ctx.httpServer;
53
89
  const res = await sessionManager.createSession(input.workflowId, input.sessionId, input.initialData);
54
90
  if (res.isErr()) {
55
91
  return (0, types_js_1.errNotRetryable)('INTERNAL_ERROR', res.error.message);
56
92
  }
57
93
  const session = res.value;
58
- const baseUrl = httpServer.getBaseUrl();
59
- const dashboardUrl = baseUrl ? `${baseUrl}?session=${input.sessionId}` : null;
94
+ const dashboardUrl = `http://localhost:${console_defaults_js_1.DEFAULT_CONSOLE_PORT}?session=${input.sessionId}`;
60
95
  const payload = {
61
96
  sessionId: session.id,
62
97
  workflowId: session.workflowId,
@@ -110,17 +145,30 @@ async function handleReadSession(input, ctx) {
110
145
  };
111
146
  return (0, types_js_1.success)(payload);
112
147
  }
148
+ async function readConsoleLockPort() {
149
+ const lockPath = path.join(os.homedir(), '.workrail', 'daemon-console.lock');
150
+ try {
151
+ const raw = await fs.readFile(lockPath, 'utf-8');
152
+ const data = JSON.parse(raw);
153
+ if (data !== null && typeof data === 'object' && 'port' in data && typeof data.port === 'number') {
154
+ return data.port;
155
+ }
156
+ return console_defaults_js_1.DEFAULT_CONSOLE_PORT;
157
+ }
158
+ catch {
159
+ return console_defaults_js_1.DEFAULT_CONSOLE_PORT;
160
+ }
161
+ }
113
162
  async function handleOpenDashboard(input, ctx) {
114
163
  const guardError = requireSessionTools(ctx);
115
164
  if (guardError)
116
165
  return guardError;
117
- const httpServer = ctx.httpServer;
118
- try {
119
- const url = await httpServer.openDashboard(input.sessionId);
120
- const payload = { url };
121
- return (0, types_js_1.success)(payload);
122
- }
123
- catch (err) {
124
- return (0, types_js_1.errNotRetryable)('INTERNAL_ERROR', err instanceof Error ? err.message : 'Failed to open dashboard');
125
- }
166
+ const port = await readConsoleLockPort();
167
+ const sessionQuery = input.sessionId ? `?session=${input.sessionId}` : '';
168
+ const url = `http://localhost:${port}${sessionQuery}`;
169
+ const payload = {
170
+ url,
171
+ guidance: "Run 'worktrain console' to start the dashboard UI if it's not already running.",
172
+ };
173
+ return (0, types_js_1.success)(payload);
126
174
  }
@@ -59,11 +59,9 @@ async function createToolContext() {
59
59
  const workflowService = container_js_1.container.resolve(tokens_js_1.DI.Services.Workflow);
60
60
  const featureFlags = container_js_1.container.resolve(tokens_js_1.DI.Infra.FeatureFlags);
61
61
  let sessionManager = null;
62
- let httpServer = null;
63
62
  if (featureFlags.isEnabled('sessionTools')) {
64
63
  sessionManager = container_js_1.container.resolve(tokens_js_1.DI.Infra.SessionManager);
65
- httpServer = container_js_1.container.resolve(tokens_js_1.DI.Infra.HttpServer);
66
- console.error('[FeatureFlags] Session tools enabled');
64
+ console.error('[FeatureFlags] Session tools enabled (use \'worktrain console\' for the dashboard UI)');
67
65
  }
68
66
  else {
69
67
  console.error('[FeatureFlags] Session tools disabled (enable with WORKRAIL_ENABLE_SESSION_TOOLS=true)');
@@ -150,7 +148,6 @@ async function createToolContext() {
150
148
  workflowService,
151
149
  featureFlags,
152
150
  sessionManager,
153
- httpServer,
154
151
  v2,
155
152
  };
156
153
  }
@@ -178,20 +175,6 @@ async function composeServer() {
178
175
  const toolCallsPerfFile = ctx.v2?.dataDir
179
176
  ? path.join(ctx.v2.dataDir.perfDir(), 'tool-calls.jsonl')
180
177
  : null;
181
- if (ctx.v2 && ctx.httpServer && ctx.v2.dataDir && ctx.v2.directoryListing) {
182
- const { ConsoleService } = await Promise.resolve().then(() => __importStar(require('../v2/usecases/console-service.js')));
183
- const { mountConsoleRoutes } = await Promise.resolve().then(() => __importStar(require('../v2/usecases/console-routes.js')));
184
- const consoleService = new ConsoleService({
185
- directoryListing: ctx.v2.directoryListing,
186
- dataDir: ctx.v2.dataDir,
187
- sessionStore: ctx.v2.sessionStore,
188
- snapshotStore: ctx.v2.snapshotStore,
189
- pinnedWorkflowStore: ctx.v2.pinnedStore,
190
- });
191
- ctx.httpServer.mountRoutes((app) => mountConsoleRoutes(app, consoleService, ctx.workflowService, timingRingBuffer, toolCallsPerfFile ?? undefined, serverVersion, ctx.v2 ? ctx : undefined));
192
- console.error('[Console] v2 Console API routes mounted at /api/v2/');
193
- }
194
- ctx.httpServer?.finalize();
195
178
  const descriptionProvider = container_js_1.container.resolve(tokens_js_1.DI.Mcp.DescriptionProvider);
196
179
  const buildTool = (0, tool_factory_js_1.createToolFactory)(descriptionProvider);
197
180
  const workflowEdition = (0, workflow_tool_edition_selector_js_1.selectWorkflowToolEdition)(ctx.featureFlags, buildTool);
@@ -52,7 +52,6 @@ async function startHttpServer(port) {
52
52
  const listener = await (0, http_listener_js_1.bindWithPortFallback)(port, scanEnd);
53
53
  (0, fatal_exit_js_1.registerGracefulShutdown)(async () => {
54
54
  await listener.stop();
55
- await ctx.httpServer?.stop();
56
55
  });
57
56
  const { StreamableHTTPServerTransport } = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/server/streamableHttp.js')));
58
57
  const transport = new StreamableHTTPServerTransport({
@@ -73,7 +72,6 @@ async function startHttpServer(port) {
73
72
  (0, shutdown_hooks_js_1.wireShutdownHooks)({
74
73
  onBeforeTerminate: async () => {
75
74
  await listener.stop();
76
- await ctx.httpServer?.stop();
77
75
  },
78
76
  });
79
77
  }
@@ -50,7 +50,7 @@ async function startStdioServer() {
50
50
  (0, fatal_exit_js_1.registerFatalHandlers)('stdio');
51
51
  (0, fatal_exit_js_1.logStartup)('stdio');
52
52
  const { server, ctx, rootsManager } = await (0, server_js_1.composeServer)();
53
- (0, fatal_exit_js_1.registerGracefulShutdown)(async () => { await ctx.httpServer?.stop(); });
53
+ (0, fatal_exit_js_1.registerGracefulShutdown)(async () => { });
54
54
  const { StdioServerTransport } = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/server/stdio.js')));
55
55
  const { RootsListChangedNotificationSchema, } = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/types.js')));
56
56
  server.setNotificationHandler(RootsListChangedNotificationSchema, async () => {
@@ -100,7 +100,6 @@ async function startStdioServer() {
100
100
  (0, shutdown_hooks_js_1.wireStdinShutdown)();
101
101
  (0, shutdown_hooks_js_1.wireShutdownHooks)({
102
102
  onBeforeTerminate: async () => {
103
- await ctx.httpServer?.stop();
104
103
  },
105
104
  });
106
105
  }
@@ -1,7 +1,6 @@
1
1
  import type { WorkflowService } from '../application/services/workflow-service.js';
2
2
  import type { IFeatureFlagProvider } from '../config/feature-flags.js';
3
3
  import type { SessionManager } from '../infrastructure/session/SessionManager.js';
4
- import type { HttpServer } from '../infrastructure/session/HttpServer.js';
5
4
  import type { SessionHealthV2 } from '../v2/durable-core/schemas/session/session-health.js';
6
5
  import type { ExecutionSessionGateV2 } from '../v2/usecases/execution-session-gate.js';
7
6
  import type { SessionEventLogAppendStorePortV2, SessionEventLogReadonlyStorePortV2 } from '../v2/ports/session-event-log-store.port.js';
@@ -75,7 +74,6 @@ export interface ToolContext {
75
74
  readonly workflowService: WorkflowService;
76
75
  readonly featureFlags: IFeatureFlagProvider;
77
76
  readonly sessionManager: SessionManager | null;
78
- readonly httpServer: HttpServer | null;
79
77
  readonly v2: V2Dependencies | null;
80
78
  }
81
79
  export interface V2ToolContext extends ToolContext {
@@ -2,6 +2,7 @@ import 'reflect-metadata';
2
2
  import type { V2ToolContext } from '../mcp/types.js';
3
3
  import type { TriggerRouter } from './trigger-router.js';
4
4
  import type { WorkflowService } from '../application/services/workflow-service.js';
5
+ import type { SteerRegistry } from '../daemon/workflow-runner.js';
5
6
  import type { Result } from '../runtime/result.js';
6
7
  export interface DaemonConsoleHandle {
7
8
  readonly port: number;
@@ -20,5 +21,6 @@ export interface StartDaemonConsoleOptions {
20
21
  readonly serverVersion?: string;
21
22
  readonly workflowService?: WorkflowService;
22
23
  readonly lockFilePath?: string;
24
+ readonly steerRegistry?: SteerRegistry;
23
25
  }
24
26
  export declare function startDaemonConsole(ctx: V2ToolContext, options?: StartDaemonConsoleOptions): Promise<Result<DaemonConsoleHandle, DaemonConsoleError>>;
@@ -68,7 +68,7 @@ async function startDaemonConsole(ctx, options = {}) {
68
68
  snapshotStore: ctx.v2.snapshotStore,
69
69
  pinnedWorkflowStore: ctx.v2.pinnedStore,
70
70
  });
71
- const stopWatcher = mountConsoleRoutes(app, consoleService, options.workflowService, undefined, undefined, options.serverVersion, ctx, options.triggerRouter);
71
+ const stopWatcher = mountConsoleRoutes(app, consoleService, options.workflowService, undefined, undefined, options.serverVersion, ctx, options.triggerRouter, options.steerRegistry);
72
72
  app.use((req, res) => {
73
73
  res.status(404).json({ success: false, error: 'Not found', path: req.path });
74
74
  });