@exaudeus/workrail 3.11.1 → 3.12.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 (37) hide show
  1. package/dist/console/assets/index-CRgjJiMS.js +28 -0
  2. package/dist/console/assets/index-DW78t31j.css +1 -0
  3. package/dist/console/index.html +2 -2
  4. package/dist/manifest.json +67 -59
  5. package/dist/mcp/handlers/shared/request-workflow-reader.d.ts +10 -2
  6. package/dist/mcp/handlers/shared/request-workflow-reader.js +27 -10
  7. package/dist/mcp/handlers/shared/workflow-source-visibility.d.ts +3 -1
  8. package/dist/mcp/handlers/shared/workflow-source-visibility.js +7 -3
  9. package/dist/mcp/handlers/v2-execution/replay.js +25 -1
  10. package/dist/mcp/handlers/v2-execution/start.js +23 -17
  11. package/dist/mcp/handlers/v2-workflow.js +123 -8
  12. package/dist/mcp/output-schemas.d.ts +393 -0
  13. package/dist/mcp/output-schemas.js +49 -1
  14. package/dist/mcp/tools.js +5 -5
  15. package/dist/mcp/v2/tools.d.ts +3 -0
  16. package/dist/mcp/v2/tools.js +3 -2
  17. package/dist/v2/durable-core/constants.d.ts +1 -0
  18. package/dist/v2/durable-core/constants.js +2 -1
  19. package/dist/v2/durable-core/domain/observation-builder.d.ts +4 -1
  20. package/dist/v2/durable-core/domain/observation-builder.js +9 -0
  21. package/dist/v2/durable-core/schemas/export-bundle/index.d.ts +76 -16
  22. package/dist/v2/durable-core/schemas/session/events.d.ts +26 -5
  23. package/dist/v2/durable-core/schemas/session/events.js +2 -1
  24. package/dist/v2/infra/local/session-summary-provider/index.js +2 -0
  25. package/dist/v2/infra/local/workspace-anchor/index.js +1 -0
  26. package/dist/v2/ports/workspace-anchor.port.d.ts +3 -0
  27. package/dist/v2/projections/resume-ranking.d.ts +1 -0
  28. package/dist/v2/usecases/console-routes.js +26 -0
  29. package/dist/v2/usecases/console-service.js +25 -6
  30. package/dist/v2/usecases/console-types.d.ts +22 -1
  31. package/dist/v2/usecases/worktree-service.d.ts +10 -0
  32. package/dist/v2/usecases/worktree-service.js +136 -0
  33. package/package.json +1 -1
  34. package/workflows/architecture-scalability-audit.json +317 -0
  35. package/workflows/routines/tension-driven-design.json +5 -5
  36. package/dist/console/assets/index-C5C4nDs4.css +0 -1
  37. package/dist/console/assets/index-CSUqsoQl.js +0 -28
