@exaudeus/workrail 3.11.2 → 3.13.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 (77) hide show
  1. package/dist/console/assets/index-DW78t31j.css +1 -0
  2. package/dist/console/assets/index-EsSXrC_a.js +28 -0
  3. package/dist/console/index.html +2 -2
  4. package/dist/di/container.js +8 -0
  5. package/dist/di/tokens.d.ts +1 -0
  6. package/dist/di/tokens.js +1 -0
  7. package/dist/infrastructure/session/HttpServer.js +2 -14
  8. package/dist/manifest.json +139 -91
  9. package/dist/mcp/boundary-coercion.d.ts +2 -0
  10. package/dist/mcp/boundary-coercion.js +73 -0
  11. package/dist/mcp/handler-factory.d.ts +1 -1
  12. package/dist/mcp/handler-factory.js +13 -6
  13. package/dist/mcp/handlers/shared/request-workflow-reader.d.ts +10 -2
  14. package/dist/mcp/handlers/shared/request-workflow-reader.js +27 -10
  15. package/dist/mcp/handlers/shared/workflow-source-visibility.d.ts +3 -1
  16. package/dist/mcp/handlers/shared/workflow-source-visibility.js +7 -3
  17. package/dist/mcp/handlers/v2-execution/replay.js +25 -1
  18. package/dist/mcp/handlers/v2-execution/start.js +23 -17
  19. package/dist/mcp/handlers/v2-manage-workflow-source.d.ts +7 -0
  20. package/dist/mcp/handlers/v2-manage-workflow-source.js +50 -0
  21. package/dist/mcp/handlers/v2-workflow.js +123 -8
  22. package/dist/mcp/output-schemas.d.ts +393 -0
  23. package/dist/mcp/output-schemas.js +49 -1
  24. package/dist/mcp/server.js +2 -0
  25. package/dist/mcp/tool-descriptions.js +20 -0
  26. package/dist/mcp/tools.js +6 -0
  27. package/dist/mcp/types/tool-description-types.d.ts +1 -1
  28. package/dist/mcp/types/tool-description-types.js +1 -0
  29. package/dist/mcp/types/workflow-tool-edition.d.ts +1 -1
  30. package/dist/mcp/types.d.ts +2 -0
  31. package/dist/mcp/v2/tool-registry.js +8 -0
  32. package/dist/mcp/v2/tools.d.ts +15 -0
  33. package/dist/mcp/v2/tools.js +8 -1
  34. package/dist/v2/durable-core/constants.d.ts +1 -0
  35. package/dist/v2/durable-core/constants.js +2 -1
  36. package/dist/v2/durable-core/domain/observation-builder.d.ts +4 -1
  37. package/dist/v2/durable-core/domain/observation-builder.js +9 -0
  38. package/dist/v2/durable-core/schemas/export-bundle/index.d.ts +76 -16
  39. package/dist/v2/durable-core/schemas/session/events.d.ts +26 -5
  40. package/dist/v2/durable-core/schemas/session/events.js +2 -1
  41. package/dist/v2/infra/in-memory/managed-source-store/index.d.ts +8 -0
  42. package/dist/v2/infra/in-memory/managed-source-store/index.js +33 -0
  43. package/dist/v2/infra/local/data-dir/index.d.ts +2 -0
  44. package/dist/v2/infra/local/data-dir/index.js +6 -0
  45. package/dist/v2/infra/local/managed-source-store/index.d.ts +15 -0
  46. package/dist/v2/infra/local/managed-source-store/index.js +164 -0
  47. package/dist/v2/infra/local/session-summary-provider/index.js +2 -0
  48. package/dist/v2/infra/local/workspace-anchor/index.js +1 -0
  49. package/dist/v2/ports/data-dir.port.d.ts +2 -0
  50. package/dist/v2/ports/managed-source-store.port.d.ts +25 -0
  51. package/dist/v2/ports/managed-source-store.port.js +2 -0
  52. package/dist/v2/ports/workspace-anchor.port.d.ts +3 -0
  53. package/dist/v2/projections/resume-ranking.d.ts +1 -0
  54. package/dist/v2/usecases/console-routes.js +26 -0
  55. package/dist/v2/usecases/console-service.js +25 -6
  56. package/dist/v2/usecases/console-types.d.ts +22 -1
  57. package/dist/v2/usecases/worktree-service.d.ts +10 -0
  58. package/dist/v2/usecases/worktree-service.js +136 -0
  59. package/package.json +1 -1
  60. package/workflows/adaptive-ticket-creation.json +276 -282
  61. package/workflows/architecture-scalability-audit.json +317 -0
  62. package/workflows/document-creation-workflow.json +70 -191
  63. package/workflows/documentation-update-workflow.json +59 -309
  64. package/workflows/intelligent-test-case-generation.json +37 -212
  65. package/workflows/personal-learning-materials-creation-branched.json +1 -21
  66. package/workflows/presentation-creation.json +143 -308
  67. package/workflows/relocation-workflow-us.json +161 -535
  68. package/workflows/routines/tension-driven-design.json +5 -5
  69. package/workflows/scoped-documentation-workflow.json +110 -181
  70. package/workflows/workflow-for-workflows.v2.json +21 -5
  71. package/dist/console/assets/index-C5C4nDs4.css +0 -1
  72. package/dist/console/assets/index-CSUqsoQl.js +0 -28
  73. package/workflows/CHANGELOG-bug-investigation.md +0 -298
  74. package/workflows/bug-investigation.agentic.json +0 -212
  75. package/workflows/bug-investigation.json +0 -112
  76. package/workflows/mr-review-workflow.agentic.json +0 -538
  77. package/workflows/mr-review-workflow.json +0 -277
