@exaudeus/workrail 3.74.3 → 3.76.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 (32) hide show
  1. package/dist/console-ui/assets/index-DFZjlsUM.js +28 -0
  2. package/dist/console-ui/index.html +1 -1
  3. package/dist/coordinators/adaptive-pipeline.d.ts +8 -0
  4. package/dist/coordinators/context-assembly.d.ts +4 -0
  5. package/dist/coordinators/context-assembly.js +156 -0
  6. package/dist/coordinators/modes/full-pipeline.d.ts +1 -1
  7. package/dist/coordinators/modes/full-pipeline.js +140 -27
  8. package/dist/coordinators/modes/implement-shared.d.ts +3 -2
  9. package/dist/coordinators/modes/implement-shared.js +16 -6
  10. package/dist/coordinators/modes/implement.js +49 -3
  11. package/dist/coordinators/pipeline-run-context.d.ts +1811 -0
  12. package/dist/coordinators/pipeline-run-context.js +114 -0
  13. package/dist/infrastructure/storage/schema-validating-workflow-storage.js +25 -2
  14. package/dist/manifest.json +54 -30
  15. package/dist/trigger/coordinator-deps.js +131 -0
  16. package/dist/v2/durable-core/domain/artifact-contract-validator.js +99 -0
  17. package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.d.ts +39 -0
  18. package/dist/v2/durable-core/schemas/artifacts/discovery-handoff.js +10 -1
  19. package/dist/v2/durable-core/schemas/artifacts/index.d.ts +2 -1
  20. package/dist/v2/durable-core/schemas/artifacts/index.js +12 -1
  21. package/dist/v2/durable-core/schemas/artifacts/phase-handoff.d.ts +89 -0
  22. package/dist/v2/durable-core/schemas/artifacts/phase-handoff.js +56 -0
  23. package/docs/authoring-v2.md +12 -0
  24. package/docs/ideas/backlog.md +409 -1
  25. package/package.json +1 -1
  26. package/workflows/coding-task-workflow-agentic.json +9 -6
  27. package/workflows/mr-review-workflow.agentic.v2.json +2 -2
  28. package/workflows/routines/tension-driven-design.json +12 -12
  29. package/workflows/workflow-for-workflows.json +5 -11
  30. package/workflows/wr.discovery.json +20 -17
  31. package/workflows/wr.shaping.json +7 -4
  32. package/dist/console-ui/assets/index-ByqIsoyt.js +0 -28