@@ -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),
package/dist/mcp/tools.js CHANGED
@@ -8,7 +8,7 @@ exports.WorkflowListInput = zod_1.z.object({});
8
8
  exports.WorkflowGetInput = zod_1.z.object({
9
9
  workflowId: zod_1.z
10
10
  .string()
11
- .regex(/^[A-Za-z0-9_-]+$/, 'Workflow ID must contain only letters, numbers, hyphens, and underscores')
11
+ .regex(/^([a-z0-9_-]+|[a-z][a-z0-9_-]+\.[a-z][a-z0-9_-]+)$/, 'Workflow ID must be a valid legacy ID (e.g. my-workflow) or namespaced ID (e.g. wr.discovery)')
12
12
  .describe('The unique identifier of the workflow to retrieve'),
13
13
  mode: zod_1.z
14
14
  .enum(['metadata', 'preview'])
@@ -18,7 +18,7 @@ exports.WorkflowGetInput = zod_1.z.object({
18
18
  exports.WorkflowNextInput = zod_1.z.object({
19
19
  workflowId: zod_1.z
20
20
  .string()
21
- .regex(/^[A-Za-z0-9_-]+$/, 'Workflow ID must contain only letters, numbers, hyphens, and underscores')
21
+ .regex(/^([a-z0-9_-]+|[a-z][a-z0-9_-]+\.[a-z][a-z0-9_-]+)$/, 'Workflow ID must be a valid legacy ID (e.g. my-workflow) or namespaced ID (e.g. wr.discovery)')
22
22
  .describe('The unique identifier of the workflow'),
23
23
  state: state_js_1.ExecutionStateSchema.describe('Serializable workflow execution state (authoritative). ' +
24
24
  'For the first call, use: { kind: "init" }. ' +
@@ -109,7 +109,7 @@ exports.WORKFLOW_TOOL_TITLES = {
109
109
  exports.CreateSessionInput = zod_1.z.object({
110
110
  workflowId: zod_1.z
111
111
  .string()
112
- .regex(/^[A-Za-z0-9_-]+$/, 'Workflow ID must contain only letters, numbers, hyphens, and underscores')
112
+ .regex(/^([a-z0-9_-]+|[a-z][a-z0-9_-]+\.[a-z][a-z0-9_-]+)$/, 'Workflow ID must be a valid legacy ID (e.g. my-workflow) or namespaced ID (e.g. wr.discovery)')
113
113
  .describe('Workflow identifier (e.g., "bug-investigation", "mr-review")'),
114
114
  sessionId: zod_1.z
115
115
  .string()
@@ -120,14 +120,14 @@ exports.CreateSessionInput = zod_1.z.object({
120
120
  .describe('Initial session data. Can include dashboard, phases, etc.'),
121
121
  });
122
122
  exports.UpdateSessionInput = zod_1.z.object({
123
- workflowId: zod_1.z.string().regex(/^[A-Za-z0-9_-]+$/, 'Workflow ID must contain only letters, numbers, hyphens, and underscores').describe('Workflow identifier'),
123
+ workflowId: zod_1.z.string().regex(/^([a-z0-9_-]+|[a-z][a-z0-9_-]+\.[a-z][a-z0-9_-]+)$/, 'Workflow ID must be a valid legacy ID (e.g. my-workflow) or namespaced ID (e.g. wr.discovery)').describe('Workflow identifier'),
124
124
  sessionId: zod_1.z.string().describe('Session identifier'),
125
125
  updates: zod_1.z
126
126
  .record(zod_1.z.unknown())
127
127
  .describe('Data to merge into session. Supports nested updates via dot notation.'),
128
128
  });
129
129
  exports.ReadSessionInput = zod_1.z.object({
130
- workflowId: zod_1.z.string().regex(/^[A-Za-z0-9_-]+$/, 'Workflow ID must contain only letters, numbers, hyphens, and underscores').describe('Workflow identifier'),
130
+ workflowId: zod_1.z.string().regex(/^([a-z0-9_-]+|[a-z][a-z0-9_-]+\.[a-z][a-z0-9_-]+)$/, 'Workflow ID must be a valid legacy ID (e.g. my-workflow) or namespaced ID (e.g. wr.discovery)').describe('Workflow identifier'),
131
131
  sessionId: zod_1.z.string().describe('Session identifier'),
132
132
  path: zod_1.z
133
133
  .string()
@@ -2,10 +2,13 @@ import { z } from 'zod';
2
2
  import type { ToolAnnotations } from '../tool-factory.js';
3
3
  export declare const V2ListWorkflowsInput: z.ZodObject<{
4
4
  workspacePath: z.ZodEffects<z.ZodString, string, string>;
5
+ includeSources: z.ZodOptional<z.ZodBoolean>;
5
6
  }, "strip", z.ZodTypeAny, {
6
7
  workspacePath: string;
8
+ includeSources?: boolean | undefined;
7
9
  }, {
8
10
  workspacePath: string;
11
+ includeSources?: boolean | undefined;
9
12
  }>;
10
13
  export type V2ListWorkflowsInput = z.infer<typeof V2ListWorkflowsInput>;
11
14
  export declare const V2InspectWorkflowInput: z.ZodObject<{