@@ -286,6 +286,97 @@ export declare const V2WorkflowListItemSchema: z.ZodObject<{
286
286
  } | undefined;
287
287
  } | undefined;
288
288
  }>;
289
+ export declare const V2WorkflowSourceCatalogEntrySchema: z.ZodObject<{
290
+ sourceKey: z.ZodString;
291
+ category: z.ZodEnum<["built_in", "personal", "legacy_project", "rooted_sharing", "external"]>;
292
+ source: z.ZodObject<{
293
+ kind: z.ZodEnum<["bundled", "user", "project", "custom", "git", "remote", "plugin"]>;
294
+ displayName: z.ZodString;
295
+ }, "strip", z.ZodTypeAny, {
296
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
297
+ displayName: string;
298
+ }, {
299
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
300
+ displayName: string;
301
+ }>;
302
+ sourceMode: z.ZodEnum<["built_in", "personal", "legacy_project", "rooted_sharing", "live_directory"]>;
303
+ effectiveWorkflowCount: z.ZodNumber;
304
+ totalWorkflowCount: z.ZodNumber;
305
+ shadowedWorkflowCount: z.ZodNumber;
306
+ rootedSharing: z.ZodOptional<z.ZodObject<{
307
+ kind: z.ZodLiteral<"remembered_root">;
308
+ rootPath: z.ZodString;
309
+ groupLabel: z.ZodString;
310
+ }, "strip", z.ZodTypeAny, {
311
+ kind: "remembered_root";
312
+ rootPath: string;
313
+ groupLabel: string;
314
+ }, {
315
+ kind: "remembered_root";
316
+ rootPath: string;
317
+ groupLabel: string;
318
+ }>>;
319
+ migration: z.ZodOptional<z.ZodObject<{
320
+ preferredSource: z.ZodLiteral<"rooted_sharing">;
321
+ currentSource: z.ZodLiteral<"legacy_project">;
322
+ reason: z.ZodLiteral<"legacy_project_precedence">;
323
+ summary: z.ZodString;
324
+ }, "strip", z.ZodTypeAny, {
325
+ summary: string;
326
+ reason: "legacy_project_precedence";
327
+ preferredSource: "rooted_sharing";
328
+ currentSource: "legacy_project";
329
+ }, {
330
+ summary: string;
331
+ reason: "legacy_project_precedence";
332
+ preferredSource: "rooted_sharing";
333
+ currentSource: "legacy_project";
334
+ }>>;
335
+ }, "strip", z.ZodTypeAny, {
336
+ source: {
337
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
338
+ displayName: string;
339
+ };
340
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
341
+ sourceKey: string;
342
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
343
+ effectiveWorkflowCount: number;
344
+ totalWorkflowCount: number;
345
+ shadowedWorkflowCount: number;
346
+ rootedSharing?: {
347
+ kind: "remembered_root";
348
+ rootPath: string;
349
+ groupLabel: string;
350
+ } | undefined;
351
+ migration?: {
352
+ summary: string;
353
+ reason: "legacy_project_precedence";
354
+ preferredSource: "rooted_sharing";
355
+ currentSource: "legacy_project";
356
+ } | undefined;
357
+ }, {
358
+ source: {
359
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
360
+ displayName: string;
361
+ };
362
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
363
+ sourceKey: string;
364
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
365
+ effectiveWorkflowCount: number;
366
+ totalWorkflowCount: number;
367
+ shadowedWorkflowCount: number;
368
+ rootedSharing?: {
369
+ kind: "remembered_root";
370
+ rootPath: string;
371
+ groupLabel: string;
372
+ } | undefined;
373
+ migration?: {
374
+ summary: string;
375
+ reason: "legacy_project_precedence";
376
+ preferredSource: "rooted_sharing";
377
+ currentSource: "legacy_project";
378
+ } | undefined;
379
+ }>;
289
380
  export declare const V2WorkflowListOutputSchema: z.ZodObject<{
290
381
  workflows: z.ZodArray<z.ZodObject<{
291
382
  workflowId: z.ZodString;
@@ -421,6 +512,98 @@ export declare const V2WorkflowListOutputSchema: z.ZodObject<{
421
512
  } | undefined;
422
513
  } | undefined;
423
514
  }>, "many">;