@@ -3,6 +3,7 @@ export { LOOP_CONTROL_CONTRACT_REF, LoopControlDecisionSchema, LoopControlMetada
3
3
  export { COORDINATOR_SIGNAL_CONTRACT_REF, CoordinatorSignalKindSchema, CoordinatorSignalArtifactV1Schema, isCoordinatorSignalArtifact, parseCoordinatorSignalArtifact, type CoordinatorSignalKind, type CoordinatorSignalArtifactV1, } from './coordinator-signal.js';
4
4
  export { REVIEW_VERDICT_CONTRACT_REF, ReviewVerdictArtifactV1Schema, isReviewVerdictArtifact, parseReviewVerdictArtifact, type ReviewVerdictArtifactV1, } from './review-verdict.js';
5
5
  export { DISCOVERY_HANDOFF_CONTRACT_REF, DiscoveryHandoffArtifactV1Schema, isDiscoveryHandoffArtifact, parseDiscoveryHandoffArtifact, type DiscoveryHandoffArtifactV1, } from './discovery-handoff.js';
6
- export declare const ARTIFACT_CONTRACT_REFS: readonly ["wr.contracts.assessment", "wr.contracts.loop_control", "wr.contracts.coordinator_signal", "wr.contracts.review_verdict", "wr.contracts.discovery_handoff"];
6
+ export { SHAPING_HANDOFF_CONTRACT_REF, ShapingHandoffArtifactV1Schema, isShapingHandoffArtifact, parseShapingHandoffArtifact, type ShapingHandoffArtifactV1, CODING_HANDOFF_CONTRACT_REF, CodingHandoffArtifactV1Schema, isCodingHandoffArtifact, parseCodingHandoffArtifact, type CodingHandoffArtifactV1, type PhaseHandoffArtifact, } from './phase-handoff.js';
7
+ export declare const ARTIFACT_CONTRACT_REFS: readonly ["wr.contracts.assessment", "wr.contracts.loop_control", "wr.contracts.coordinator_signal", "wr.contracts.review_verdict", "wr.contracts.discovery_handoff", "wr.contracts.shaping_handoff", "wr.contracts.coding_handoff"];
7
8
  export type ArtifactContractRef = (typeof ARTIFACT_CONTRACT_REFS)[number];
8
9
  export declare function isValidContractRef(ref: string): ref is ArtifactContractRef;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ARTIFACT_CONTRACT_REFS = exports.parseDiscoveryHandoffArtifact = exports.isDiscoveryHandoffArtifact = exports.DiscoveryHandoffArtifactV1Schema = exports.DISCOVERY_HANDOFF_CONTRACT_REF = exports.parseReviewVerdictArtifact = exports.isReviewVerdictArtifact = exports.ReviewVerdictArtifactV1Schema = exports.REVIEW_VERDICT_CONTRACT_REF = exports.parseCoordinatorSignalArtifact = exports.isCoordinatorSignalArtifact = exports.CoordinatorSignalArtifactV1Schema = exports.CoordinatorSignalKindSchema = exports.COORDINATOR_SIGNAL_CONTRACT_REF = exports.findLoopControlArtifact = exports.parseLoopControlArtifact = exports.isLoopControlArtifact = exports.LoopControlArtifactV1Schema = exports.LoopControlMetadataV1Schema = exports.LoopControlDecisionSchema = exports.LOOP_CONTROL_CONTRACT_REF = exports.parseAssessmentArtifact = exports.isAssessmentArtifact = exports.AssessmentDimensionSubmissionSchema = exports.AssessmentArtifactV1Schema = exports.ASSESSMENT_CONTRACT_REF = void 0;
3
+ exports.ARTIFACT_CONTRACT_REFS = exports.parseCodingHandoffArtifact = exports.isCodingHandoffArtifact = exports.CodingHandoffArtifactV1Schema = exports.CODING_HANDOFF_CONTRACT_REF = exports.parseShapingHandoffArtifact = exports.isShapingHandoffArtifact = exports.ShapingHandoffArtifactV1Schema = exports.SHAPING_HANDOFF_CONTRACT_REF = exports.parseDiscoveryHandoffArtifact = exports.isDiscoveryHandoffArtifact = exports.DiscoveryHandoffArtifactV1Schema = exports.DISCOVERY_HANDOFF_CONTRACT_REF = exports.parseReviewVerdictArtifact = exports.isReviewVerdictArtifact = exports.ReviewVerdictArtifactV1Schema = exports.REVIEW_VERDICT_CONTRACT_REF = exports.parseCoordinatorSignalArtifact = exports.isCoordinatorSignalArtifact = exports.CoordinatorSignalArtifactV1Schema = exports.CoordinatorSignalKindSchema = exports.COORDINATOR_SIGNAL_CONTRACT_REF = exports.findLoopControlArtifact = exports.parseLoopControlArtifact = exports.isLoopControlArtifact = exports.LoopControlArtifactV1Schema = exports.LoopControlMetadataV1Schema = exports.LoopControlDecisionSchema = exports.LOOP_CONTROL_CONTRACT_REF = exports.parseAssessmentArtifact = exports.isAssessmentArtifact = exports.AssessmentDimensionSubmissionSchema = exports.AssessmentArtifactV1Schema = exports.ASSESSMENT_CONTRACT_REF = void 0;
4
4
  exports.isValidContractRef = isValidContractRef;
5
5
  var assessment_js_1 = require("./assessment.js");
6
6
  Object.defineProperty(exports, "ASSESSMENT_CONTRACT_REF", { enumerable: true, get: function () { return assessment_js_1.ASSESSMENT_CONTRACT_REF; } });
@@ -32,12 +32,23 @@ Object.defineProperty(exports, "DISCOVERY_HANDOFF_CONTRACT_REF", { enumerable: t
32
32
  Object.defineProperty(exports, "DiscoveryHandoffArtifactV1Schema", { enumerable: true, get: function () { return discovery_handoff_js_1.DiscoveryHandoffArtifactV1Schema; } });
33
33
  Object.defineProperty(exports, "isDiscoveryHandoffArtifact", { enumerable: true, get: function () { return discovery_handoff_js_1.isDiscoveryHandoffArtifact; } });
34
34
  Object.defineProperty(exports, "parseDiscoveryHandoffArtifact", { enumerable: true, get: function () { return discovery_handoff_js_1.parseDiscoveryHandoffArtifact; } });
35
+ var phase_handoff_js_1 = require("./phase-handoff.js");
36
+ Object.defineProperty(exports, "SHAPING_HANDOFF_CONTRACT_REF", { enumerable: true, get: function () { return phase_handoff_js_1.SHAPING_HANDOFF_CONTRACT_REF; } });
37
+ Object.defineProperty(exports, "ShapingHandoffArtifactV1Schema", { enumerable: true, get: function () { return phase_handoff_js_1.ShapingHandoffArtifactV1Schema; } });
38
+ Object.defineProperty(exports, "isShapingHandoffArtifact", { enumerable: true, get: function () { return phase_handoff_js_1.isShapingHandoffArtifact; } });
39
+ Object.defineProperty(exports, "parseShapingHandoffArtifact", { enumerable: true, get: function () { return phase_handoff_js_1.parseShapingHandoffArtifact; } });
40
+ Object.defineProperty(exports, "CODING_HANDOFF_CONTRACT_REF", { enumerable: true, get: function () { return phase_handoff_js_1.CODING_HANDOFF_CONTRACT_REF; } });
41
+ Object.defineProperty(exports, "CodingHandoffArtifactV1Schema", { enumerable: true, get: function () { return phase_handoff_js_1.CodingHandoffArtifactV1Schema; } });
42
+ Object.defineProperty(exports, "isCodingHandoffArtifact", { enumerable: true, get: function () { return phase_handoff_js_1.isCodingHandoffArtifact; } });
43
+ Object.defineProperty(exports, "parseCodingHandoffArtifact", { enumerable: true, get: function () { return phase_handoff_js_1.parseCodingHandoffArtifact; } });
35
44
  exports.ARTIFACT_CONTRACT_REFS = [
36
45
  'wr.contracts.assessment',
37
46
  'wr.contracts.loop_control',
38
47
  'wr.contracts.coordinator_signal',
39
48
  'wr.contracts.review_verdict',
40
49
  'wr.contracts.discovery_handoff',
50
+ 'wr.contracts.shaping_handoff',
51
+ 'wr.contracts.coding_handoff',
41
52
  ];
42
53
  function isValidContractRef(ref) {
43
54
  return exports.ARTIFACT_CONTRACT_REFS.includes(ref);
@@ -0,0 +1,89 @@
1
+ import { z } from 'zod';
2
+ import type { DiscoveryHandoffArtifactV1 } from './discovery-handoff.js';
3
+ export declare const SHAPING_HANDOFF_CONTRACT_REF: "wr.contracts.shaping_handoff";
4
+ export declare const ShapingHandoffArtifactV1Schema: z.ZodObject<{
5
+ kind: z.ZodLiteral<"wr.shaping_handoff">;
6
+ version: z.ZodLiteral<1>;
7
+ pitchPath: z.ZodString;
8
+ selectedShape: z.ZodString;
9
+ appetite: z.ZodString;
10
+ keyConstraints: z.ZodArray<z.ZodString, "many">;
11
+ rabbitHoles: z.ZodArray<z.ZodString, "many">;
12
+ outOfScope: z.ZodArray<z.ZodString, "many">;
13
+ validationChecklist: z.ZodArray<z.ZodString, "many">;
14
+ }, "strict", z.ZodTypeAny, {
15
+ kind: "wr.shaping_handoff";
16
+ version: 1;
17
+ pitchPath: string;
18
+ selectedShape: string;
19
+ appetite: string;
20
+ keyConstraints: string[];
21
+ rabbitHoles: string[];
22
+ outOfScope: string[];
23
+ validationChecklist: string[];
24
+ }, {
25
+ kind: "wr.shaping_handoff";
26
+ version: 1;
27
+ pitchPath: string;
28
+ selectedShape: string;
29
+ appetite: string;
30
+ keyConstraints: string[];
31
+ rabbitHoles: string[];
32
+ outOfScope: string[];
33
+ validationChecklist: string[];
34
+ }>;
35
+ export type ShapingHandoffArtifactV1 = z.infer<typeof ShapingHandoffArtifactV1Schema>;
36
+ export declare function isShapingHandoffArtifact(artifact: unknown): artifact is {
37
+ readonly kind: 'wr.shaping_handoff';
38
+ };
39
+ export declare function parseShapingHandoffArtifact(artifact: unknown): ShapingHandoffArtifactV1 | null;
40
+ export declare const CODING_HANDOFF_CONTRACT_REF: "wr.contracts.coding_handoff";
41
+ export declare const CodingHandoffArtifactV1Schema: z.ZodObject<{
42
+ kind: z.ZodLiteral<"wr.coding_handoff">;
43
+ version: z.ZodLiteral<1>;
44
+ branchName: z.ZodString;
45
+ keyDecisions: z.ZodArray<z.ZodString, "many">;
46
+ knownLimitations: z.ZodArray<z.ZodString, "many">;
47
+ testsAdded: z.ZodArray<z.ZodString, "many">;
48
+ filesChanged: z.ZodArray<z.ZodString, "many">;
49
+ correctedAssumptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
50
+ assumed: z.ZodString;
51
+ actual: z.ZodString;
52
+ }, "strip", z.ZodTypeAny, {
53
+ assumed: string;
54
+ actual: string;
55
+ }, {
56
+ assumed: string;
57
+ actual: string;
58
+ }>, "many">>;
59
+ }, "strict", z.ZodTypeAny, {
60
+ kind: "wr.coding_handoff";
61
+ version: 1;
62
+ branchName: string;
63
+ keyDecisions: string[];
64
+ knownLimitations: string[];
65
+ testsAdded: string[];
66
+ filesChanged: string[];
67
+ correctedAssumptions?: {
68
+ assumed: string;
69
+ actual: string;
70
+ }[] | undefined;
71
+ }, {
72
+ kind: "wr.coding_handoff";
73
+ version: 1;
74
+ branchName: string;
75
+ keyDecisions: string[];
76
+ knownLimitations: string[];
77
+ testsAdded: string[];
78
+ filesChanged: string[];
79
+ correctedAssumptions?: {
80
+ assumed: string;
81
+ actual: string;
82
+ }[] | undefined;
83
+ }>;
84
+ export type CodingHandoffArtifactV1 = z.infer<typeof CodingHandoffArtifactV1Schema>;
85
+ export declare function isCodingHandoffArtifact(artifact: unknown): artifact is {
86
+ readonly kind: 'wr.coding_handoff';
87
+ };
88
+ export declare function parseCodingHandoffArtifact(artifact: unknown): CodingHandoffArtifactV1 | null;
89
+ export type PhaseHandoffArtifact = DiscoveryHandoffArtifactV1 | ShapingHandoffArtifactV1 | CodingHandoffArtifactV1;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodingHandoffArtifactV1Schema = exports.CODING_HANDOFF_CONTRACT_REF = exports.ShapingHandoffArtifactV1Schema = exports.SHAPING_HANDOFF_CONTRACT_REF = void 0;
4
+ exports.isShapingHandoffArtifact = isShapingHandoffArtifact;
5
+ exports.parseShapingHandoffArtifact = parseShapingHandoffArtifact;
6
+ exports.isCodingHandoffArtifact = isCodingHandoffArtifact;
7
+ exports.parseCodingHandoffArtifact = parseCodingHandoffArtifact;
8
+ const zod_1 = require("zod");
9
+ exports.SHAPING_HANDOFF_CONTRACT_REF = 'wr.contracts.shaping_handoff';
10
+ exports.ShapingHandoffArtifactV1Schema = zod_1.z
11
+ .object({
12
+ kind: zod_1.z.literal('wr.shaping_handoff'),
13
+ version: zod_1.z.literal(1),
14
+ pitchPath: zod_1.z.string().min(1),
15
+ selectedShape: zod_1.z.string().min(1).max(200),
16
+ appetite: zod_1.z.string().min(1).max(100),
17
+ keyConstraints: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(8),
18
+ rabbitHoles: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(6),
19
+ outOfScope: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(6),
20
+ validationChecklist: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(10),
21
+ })
22
+ .strict();
23
+ function isShapingHandoffArtifact(artifact) {
24
+ return (typeof artifact === 'object' &&
25
+ artifact !== null &&
26
+ artifact.kind === 'wr.shaping_handoff');
27
+ }
28
+ function parseShapingHandoffArtifact(artifact) {
29
+ const result = exports.ShapingHandoffArtifactV1Schema.safeParse(artifact);
30
+ return result.success ? result.data : null;
31
+ }
32
+ exports.CODING_HANDOFF_CONTRACT_REF = 'wr.contracts.coding_handoff';
33
+ exports.CodingHandoffArtifactV1Schema = zod_1.z
34
+ .object({
35
+ kind: zod_1.z.literal('wr.coding_handoff'),
36
+ version: zod_1.z.literal(1),
37
+ branchName: zod_1.z.string().min(1),
38
+ keyDecisions: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(8),
39
+ knownLimitations: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(6),
40
+ testsAdded: zod_1.z.array(zod_1.z.string().min(1).max(200)).max(10),
41
+ filesChanged: zod_1.z.array(zod_1.z.string().min(1).max(300)).max(20),
42
+ correctedAssumptions: zod_1.z.array(zod_1.z.object({
43
+ assumed: zod_1.z.string().min(1).max(200),
44
+ actual: zod_1.z.string().min(1).max(200),
45
+ })).max(6).optional(),
46
+ })
47
+ .strict();
48
+ function isCodingHandoffArtifact(artifact) {
49
+ return (typeof artifact === 'object' &&
50
+ artifact !== null &&
51
+ artifact.kind === 'wr.coding_handoff');
52
+ }
53
+ function parseCodingHandoffArtifact(artifact) {
54
+ const result = exports.CodingHandoffArtifactV1Schema.safeParse(artifact);
55
+ return result.success ? result.data : null;
56
+ }
@@ -434,6 +434,18 @@ WorkRail v2 provides **built-in** building blocks that workflows (including exte
434
434
  - **Features**: deterministic, closed-set “middleware” applied by WorkRail (e.g., tier-aware instructions, formatting, durable recap guidance).
435
435
  - **Contract packs**: server-side definitions for allowed artifact kinds and small examples (no schema authoring required by workflow authors).
436
436
 
437
+ **Available contract refs** (use in `outputContract: { contractRef: "..." }`):
438
+
439
+ | contractRef | Artifact kind | Emitted by |
440
+ |---|---|---|
441
+ | `wr.contracts.loop_control` | `wr.loop_control` | Loop body exit steps |
442
+ | `wr.contracts.coordinator_signal` | `wr.coordinator_signal` | Coordinator signal steps |
443
+ | `wr.contracts.review_verdict` | `wr.review_verdict` | Review workflow final step |
444
+ | `wr.contracts.discovery_handoff` | `wr.discovery_handoff` | Discovery workflow handoff step |
445
+ | `wr.contracts.shaping_handoff` | `wr.shaping_handoff` | Shaping workflow finalize step |
446
+ | `wr.contracts.coding_handoff` | `wr.coding_handoff` | Coding workflow retrospective step |
447
+ | `wr.contracts.assessment` | `wr.assessment` | Assessment gate steps |
448
+
437
449
  External workflows can reference these builtins, but cannot define arbitrary new plugin code.
438
450
 
439
451
  ### Where injections happen: templates as anchors