515
+ staleRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
516
+ sources: z.ZodOptional<z.ZodArray<z.ZodObject<{
517
+ sourceKey: z.ZodString;
518
+ category: z.ZodEnum<["built_in", "personal", "legacy_project", "rooted_sharing", "external"]>;
519
+ source: z.ZodObject<{
520
+ kind: z.ZodEnum<["bundled", "user", "project", "custom", "git", "remote", "plugin"]>;
521
+ displayName: z.ZodString;
522
+ }, "strip", z.ZodTypeAny, {
523
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
524
+ displayName: string;
525
+ }, {
526
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
527
+ displayName: string;
528
+ }>;
529
+ sourceMode: z.ZodEnum<["built_in", "personal", "legacy_project", "rooted_sharing", "live_directory"]>;
530
+ effectiveWorkflowCount: z.ZodNumber;
531
+ totalWorkflowCount: z.ZodNumber;
532
+ shadowedWorkflowCount: z.ZodNumber;
533
+ rootedSharing: z.ZodOptional<z.ZodObject<{
534
+ kind: z.ZodLiteral<"remembered_root">;
535
+ rootPath: z.ZodString;
536
+ groupLabel: z.ZodString;
537
+ }, "strip", z.ZodTypeAny, {
538
+ kind: "remembered_root";
539
+ rootPath: string;
540
+ groupLabel: string;
541
+ }, {
542
+ kind: "remembered_root";
543
+ rootPath: string;
544
+ groupLabel: string;
545
+ }>>;
546
+ migration: z.ZodOptional<z.ZodObject<{
547
+ preferredSource: z.ZodLiteral<"rooted_sharing">;
548
+ currentSource: z.ZodLiteral<"legacy_project">;
549
+ reason: z.ZodLiteral<"legacy_project_precedence">;
550
+ summary: z.ZodString;
551
+ }, "strip", z.ZodTypeAny, {
552
+ summary: string;
553
+ reason: "legacy_project_precedence";
554
+ preferredSource: "rooted_sharing";
555
+ currentSource: "legacy_project";
556
+ }, {
557
+ summary: string;
558
+ reason: "legacy_project_precedence";
559
+ preferredSource: "rooted_sharing";
560
+ currentSource: "legacy_project";
561
+ }>>;
562
+ }, "strip", z.ZodTypeAny, {
563
+ source: {
564
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
565
+ displayName: string;
566
+ };
567
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
568
+ sourceKey: string;
569
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
570
+ effectiveWorkflowCount: number;
571
+ totalWorkflowCount: number;
572
+ shadowedWorkflowCount: number;
573
+ rootedSharing?: {
574
+ kind: "remembered_root";
575
+ rootPath: string;
576
+ groupLabel: string;
577
+ } | undefined;
578
+ migration?: {
579
+ summary: string;
580
+ reason: "legacy_project_precedence";
581
+ preferredSource: "rooted_sharing";
582
+ currentSource: "legacy_project";
583
+ } | undefined;
584
+ }, {
585
+ source: {
586
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
587
+ displayName: string;
588
+ };
589
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
590
+ sourceKey: string;
591
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
592
+ effectiveWorkflowCount: number;
593
+ totalWorkflowCount: number;
594
+ shadowedWorkflowCount: number;
595
+ rootedSharing?: {
596
+ kind: "remembered_root";
597
+ rootPath: string;
598
+ groupLabel: string;
599
+ } | undefined;
600
+ migration?: {
601
+ summary: string;
602
+ reason: "legacy_project_precedence";
603
+ preferredSource: "rooted_sharing";
604
+ currentSource: "legacy_project";
605
+ } | undefined;
606
+ }>, "many">>;
424
607
  }, "strip", z.ZodTypeAny, {
425
608
  workflows: {
426
609
  kind: "workflow";
@@ -448,6 +631,30 @@ export declare const V2WorkflowListOutputSchema: z.ZodObject<{
448
631
  } | undefined;
449
632
  } | undefined;
450
633
  }[];
634
+ sources?: {
635
+ source: {
636
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
637
+ displayName: string;
638
+ };
639
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
640
+ sourceKey: string;
641
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
642
+ effectiveWorkflowCount: number;
643
+ totalWorkflowCount: number;
644
+ shadowedWorkflowCount: number;
645
+ rootedSharing?: {
646
+ kind: "remembered_root";
647
+ rootPath: string;
648
+ groupLabel: string;
649
+ } | undefined;
650
+ migration?: {
651
+ summary: string;
652
+ reason: "legacy_project_precedence";
653
+ preferredSource: "rooted_sharing";
654
+ currentSource: "legacy_project";
655
+ } | undefined;
656
+ }[] | undefined;
657
+ staleRoots?: string[] | undefined;
451
658
  }, {
452
659
  workflows: {
453
660
  kind: "workflow";
@@ -475,6 +682,30 @@ export declare const V2WorkflowListOutputSchema: z.ZodObject<{
475
682
  } | undefined;
476
683
  } | undefined;
477
684
  }[];
685
+ sources?: {
686
+ source: {
687
+ kind: "custom" | "bundled" | "user" | "project" | "git" | "remote" | "plugin";
688
+ displayName: string;
689
+ };
690
+ category: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "external";
691
+ sourceKey: string;
692
+ sourceMode: "built_in" | "personal" | "legacy_project" | "rooted_sharing" | "live_directory";
693
+ effectiveWorkflowCount: number;
694
+ totalWorkflowCount: number;
695
+ shadowedWorkflowCount: number;
696
+ rootedSharing?: {
697
+ kind: "remembered_root";
698
+ rootPath: string;
699
+ groupLabel: string;
700
+ } | undefined;
701
+ migration?: {
702
+ summary: string;
703
+ reason: "legacy_project_precedence";
704
+ preferredSource: "rooted_sharing";
705
+ currentSource: "legacy_project";
706
+ } | undefined;
707
+ }[] | undefined;
708
+ staleRoots?: string[] | undefined;
478
709
  }>;
479
710
  export declare const V2WorkflowInspectOutputSchema: z.ZodObject<{
480
711
  workflowId: z.ZodString;
@@ -557,6 +788,7 @@ export declare const V2WorkflowInspectOutputSchema: z.ZodObject<{
557
788
  currentSource: "legacy_project";
558
789
  } | undefined;
559
790
  }>>>;
791
+ staleRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
560
792
  references: z.ZodOptional<z.ZodArray<z.ZodObject<{
561
793
  id: z.ZodString;
562
794
  title: z.ZodString;
@@ -610,6 +842,7 @@ export declare const V2WorkflowInspectOutputSchema: z.ZodObject<{
610
842
  currentSource: "legacy_project";
611
843
  } | undefined;
612
844
  } | undefined;
845
+ staleRoots?: string[] | undefined;
613
846
  }, {
614
847
  workflowId: string;
615
848
  workflowHash: string;
@@ -641,6 +874,7 @@ export declare const V2WorkflowInspectOutputSchema: z.ZodObject<{
641
874
  currentSource: "legacy_project";
642
875
  } | undefined;
643
876
  } | undefined;
877
+ staleRoots?: string[] | undefined;
644
878
  }>;
645
879
  export declare const V2PendingStepSchema: z.ZodObject<{
646
880
  stepId: z.ZodString;
@@ -946,6 +1180,61 @@ export declare const V2BindingDriftWarningSchema: z.ZodObject<{
946
1180
  pinnedValue: string;
947
1181
  currentValue: string;
948
1182
  }>;
1183
+ export declare const V2StepContextSchema: z.ZodObject<{
1184
+ assessments: z.ZodOptional<z.ZodObject<{
1185
+ assessmentId: z.ZodString;
1186
+ dimensions: z.ZodArray<z.ZodObject<{
1187
+ dimensionId: z.ZodString;
1188
+ level: z.ZodString;
1189
+ rationale: z.ZodOptional<z.ZodString>;
1190
+ }, "strip", z.ZodTypeAny, {
1191
+ level: string;
1192
+ dimensionId: string;
1193
+ rationale?: string | undefined;
1194
+ }, {
1195
+ level: string;
1196
+ dimensionId: string;
1197
+ rationale?: string | undefined;
1198
+ }>, "many">;
1199
+ normalizationNotes: z.ZodReadonly<z.ZodArray<z.ZodString, "many">>;
1200
+ }, "strip", z.ZodTypeAny, {
1201
+ assessmentId: string;
1202
+ dimensions: {
1203
+ level: string;
1204
+ dimensionId: string;
1205
+ rationale?: string | undefined;
1206
+ }[];
1207
+ normalizationNotes: readonly string[];
1208
+ }, {
1209
+ assessmentId: string;
1210
+ dimensions: {
1211
+ level: string;
1212
+ dimensionId: string;
1213
+ rationale?: string | undefined;
1214
+ }[];
1215
+ normalizationNotes: readonly string[];
1216
+ }>>;
1217
+ }, "strip", z.ZodTypeAny, {
1218
+ assessments?: {
1219
+ assessmentId: string;
1220
+ dimensions: {
1221
+ level: string;
1222
+ dimensionId: string;
1223
+ rationale?: string | undefined;
1224
+ }[];
1225
+ normalizationNotes: readonly string[];
1226
+ } | undefined;
1227
+ }, {
1228
+ assessments?: {
1229
+ assessmentId: string;
1230
+ dimensions: {
1231
+ level: string;
1232
+ dimensionId: string;
1233
+ rationale?: string | undefined;
1234
+ }[];
1235
+ normalizationNotes: readonly string[];
1236
+ } | undefined;
1237
+ }>;
949
1238
  export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
950
1239
  kind: z.ZodLiteral<"ok">;
951
1240
  continueToken: z.ZodOptional<z.ZodString>;
@@ -1014,6 +1303,61 @@ export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscrimin
1014
1303
  pinnedValue: string;
1015
1304
  currentValue: string;
1016
1305
  }>, "many">>;
1306
+ stepContext: z.ZodOptional<z.ZodObject<{
1307
+ assessments: z.ZodOptional<z.ZodObject<{
1308
+ assessmentId: z.ZodString;
1309
+ dimensions: z.ZodArray<z.ZodObject<{
1310
+ dimensionId: z.ZodString;
1311
+ level: z.ZodString;
1312
+ rationale: z.ZodOptional<z.ZodString>;
1313
+ }, "strip", z.ZodTypeAny, {
1314
+ level: string;
1315
+ dimensionId: string;
1316
+ rationale?: string | undefined;
1317
+ }, {
1318
+ level: string;
1319
+ dimensionId: string;
1320
+ rationale?: string | undefined;
1321
+ }>, "many">;
1322
+ normalizationNotes: z.ZodReadonly<z.ZodArray<z.ZodString, "many">>;
1323
+ }, "strip", z.ZodTypeAny, {
1324
+ assessmentId: string;
1325
+ dimensions: {
1326
+ level: string;
1327
+ dimensionId: string;
1328
+ rationale?: string | undefined;
1329
+ }[];
1330
+ normalizationNotes: readonly string[];
1331
+ }, {
1332
+ assessmentId: string;
1333
+ dimensions: {
1334
+ level: string;
1335
+ dimensionId: string;
1336
+ rationale?: string | undefined;
1337
+ }[];
1338
+ normalizationNotes: readonly string[];
1339
+ }>>;
1340
+ }, "strip", z.ZodTypeAny, {
1341
+ assessments?: {
1342
+ assessmentId: string;
1343
+ dimensions: {
1344
+ level: string;
1345
+ dimensionId: string;
1346
+ rationale?: string | undefined;
1347
+ }[];
1348
+ normalizationNotes: readonly string[];
1349
+ } | undefined;
1350
+ }, {
1351
+ assessments?: {
1352
+ assessmentId: string;
1353
+ dimensions: {
1354
+ level: string;
1355
+ dimensionId: string;
1356
+ rationale?: string | undefined;
1357
+ }[];
1358
+ normalizationNotes: readonly string[];
1359
+ } | undefined;
1360
+ }>>;
1017
1361
  }, "strip", z.ZodTypeAny, {
1018
1362
  kind: "ok";
1019
1363
  pending: {
@@ -1042,6 +1386,17 @@ export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscrimin
1042
1386
  }[] | undefined;
1043
1387
  continueToken?: string | undefined;
1044
1388
  checkpointToken?: string | undefined;
1389
+ stepContext?: {
1390
+ assessments?: {
1391
+ assessmentId: string;
1392
+ dimensions: {
1393
+ level: string;
1394
+ dimensionId: string;
1395
+ rationale?: string | undefined;
1396
+ }[];
1397
+ normalizationNotes: readonly string[];
1398
+ } | undefined;
1399
+ } | undefined;
1045
1400
  }, {
1046
1401
  kind: "ok";
1047
1402
  pending: {
@@ -1070,6 +1425,17 @@ export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscrimin
1070
1425
  }[] | undefined;
1071
1426
  continueToken?: string | undefined;
1072
1427
  checkpointToken?: string | undefined;
1428
+ stepContext?: {
1429
+ assessments?: {
1430
+ assessmentId: string;
1431
+ dimensions: {
1432
+ level: string;
1433
+ dimensionId: string;
1434
+ rationale?: string | undefined;
1435
+ }[];
1436
+ normalizationNotes: readonly string[];
1437
+ } | undefined;
1438
+ } | undefined;
1073
1439
  }>, z.ZodObject<{
1074
1440
  kind: z.ZodLiteral<"blocked">;
1075
1441
  continueToken: z.ZodOptional<z.ZodString>;
@@ -1496,6 +1862,17 @@ export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscrimin
1496
1862
  }[] | undefined;
1497
1863
  continueToken?: string | undefined;
1498
1864
  checkpointToken?: string | undefined;
1865
+ stepContext?: {
1866
+ assessments?: {
1867
+ assessmentId: string;
1868
+ dimensions: {
1869
+ level: string;
1870
+ dimensionId: string;
1871
+ rationale?: string | undefined;
1872
+ }[];
1873
+ normalizationNotes: readonly string[];
1874
+ } | undefined;
1875
+ } | undefined;
1499
1876
  } | {
1500
1877
  kind: "blocked";
1501
1878
  blockers: {
@@ -1582,6 +1959,17 @@ export declare const V2ContinueWorkflowOutputSchema: z.ZodEffects<z.ZodDiscrimin
1582
1959
  }[] | undefined;
1583
1960
  continueToken?: string | undefined;
1584
1961
  checkpointToken?: string | undefined;
1962
+ stepContext?: {
1963
+ assessments?: {
1964
+ assessmentId: string;
1965
+ dimensions: {
1966
+ level: string;
1967
+ dimensionId: string;
1968
+ rationale?: string | undefined;
1969
+ }[];
1970
+ normalizationNotes: readonly string[];
1971
+ } | undefined;
1972
+ } | undefined;
1585
1973
  } | {
1586
1974
  kind: "blocked";
1587
1975
  blockers: {
@@ -1867,6 +2255,7 @@ export declare const V2StartWorkflowOutputSchema: z.ZodEffects<z.ZodObject<{
1867
2255
  };
1868
2256
  tool: "continue_workflow";
1869
2257
  }>>;
2258
+ staleRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1870
2259
  }, "strip", z.ZodTypeAny, {
1871
2260
  pending: {
1872
2261
  stepId: string;
@@ -1888,6 +2277,7 @@ export declare const V2StartWorkflowOutputSchema: z.ZodEffects<z.ZodObject<{
1888
2277
  } | null;
1889
2278
  continueToken?: string | undefined;
1890
2279
  checkpointToken?: string | undefined;
2280
+ staleRoots?: string[] | undefined;
1891
2281
  }, {
1892
2282
  pending: {
1893
2283
  stepId: string;
@@ -1909,6 +2299,7 @@ export declare const V2StartWorkflowOutputSchema: z.ZodEffects<z.ZodObject<{
1909
2299
  } | null;
1910
2300
  continueToken?: string | undefined;
1911
2301
  checkpointToken?: string | undefined;
2302
+ staleRoots?: string[] | undefined;
1912
2303
  }>, {
1913
2304
  pending: {
1914
2305
  stepId: string;
@@ -1930,6 +2321,7 @@ export declare const V2StartWorkflowOutputSchema: z.ZodEffects<z.ZodObject<{
1930
2321
  } | null;
1931
2322
  continueToken?: string | undefined;
1932
2323
  checkpointToken?: string | undefined;
2324
+ staleRoots?: string[] | undefined;
1933
2325
  }, {
1934
2326
  pending: {
1935
2327
  stepId: string;
@@ -1951,6 +2343,7 @@ export declare const V2StartWorkflowOutputSchema: z.ZodEffects<z.ZodObject<{
1951
2343
  } | null;
1952
2344
  continueToken?: string | undefined;
1953
2345
  checkpointToken?: string | undefined;
2346
+ staleRoots?: string[] | undefined;
1954
2347
  }>;
1955
2348
  export declare const CreateSessionOutputSchema: z.ZodObject<{
1956
2349
  sessionId: z.ZodString;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenDashboardOutputSchema = exports.ReadSessionSchemaOutputSchema = exports.ReadSessionOutputSchema = exports.UpdateSessionOutputSchema = exports.CreateSessionOutputSchema = exports.V2StartWorkflowOutputSchema = exports.V2CheckpointWorkflowOutputSchema = exports.V2ResumeSessionOutputSchema = exports.V2ContinueWorkflowOutputSchema = exports.V2BindingDriftWarningSchema = exports.V2BlockerReportSchema = exports.V2ResumeNextCallSchema = exports.V2NextCallSchema = exports.V2NextIntentSchema = exports.V2PreferencesSchema = exports.V2PendingStepSchema = exports.V2WorkflowInspectOutputSchema = exports.V2WorkflowListOutputSchema = exports.V2WorkflowListItemSchema = exports.WorkflowGetSchemaOutputSchema = exports.WorkflowValidateJsonOutputSchema = exports.WorkflowNextOutputSchema = exports.WorkflowGetOutputSchema = exports.WorkflowListOutputSchema = exports.WorkflowSummarySchema = exports.JsonValueSchema = void 0;
3
+ exports.OpenDashboardOutputSchema = exports.ReadSessionSchemaOutputSchema = exports.ReadSessionOutputSchema = exports.UpdateSessionOutputSchema = exports.CreateSessionOutputSchema = exports.V2StartWorkflowOutputSchema = exports.V2CheckpointWorkflowOutputSchema = exports.V2ResumeSessionOutputSchema = exports.V2ContinueWorkflowOutputSchema = exports.V2StepContextSchema = exports.V2BindingDriftWarningSchema = exports.V2BlockerReportSchema = exports.V2ResumeNextCallSchema = exports.V2NextCallSchema = exports.V2NextIntentSchema = exports.V2PreferencesSchema = exports.V2PendingStepSchema = exports.V2WorkflowInspectOutputSchema = exports.V2WorkflowListOutputSchema = exports.V2WorkflowSourceCatalogEntrySchema = exports.V2WorkflowListItemSchema = exports.WorkflowGetSchemaOutputSchema = exports.WorkflowValidateJsonOutputSchema = exports.WorkflowNextOutputSchema = exports.WorkflowGetOutputSchema = exports.WorkflowListOutputSchema = exports.WorkflowSummarySchema = exports.JsonValueSchema = void 0;
4
4
  exports.toPendingStep = toPendingStep;
5
5
  const zod_1 = require("zod");
6
6
  const state_js_1 = require("../domain/execution/state.js");
@@ -74,8 +74,36 @@ exports.V2WorkflowListItemSchema = zod_1.z.object({
74
74
  }).optional(),
75
75
  }).optional(),
76
76
  });
77
+ exports.V2WorkflowSourceCatalogEntrySchema = zod_1.z.object({
78
+ sourceKey: zod_1.z.string().min(1).describe('Stable identifier for this source. Format: "{kind}:{absolutePath}" for filesystem sources (e.g. "project:/path/to/workflows", "custom:/path/to/.workrail/workflows"), or "built_in" for bundled sources.'),
79
+ category: zod_1.z.enum(['built_in', 'personal', 'legacy_project', 'rooted_sharing', 'external']),
80
+ source: zod_1.z.object({
81
+ kind: zod_1.z.enum(['bundled', 'user', 'project', 'custom', 'git', 'remote', 'plugin']),
82
+ displayName: zod_1.z.string().min(1),
83
+ }),
84
+ sourceMode: zod_1.z.enum(['built_in', 'personal', 'legacy_project', 'rooted_sharing', 'live_directory']),
85
+ effectiveWorkflowCount: zod_1.z.number().int().min(0),
86
+ totalWorkflowCount: zod_1.z.number().int().min(0),
87
+ shadowedWorkflowCount: zod_1.z.number().int().min(0),
88
+ rootedSharing: zod_1.z.object({
89
+ kind: zod_1.z.literal('remembered_root'),
90
+ rootPath: zod_1.z.string().min(1),
91
+ groupLabel: zod_1.z.string().min(1),
92
+ }).optional(),
93
+ migration: zod_1.z.object({
94
+ preferredSource: zod_1.z.literal('rooted_sharing'),
95
+ currentSource: zod_1.z.literal('legacy_project'),
96
+ reason: zod_1.z.literal('legacy_project_precedence'),
97
+ summary: zod_1.z.string().min(1),
98
+ }).optional(),
99
+ });
77
100
  exports.V2WorkflowListOutputSchema = zod_1.z.object({
78
101
  workflows: zod_1.z.array(exports.V2WorkflowListItemSchema),
102
+ staleRoots: zod_1.z.array(zod_1.z.string()).optional().describe('Remembered workspace roots that were inaccessible during workflow discovery. ' +
103
+ 'Workflows from these roots were not included in this response. ' +
104
+ 'These roots will be retried on the next call.'),
105
+ sources: zod_1.z.array(exports.V2WorkflowSourceCatalogEntrySchema).optional().describe('Source catalog for this workspace. Only present when includeSources was true in the request. ' +
106
+ 'Shows where workflows come from with effective and shadowed counts per source.'),
79
107
  });
80
108
  exports.V2WorkflowInspectOutputSchema = zod_1.z.object({
81
109
  workflowId: zod_1.z.string().min(1),
@@ -83,6 +111,9 @@ exports.V2WorkflowInspectOutputSchema = zod_1.z.object({
83
111
  mode: zod_1.z.enum(['metadata', 'preview']),
84
112
  compiled: exports.JsonValueSchema,
85
113
  visibility: exports.V2WorkflowListItemSchema.shape.visibility.optional(),
114
+ staleRoots: zod_1.z.array(zod_1.z.string()).optional().describe('Remembered workspace roots that were inaccessible during workflow discovery. ' +
115
+ 'Workflows from these roots were not included in this response. ' +
116
+ 'These roots will be retried on the next call.'),
86
117
  references: zod_1.z.array(zod_1.z.object({
87
118
  id: zod_1.z.string().min(1),
88
119
  title: zod_1.z.string().min(1),
@@ -232,6 +263,19 @@ exports.V2BindingDriftWarningSchema = zod_1.z.object({
232
263
  pinnedValue: zod_1.z.string().min(1),
233
264
  currentValue: zod_1.z.string().min(1),
234
265
  });
266
+ exports.V2StepContextSchema = zod_1.z.object({
267
+ assessments: zod_1.z
268
+ .object({
269
+ assessmentId: zod_1.z.string().min(1),
270
+ dimensions: zod_1.z.array(zod_1.z.object({
271
+ dimensionId: zod_1.z.string().min(1),
272
+ level: zod_1.z.string().min(1),
273
+ rationale: zod_1.z.string().optional(),
274
+ })),
275
+ normalizationNotes: zod_1.z.array(zod_1.z.string()).readonly(),
276
+ })
277
+ .optional(),
278
+ });
235
279
  const V2ContinueWorkflowOkSchema = zod_1.z.object({
236
280
  kind: zod_1.z.literal('ok'),
237
281
  continueToken: continueTokenSchema,
@@ -242,6 +286,7 @@ const V2ContinueWorkflowOkSchema = zod_1.z.object({
242
286
  nextIntent: exports.V2NextIntentSchema,
243
287
  nextCall: exports.V2NextCallSchema,
244
288
  warnings: zod_1.z.array(exports.V2BindingDriftWarningSchema).optional(),
289
+ stepContext: exports.V2StepContextSchema.optional(),
245
290
  });
246
291
  const V2ContinueWorkflowBlockedSchema = zod_1.z.object({
247
292
  kind: zod_1.z.literal('blocked'),
@@ -319,6 +364,9 @@ exports.V2StartWorkflowOutputSchema = zod_1.z.object({
319
364
  preferences: exports.V2PreferencesSchema,
320
365
  nextIntent: exports.V2NextIntentSchema,
321
366
  nextCall: exports.V2NextCallSchema,
367
+ staleRoots: zod_1.z.array(zod_1.z.string()).optional().describe('Remembered workspace roots that were inaccessible during workflow discovery. ' +
368
+ 'Workflows from these roots were not included in this response. ' +
369
+ 'These roots will be retried on the next call.'),
322
370
  }).refine((data) => (data.pending ? data.continueToken != null : true), { message: 'continueToken is required when a pending step exists' });
323
371
  exports.CreateSessionOutputSchema = zod_1.z.object({
324
372
  sessionId: zod_1.z.string().min(1),
@@ -110,6 +110,7 @@ async function createToolContext() {
110
110
  console.error(`[V2Init] Token alias index load warning: ${aliasLoadResult.error.message}`);
111
111
  }
112
112
  const rememberedRootsStore = container_js_1.container.resolve(tokens_js_1.DI.V2.RememberedRootsStore);
113
+ const managedSourceStore = container_js_1.container.resolve(tokens_js_1.DI.V2.ManagedSourceStore);
113
114
  v2 = {
114
115
  gate,
115
116
  sessionStore,
@@ -122,6 +123,7 @@ async function createToolContext() {
122
123
  tokenCodecPorts,
123
124
  tokenAliasStore,
124
125
  rememberedRootsStore,
126
+ managedSourceStore,
125
127
  validationPipelineDeps,
126
128
  resolvedRootUris: [],
127
129
  workspaceResolver: new index_js_1.LocalWorkspaceAnchorV2(process.cwd()),
@@ -73,6 +73,16 @@ Remember: inspecting is read-only. Call start_workflow when ready to begin.`,
73
73
  continue_workflow: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.CONTINUE_WORKFLOW_PROTOCOL, 'standard'),
74
74
  checkpoint_workflow: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.CHECKPOINT_WORKFLOW_PROTOCOL, 'standard'),
75
75
  resume_session: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.RESUME_SESSION_PROTOCOL, 'standard'),
76
+ manage_workflow_source: `Attach or detach a workflow directory as a managed source.
77
+
78
+ Use this to explicitly add a directory containing workflow files so its workflows appear in list_workflows as managed entries.
79
+
80
+ Parameters:
81
+ - action: "attach" to add a directory, "detach" to remove it. Both are idempotent.
82
+ - path: absolute filesystem path to the workflow directory
83
+
84
+ Attach is idempotent: attaching an already-attached path is a no-op.
85
+ Detach is idempotent: detaching an absent path is a no-op.`,
76
86
  },
77
87
  authoritative: {
78
88
  discover_workflows: `Check for workflows that apply to the user's request. Workflows are the user's pre-defined instructions that you MUST follow when they exist.
@@ -150,5 +160,15 @@ This is read-only. Call start_workflow when ready to commit to following the wor
150
160
  continue_workflow: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.CONTINUE_WORKFLOW_PROTOCOL, 'authoritative'),
151
161
  checkpoint_workflow: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.CHECKPOINT_WORKFLOW_PROTOCOL, 'authoritative'),
152
162
  resume_session: (0, workflow_protocol_contracts_js_1.renderProtocolDescription)(workflow_protocol_contracts_js_1.RESUME_SESSION_PROTOCOL, 'authoritative'),
163
+ manage_workflow_source: `Attach or detach a workflow directory as a managed source.
164
+
165
+ When the user wants to register an external workflow directory, use attach. When they want to remove it, use detach. Both are idempotent.
166
+
167
+ Parameters:
168
+ - action: "attach" to add a directory, "detach" to remove it. Both are idempotent.
169
+ - path: absolute filesystem path to the workflow directory
170
+
171
+ Attach is idempotent: attaching an already-attached path is a no-op.
172
+ Detach is idempotent: detaching an absent path is a no-op.`,
153
173
  },
154
174
  };
package/dist/mcp/tools.js CHANGED
@@ -92,6 +92,11 @@ exports.WORKFLOW_TOOL_ANNOTATIONS = {
92
92
  destructiveHint: false,
93
93
  idempotentHint: true,
94
94
  },
95
+ manage_workflow_source: {
96
+ readOnlyHint: false,
97
+ destructiveHint: false,
98
+ idempotentHint: true,
99
+ },
95
100
  };
96
101
  exports.WORKFLOW_TOOL_TITLES = {
97
102
  discover_workflows: 'Discover Available Workflows',
@@ -105,6 +110,7 @@ exports.WORKFLOW_TOOL_TITLES = {
105
110
  continue_workflow: 'Continue Workflow (v2)',
106
111
  checkpoint_workflow: 'Checkpoint Workflow (v2)',
107
112
  resume_session: 'Resume Session (v2)',
113
+ manage_workflow_source: 'Manage Workflow Source (v2)',
108
114
  };
109
115
  exports.CreateSessionInput = zod_1.z.object({
110
116
  workflowId: zod_1.z