@cat-factory/orchestration 0.248.4 → 0.249.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 (46) hide show
  1. package/dist/modules/execution/BinaryCandidateController.d.ts +61 -0
  2. package/dist/modules/execution/BinaryCandidateController.d.ts.map +1 -0
  3. package/dist/modules/execution/BinaryCandidateController.js +215 -0
  4. package/dist/modules/execution/BinaryCandidateController.js.map +1 -0
  5. package/dist/modules/execution/ExecutionService.d.ts +19 -39
  6. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  7. package/dist/modules/execution/ExecutionService.js +32 -89
  8. package/dist/modules/execution/ExecutionService.js.map +1 -1
  9. package/dist/modules/execution/RunAdmission.js +2 -0
  10. package/dist/modules/execution/RunAdmission.js.map +1 -1
  11. package/dist/modules/execution/RunDispatcher.d.ts +6 -1
  12. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  13. package/dist/modules/execution/RunDispatcher.js +11 -0
  14. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  15. package/dist/modules/execution/RunDispatcherDependencies.d.ts +2 -0
  16. package/dist/modules/execution/RunDispatcherDependencies.d.ts.map +1 -1
  17. package/dist/modules/execution/RunDispatcherDependencies.js.map +1 -1
  18. package/dist/modules/execution/StepDecisionController.d.ts.map +1 -1
  19. package/dist/modules/execution/StepDecisionController.js +1 -0
  20. package/dist/modules/execution/StepDecisionController.js.map +1 -1
  21. package/dist/modules/execution/dispatcher-registries.d.ts +2 -0
  22. package/dist/modules/execution/dispatcher-registries.d.ts.map +1 -1
  23. package/dist/modules/execution/dispatcher-registries.js +15 -0
  24. package/dist/modules/execution/dispatcher-registries.js.map +1 -1
  25. package/dist/modules/execution/gate-window-controllers.d.ts +2 -0
  26. package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
  27. package/dist/modules/execution/gate-window-controllers.js +12 -0
  28. package/dist/modules/execution/gate-window-controllers.js.map +1 -1
  29. package/dist/modules/execution/run-binary-output.d.ts.map +1 -1
  30. package/dist/modules/execution/run-binary-output.js +6 -1
  31. package/dist/modules/execution/run-binary-output.js.map +1 -1
  32. package/dist/modules/execution/run-decision-surfaces.d.ts +23 -0
  33. package/dist/modules/execution/run-decision-surfaces.d.ts.map +1 -0
  34. package/dist/modules/execution/run-decision-surfaces.js +66 -0
  35. package/dist/modules/execution/run-decision-surfaces.js.map +1 -0
  36. package/dist/modules/execution/run-foundational-services.d.ts +5 -2
  37. package/dist/modules/execution/run-foundational-services.d.ts.map +1 -1
  38. package/dist/modules/execution/run-foundational-services.js.map +1 -1
  39. package/dist/modules/execution/step-park.logic.d.ts +1 -1
  40. package/dist/modules/execution/step-park.logic.d.ts.map +1 -1
  41. package/dist/modules/execution/step-park.logic.js +5 -0
  42. package/dist/modules/execution/step-park.logic.js.map +1 -1
  43. package/dist/modules/pipelines/pipelineShape.d.ts.map +1 -1
  44. package/dist/modules/pipelines/pipelineShape.js +31 -1
  45. package/dist/modules/pipelines/pipelineShape.js.map +1 -1
  46. package/package.json +11 -11
@@ -0,0 +1,61 @@
1
+ import type { BinaryCandidateStepState, BlockRepository, Clock, ExecutionInstance, ExecutionRepository, IdGenerator, KeepBinaryCandidatesInput, PipelineStep, WorkRunner } from '@cat-factory/kernel';
2
+ import type { NotificationService } from '../notifications/NotificationService.js';
3
+ import type { AdvanceResult } from './advance.js';
4
+ import type { RunStateMachine } from './RunStateMachine.js';
5
+ import type { StepGraph } from './StepGraph.js';
6
+ /** What the candidate controller needs beyond the shared run state-machine spine. */
7
+ export interface BinaryCandidateControllerDeps {
8
+ blockRepository: BlockRepository;
9
+ executionRepository: ExecutionRepository;
10
+ workRunner: WorkRunner;
11
+ /** The async instance/block spine (park/advance/persist/emit/progress). */
12
+ stateMachine: RunStateMachine;
13
+ /** The pure step mutators (start/finish/reset a step). */
14
+ stepGraph: StepGraph;
15
+ idGenerator: IdGenerator;
16
+ clock: Clock;
17
+ /** Optional inbox channel; when unwired the specific card is skipped and the generic
18
+ * waiting-notification the park itself raises still names the run. */
19
+ notificationService?: NotificationService;
20
+ }
21
+ export declare class BinaryCandidateController {
22
+ private readonly deps;
23
+ constructor(deps: BinaryCandidateControllerDeps);
24
+ /**
25
+ * Record the first pass's staged candidates onto the step and decide the flow. Runs as the
26
+ * completion interceptor's body, so it must return one of three things and each is a different
27
+ * fact about the run:
28
+ *
29
+ * - **≥2 candidates** ⇒ park. This is what the comparison is for.
30
+ * - **exactly 1** ⇒ keep it automatically and re-arm the step for the delivering pass. Nobody
31
+ * is asked to choose between one thing, and discarding a real generation because it had no
32
+ * rival would be the worse outcome. The choice records `automatic: true` so no surface can
33
+ * present it as reviewed (the fork decision's `single_path`, one subject over).
34
+ * - **none** ⇒ record `no_choice` with the reason and FALL THROUGH (`null`) to the ordinary
35
+ * completion, so the run advances. A comparison that wedged a run because a model forgot a
36
+ * fenced block would be a worse failure than the one it exists to prevent, and the reason
37
+ * (`undeclared` / `parse_failed` / `no_candidates`) is on the step for a human to read.
38
+ *
39
+ * The state is recorded on EVERY path including the last, which is the point: a step that
40
+ * settles with nothing rendered would otherwise be indistinguishable from a step that never
41
+ * compared.
42
+ */
43
+ recordCandidates(workspaceId: string, instance: ExecutionInstance, step: PipelineStep, output: string | undefined): Promise<AdvanceResult | null>;
44
+ /**
45
+ * Resolve the human's choice: validate the kept ids against a FRESH snapshot, record what
46
+ * survives and under which alternate ids, re-arm the step for the delivering pass and wake the
47
+ * driver.
48
+ *
49
+ * The validation is against the snapshot rather than against whatever the client sent, for the
50
+ * ordinary reason (two people, one park) and one specific to this surface: `storeAs` is the id
51
+ * an artifact lands under, so a duplicate would deliver two files to one address and report both
52
+ * as stored. That is refused here rather than left to the agent, which has no way to tell a
53
+ * deliberate overwrite from a collision.
54
+ */
55
+ keep(workspaceId: string, executionId: string, input: KeepBinaryCandidatesInput): Promise<BinaryCandidateStepState>;
56
+ /** The active candidate state for a run's GET, or null when no step carries one. */
57
+ getActive(workspaceId: string, executionId: string): Promise<BinaryCandidateStepState | null>;
58
+ /** Raise the "compare the generated candidates" inbox card when the run parks. */
59
+ private raiseCandidatesPending;
60
+ }
61
+ //# sourceMappingURL=BinaryCandidateController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCandidateController.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/BinaryCandidateController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,wBAAwB,EACxB,eAAe,EACf,KAAK,EACL,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,yBAAyB,EACzB,YAAY,EACZ,UAAU,EACX,MAAM,qBAAqB,CAAA;AAO5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAiB/C,qFAAqF;AACrF,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,eAAe,CAAA;IAChC,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,2EAA2E;IAC3E,YAAY,EAAE,eAAe,CAAA;IAC7B,0DAA0D;IAC1D,SAAS,EAAE,SAAS,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;2EACuE;IACvE,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CAC1C;AAED,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,6BAA6B,EAAI;IAEpE;;;;;;;;;;;;;;;;;;OAkBG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAoD/B;IAED;;;;;;;;;;OAUG;IACG,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CAqDnC;IAED,oFAAoF;IAC9E,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAU1C;IAED,kFAAkF;YACpE,sBAAsB;CA0BrC"}
@@ -0,0 +1,215 @@
1
+ import { ConflictError, MAX_BINARY_CANDIDATES, parseBinaryCandidateDeclaration, ValidationError, } from '@cat-factory/kernel';
2
+ export class BinaryCandidateController {
3
+ deps;
4
+ constructor(deps) {
5
+ this.deps = deps;
6
+ }
7
+ /**
8
+ * Record the first pass's staged candidates onto the step and decide the flow. Runs as the
9
+ * completion interceptor's body, so it must return one of three things and each is a different
10
+ * fact about the run:
11
+ *
12
+ * - **≥2 candidates** ⇒ park. This is what the comparison is for.
13
+ * - **exactly 1** ⇒ keep it automatically and re-arm the step for the delivering pass. Nobody
14
+ * is asked to choose between one thing, and discarding a real generation because it had no
15
+ * rival would be the worse outcome. The choice records `automatic: true` so no surface can
16
+ * present it as reviewed (the fork decision's `single_path`, one subject over).
17
+ * - **none** ⇒ record `no_choice` with the reason and FALL THROUGH (`null`) to the ordinary
18
+ * completion, so the run advances. A comparison that wedged a run because a model forgot a
19
+ * fenced block would be a worse failure than the one it exists to prevent, and the reason
20
+ * (`undeclared` / `parse_failed` / `no_candidates`) is on the step for a human to read.
21
+ *
22
+ * The state is recorded on EVERY path including the last, which is the point: a step that
23
+ * settles with nothing rendered would otherwise be indistinguishable from a step that never
24
+ * compared.
25
+ */
26
+ async recordCandidates(workspaceId, instance, step, output) {
27
+ const declaration = parseBinaryCandidateDeclaration(output);
28
+ const candidates = declaration.candidates.map((candidate) => ({
29
+ id: this.deps.idGenerator.next('cand'),
30
+ ...candidate,
31
+ }));
32
+ const multiSelect = step.stepOptions?.binaryOutput?.comparison?.multiSelect === true;
33
+ const bookkeeping = {
34
+ candidates,
35
+ multiSelect,
36
+ invalidEntries: declaration.invalidEntries,
37
+ omitted: declaration.omitted,
38
+ unusablePreviews: declaration.unusablePreviews,
39
+ };
40
+ if (candidates.length === 0) {
41
+ step.binaryCandidates = {
42
+ ...bookkeeping,
43
+ status: 'no_choice',
44
+ noChoiceReason: declaration.parseFailed
45
+ ? 'parse_failed'
46
+ : declaration.undeclared
47
+ ? 'undeclared'
48
+ : 'no_candidates',
49
+ };
50
+ // Deliberately NOT persisted here: returning null hands the step to the ordinary completion
51
+ // path, which persists and emits the whole instance. Writing it twice would emit a run
52
+ // whose step is finished by one field and still running by another.
53
+ return null;
54
+ }
55
+ if (candidates.length === 1) {
56
+ step.binaryCandidates = {
57
+ ...bookkeeping,
58
+ status: 'chosen',
59
+ choice: {
60
+ kept: [{ candidateId: candidates[0].id }],
61
+ discarded: [],
62
+ automatic: true,
63
+ at: this.deps.clock.now(),
64
+ },
65
+ };
66
+ // Re-arm the SAME step so the driver re-enters and dispatches the delivering pass.
67
+ this.deps.stepGraph.resetStepForRerun(step);
68
+ this.deps.stepGraph.startStep(step);
69
+ await this.deps.stateMachine.persistAndEmit(workspaceId, instance);
70
+ return { kind: 'continue' };
71
+ }
72
+ step.binaryCandidates = { ...bookkeeping, status: 'awaiting_choice' };
73
+ await this.raiseCandidatesPending(workspaceId, instance, candidates.length);
74
+ return this.deps.stateMachine.parkStepOnDecision(workspaceId, instance, step);
75
+ }
76
+ /**
77
+ * Resolve the human's choice: validate the kept ids against a FRESH snapshot, record what
78
+ * survives and under which alternate ids, re-arm the step for the delivering pass and wake the
79
+ * driver.
80
+ *
81
+ * The validation is against the snapshot rather than against whatever the client sent, for the
82
+ * ordinary reason (two people, one park) and one specific to this surface: `storeAs` is the id
83
+ * an artifact lands under, so a duplicate would deliver two files to one address and report both
84
+ * as stored. That is refused here rather than left to the agent, which has no way to tell a
85
+ * deliberate overwrite from a collision.
86
+ */
87
+ async keep(workspaceId, executionId, input) {
88
+ let approvalId = '';
89
+ let state;
90
+ const instance = await this.deps.stateMachine.mutateInstance(workspaceId, executionId, (inst) => {
91
+ const step = inst.steps.find((s) => s.state === 'waiting_decision' &&
92
+ s.approval?.status === 'pending' &&
93
+ s.binaryCandidates?.status === 'awaiting_choice');
94
+ if (!step?.approval || !step.binaryCandidates) {
95
+ throw new ConflictError('The run is no longer awaiting a generated-candidate choice');
96
+ }
97
+ const candidates = step.binaryCandidates;
98
+ assertKeepable(input, candidates);
99
+ // Captured BEFORE `resetStepForRerun` clears `step.approval`.
100
+ approvalId = step.approval.id;
101
+ const kept = new Set(input.keep.map((entry) => entry.candidateId));
102
+ step.binaryCandidates = {
103
+ ...candidates,
104
+ status: 'chosen',
105
+ choice: {
106
+ kept: input.keep.map((entry) => ({
107
+ candidateId: entry.candidateId,
108
+ ...(entry.storeAs ? { storeAs: entry.storeAs } : {}),
109
+ })),
110
+ // Recorded explicitly rather than derived at read time: the delivering pass is what
111
+ // clears the staged files, and it needs the list even after a later reader would
112
+ // have to reconstruct it by subtraction from a candidate list nothing guarantees
113
+ // survives a future reset.
114
+ discarded: candidates.candidates
115
+ .map((candidate) => candidate.id)
116
+ .filter((id) => !kept.has(id)),
117
+ ...(input.note ? { note: input.note } : {}),
118
+ at: this.deps.clock.now(),
119
+ },
120
+ };
121
+ // Re-arm the SAME step so the driver re-enters and dispatches the delivering pass
122
+ // (`binaryCandidates` survives `resetStepForRerun`, like `forkDecision`).
123
+ this.deps.stepGraph.resetStepForRerun(step);
124
+ this.deps.stepGraph.startStep(step);
125
+ if (inst.status === 'blocked')
126
+ inst.status = 'running';
127
+ state = step.binaryCandidates;
128
+ });
129
+ await this.deps.stateMachine.clearWaitingNotification(workspaceId, instance);
130
+ await this.deps.stateMachine.updateBlockProgress(workspaceId, instance, 'in_progress');
131
+ await this.deps.stateMachine.emitInstance(workspaceId, instance);
132
+ await this.deps.workRunner.signalDecision(workspaceId, instance.id, approvalId, 'approved');
133
+ return state;
134
+ }
135
+ /** The active candidate state for a run's GET, or null when no step carries one. */
136
+ async getActive(workspaceId, executionId) {
137
+ const instance = await this.deps.executionRepository.get(workspaceId, executionId);
138
+ if (!instance)
139
+ return null;
140
+ const current = instance.steps[instance.currentStep];
141
+ if (current?.binaryCandidates)
142
+ return current.binaryCandidates;
143
+ for (let i = instance.steps.length - 1; i >= 0; i--) {
144
+ const candidates = instance.steps[i].binaryCandidates;
145
+ if (candidates)
146
+ return candidates;
147
+ }
148
+ return null;
149
+ }
150
+ /** Raise the "compare the generated candidates" inbox card when the run parks. */
151
+ async raiseCandidatesPending(workspaceId, instance, count) {
152
+ if (!this.deps.notificationService)
153
+ return;
154
+ const block = await this.deps.blockRepository.get(workspaceId, instance.blockId);
155
+ if (!block)
156
+ return;
157
+ // `decision_required` rather than a type of its own, and the reasoning is the iteration-cap
158
+ // card's: the park already raises a generic waiting notification whose reveal opens the
159
+ // parked step, which routes to this window by itself, so a dedicated type would buy an icon
160
+ // and cost a member of a closed vocabulary that four wire surfaces and every locale mirror.
161
+ // What is worth having is the SPECIFIC wording, and the park's own card is non-clobbering, so
162
+ // raising this first is what makes the inbox say which decision is waiting.
163
+ await this.deps.notificationService.raise(workspaceId, {
164
+ type: 'decision_required',
165
+ blockId: block.id,
166
+ executionId: instance.id,
167
+ title: `"${block.title}" has ${count} generated candidates to compare`,
168
+ body: 'A generating step produced several candidates rather than committing to one. Open the ' +
169
+ 'task to compare them and keep the one (or ones) you want: the step delivers what you ' +
170
+ 'keep.',
171
+ payload: { pipelineName: instance.pipelineName },
172
+ });
173
+ }
174
+ }
175
+ /**
176
+ * Whether this request may resolve the park, refusing every way it could not.
177
+ *
178
+ * Each refusal is a distinct fault a caller can fix, and each would otherwise land somewhere far
179
+ * from its cause: an unknown id would silently keep nothing, a second kept candidate on a
180
+ * single-select step would deliver an artifact count nobody configured, and duplicate `storeAs`
181
+ * ids would put two files at one address and report both as delivered.
182
+ */
183
+ function assertKeepable(input, state) {
184
+ const known = new Set(state.candidates.map((candidate) => candidate.id));
185
+ const seen = new Set();
186
+ for (const entry of input.keep) {
187
+ if (!known.has(entry.candidateId)) {
188
+ throw new ValidationError(`Unknown candidate '${entry.candidateId}'`);
189
+ }
190
+ if (seen.has(entry.candidateId)) {
191
+ throw new ValidationError(`Candidate '${entry.candidateId}' was kept twice`);
192
+ }
193
+ seen.add(entry.candidateId);
194
+ }
195
+ if (input.keep.length > 1 && !state.multiSelect) {
196
+ throw new ValidationError('This step keeps one candidate. Enable multi-select on the step to keep more than one.');
197
+ }
198
+ // Above the parse cap nothing could have been kept anyway, but the bound is restated on the
199
+ // WRITE path because it is the one a client controls: a request naming more entries than the
200
+ // step could ever hold is a client bug, and the id check above would already have refused it
201
+ // one id at a time with a message about the wrong thing.
202
+ if (input.keep.length > MAX_BINARY_CANDIDATES) {
203
+ throw new ValidationError(`At most ${MAX_BINARY_CANDIDATES} candidates may be kept`);
204
+ }
205
+ const aliases = input.keep.flatMap((entry) => (entry.storeAs ? [entry.storeAs] : []));
206
+ if (new Set(aliases).size !== aliases.length) {
207
+ throw new ValidationError('Each kept candidate needs a DISTINCT id to be stored under: two artifacts at one location is one artifact.');
208
+ }
209
+ // More than one survivor with no alternate id is the same collision spelled differently: the
210
+ // step's ordinary naming is one name, so two candidates claiming it would overwrite each other.
211
+ if (input.keep.length > 1 && aliases.length < input.keep.length) {
212
+ throw new ValidationError('Keeping more than one candidate requires an id for each of them, or they would all be stored under the same name.');
213
+ }
214
+ }
215
+ //# sourceMappingURL=BinaryCandidateController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCandidateController.js","sourceRoot":"","sources":["../../../src/modules/execution/BinaryCandidateController.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import type { JudgeDefinition, JudgeStepState, ResolveJudgeInput, AgentFailureKind, Block, ExecutionInstance, FollowUpsStepState, ForkDecisionStepState, ChooseForkInput, ForkChatRequestInput, PrReviewStepState, ResolvePrReviewInput, ChallengePrReviewFindingInput, GateActor, StepReviewComment, InputGateInput, ResolveInputGateChoice, RunInputGate } from '@cat-factory/kernel';
1
+ import type { JudgeDefinition, JudgeStepState, ResolveJudgeInput, AgentFailureKind, Block, ExecutionInstance, GateActor, StepReviewComment, InputGateInput, ResolveInputGateChoice, RunInputGate } from '@cat-factory/kernel';
2
2
  import type { PrVerificationReport, RunOutcome, ServiceSpecView } from '@cat-factory/contracts';
3
3
  import type { RunStartOptions } from './runStartOptions.js';
4
4
  import { type HasPersonalSubscription } from './individualVendors.logic.js';
5
5
  import { type SubscriptionVendor } from '@cat-factory/kernel';
6
+ import { type RunDecisionSurfaces } from './run-decision-surfaces.js';
6
7
  import { BrainstormActions, ClarityReviewActions, type HumanTestActions, RequirementReviewActions, type VisualConfirmActions } from './gate-window-facades.js';
7
8
  import { InitiativeInterviewController } from './InitiativeInterviewController.js';
8
9
  import { DocInterviewController } from './DocInterviewController.js';
@@ -45,22 +46,19 @@ export declare class ExecutionService {
45
46
  private readonly mergeResolver;
46
47
  /** Drives a companion (reviewer/spec/architect) step: grade → pass / loop producer / park. */
47
48
  private readonly companionController;
48
- /** Drives the Tester gate's fix loop: report → greenlight / dispatch fixer / fail. */
49
- private readonly testerController;
50
- private readonly ralphController;
51
- /** Drives the human-testing gate: provision env park confirm / fix / pull-main / recreate. */
52
- private readonly humanTestController;
53
- /** Drives the visual-confirmation gate: gather screenshots park approve / fix / recapture. */
54
- private readonly visualConfirmationController;
55
- /** Drives both iterative review gates (requirements + clarity); kind-parameterised. */
56
- private readonly reviewGate;
49
+ /**
50
+ * The controllers behind the run's gates and dedicated park windows, as ONE bundle rather than
51
+ * one field each: the Tester fix loop, the Ralph loop, the human-testing and
52
+ * visual-confirmation gates, both iterative review gates, the implementation-fork decision, the
53
+ * PR deep-review and the generated-candidate comparison. The family grows with every park
54
+ * surface, and a field plus an assignment per member spends two lines of this class's budget on
55
+ * a value that is only ever forwarded. See {@link buildGateWindowControllers}.
56
+ */
57
+ private readonly gateWindows;
57
58
  /** The pre-dispatch input gate; see {@link InputGateController}. */
58
59
  private readonly inputGate;
59
60
  /** Bound collaborators for the shared pre-dispatch preamble ({@link runStepPreamble}). */
60
61
  private stepPreambleDepsCache?;
61
- /** Drives the human-facing half of the implementation-fork decision phase on the Coder step. */
62
- private readonly forkDecisionController;
63
- private readonly prReviewController;
64
62
  /** The requirements subject for {@link reviewGate}. */
65
63
  private readonly requirementsKind;
66
64
  /** The clarity (bug-report triage) subject for {@link reviewGate}. */
@@ -266,32 +264,14 @@ export declare class ExecutionService {
266
264
  registeredJudges(): JudgeDefinition[];
267
265
  /** @see RunDispatcher.resolveGatePollExhaustion */
268
266
  resolveGatePollExhaustion(workspaceId: string, executionId: string): Promise<AdvanceResult>;
269
- /** @see RunDispatcher.getFollowUps */
270
- getFollowUps(workspaceId: string, executionId: string): Promise<FollowUpsStepState | null>;
271
- /** @see RunDispatcher.getForkDecision */
272
- getForkDecision(workspaceId: string, executionId: string): Promise<ForkDecisionStepState | null>;
273
- /** @see RunDispatcher.chooseFork */
274
- chooseFork(workspaceId: string, executionId: string, input: ChooseForkInput): Promise<ForkDecisionStepState>;
275
- /** @see RunDispatcher.forkChat */
276
- forkChat(workspaceId: string, executionId: string, input: ForkChatRequestInput): Promise<ForkDecisionStepState>;
277
- /** @see RunDispatcher.getPrReview */
278
- getPrReview(workspaceId: string, executionId: string): Promise<PrReviewStepState | null>;
279
- /** @see RunDispatcher.resolvePrReview */
280
- resolvePrReview(workspaceId: string, executionId: string, input: ResolvePrReviewInput): Promise<PrReviewStepState>;
281
- /** @see RunDispatcher.resumePrReview */
282
- resumePrReview(workspaceId: string, executionId: string): Promise<PrReviewStepState>;
283
- /** @see RunDispatcher.dismissPrReviewFinding */
284
- dismissPrReviewFinding(workspaceId: string, executionId: string, findingId: string): Promise<PrReviewStepState>;
285
- /** @see RunDispatcher.challengePrReviewFinding */
286
- challengePrReviewFinding(workspaceId: string, executionId: string, findingId: string, input: ChallengePrReviewFindingInput): Promise<PrReviewStepState>;
287
- /** @see RunDispatcher.fileFollowUp */
288
- fileFollowUp(workspaceId: string, executionId: string, itemId: string): Promise<FollowUpsStepState>;
289
- /** @see RunDispatcher.queueFollowUp */
290
- queueFollowUp(workspaceId: string, executionId: string, itemId: string): Promise<FollowUpsStepState>;
291
- /** @see RunDispatcher.answerFollowUp */
292
- answerFollowUp(workspaceId: string, executionId: string, itemId: string, answer: string): Promise<FollowUpsStepState>;
293
- /** @see RunDispatcher.dismissFollowUp */
294
- dismissFollowUp(workspaceId: string, executionId: string, itemId: string): Promise<FollowUpsStepState>;
267
+ /**
268
+ * The verbs a run's DEDICATED PARK WINDOWS are answered with: the Follow-up companion, the
269
+ * implementation-fork decision, the PR deep-review and the generated-candidate comparison.
270
+ *
271
+ * One property rather than sixteen delegates, because they are one concern and the family grows
272
+ * by two every time a park surface is added. See `run-decision-surfaces.ts`.
273
+ */
274
+ readonly decisions: RunDecisionSurfaces;
295
275
  /**
296
276
  * Infer + persist the block's `technical` label from the settled spec phase (item 5):
297
277
  * combine the spec-writer's `noBusinessSpecs` determination (recorded on the producer
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionService.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExecutionService.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/ExecutionService.ts"],"names":[],"mappings":"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"}
@@ -18,13 +18,8 @@ import {} from './ReviewGateController.js';
18
18
  import { runStepPreamble } from './stepPreamble.js';
19
19
  import { buildGateWindowControllers, buildInputGateController, buildReviewSubjects, } from './gate-window-controllers.js';
20
20
  import { buildRunContextAndAdmission } from './run-context-admission.js';
21
- import { ForkDecisionController } from './ForkDecisionController.js';
22
- import { PrReviewController } from './PrReviewController.js';
21
+ import { runDecisionSurfaces } from './run-decision-surfaces.js';
23
22
  import { BrainstormActions, ClarityReviewActions, RequirementReviewActions, } from './gate-window-facades.js';
24
- import { TesterController } from './TesterController.js';
25
- import { RalphController } from './RalphController.js';
26
- import { HumanTestController } from './HumanTestController.js';
27
- import { VisualConfirmationController } from './VisualConfirmationController.js';
28
23
  import { InitiativeInterviewController } from './InitiativeInterviewController.js';
29
24
  import { DocInterviewController } from './DocInterviewController.js';
30
25
  import { RunMergePolicy } from './RunMergePolicy.js';
@@ -125,22 +120,19 @@ export class ExecutionService {
125
120
  mergeResolver;
126
121
  /** Drives a companion (reviewer/spec/architect) step: grade → pass / loop producer / park. */
127
122
  companionController;
128
- /** Drives the Tester gate's fix loop: report → greenlight / dispatch fixer / fail. */
129
- testerController;
130
- ralphController;
131
- /** Drives the human-testing gate: provision env park confirm / fix / pull-main / recreate. */
132
- humanTestController;
133
- /** Drives the visual-confirmation gate: gather screenshots park approve / fix / recapture. */
134
- visualConfirmationController;
135
- /** Drives both iterative review gates (requirements + clarity); kind-parameterised. */
136
- reviewGate;
123
+ /**
124
+ * The controllers behind the run's gates and dedicated park windows, as ONE bundle rather than
125
+ * one field each: the Tester fix loop, the Ralph loop, the human-testing and
126
+ * visual-confirmation gates, both iterative review gates, the implementation-fork decision, the
127
+ * PR deep-review and the generated-candidate comparison. The family grows with every park
128
+ * surface, and a field plus an assignment per member spends two lines of this class's budget on
129
+ * a value that is only ever forwarded. See {@link buildGateWindowControllers}.
130
+ */
131
+ gateWindows;
137
132
  /** The pre-dispatch input gate; see {@link InputGateController}. */
138
133
  inputGate;
139
134
  /** Bound collaborators for the shared pre-dispatch preamble ({@link runStepPreamble}). */
140
135
  stepPreambleDepsCache;
141
- /** Drives the human-facing half of the implementation-fork decision phase on the Coder step. */
142
- forkDecisionController;
143
- prReviewController;
144
136
  /** The requirements subject for {@link reviewGate}. */
145
137
  requirementsKind;
146
138
  /** The clarity (bug-report triage) subject for {@link reviewGate}. */
@@ -311,13 +303,7 @@ export class ExecutionService {
311
303
  issueWriteback,
312
304
  logger,
313
305
  });
314
- this.testerController = gateWindows.testerController;
315
- this.ralphController = gateWindows.ralphController;
316
- this.humanTestController = gateWindows.humanTestController;
317
- this.visualConfirmationController = gateWindows.visualConfirmationController;
318
- this.reviewGate = gateWindows.reviewGate;
319
- this.forkDecisionController = gateWindows.forkDecisionController;
320
- this.prReviewController = gateWindows.prReviewController;
306
+ this.gateWindows = gateWindows;
321
307
  // The pre-dispatch input gate: not a gate WINDOW (it guards the run's first dispatch and has no
322
308
  // pipeline step of its own), so it has its own factory over the same dependency bag.
323
309
  this.inputGate = buildInputGateController(dependencies, {
@@ -470,13 +456,14 @@ export class ExecutionService {
470
456
  contextBuilder: this.contextBuilder,
471
457
  mergeResolver: this.mergeResolver,
472
458
  companionController: this.companionController,
473
- testerController: this.testerController,
474
- ralphController: this.ralphController,
475
- humanTestController: this.humanTestController,
476
- visualConfirmationController: this.visualConfirmationController,
477
- reviewGate: this.reviewGate,
478
- forkDecisionController: this.forkDecisionController,
479
- prReviewController: this.prReviewController,
459
+ testerController: this.gateWindows.testerController,
460
+ ralphController: this.gateWindows.ralphController,
461
+ humanTestController: this.gateWindows.humanTestController,
462
+ visualConfirmationController: this.gateWindows.visualConfirmationController,
463
+ reviewGate: this.gateWindows.reviewGate,
464
+ forkDecisionController: this.gateWindows.forkDecisionController,
465
+ binaryCandidateController: this.gateWindows.binaryCandidateController,
466
+ prReviewController: this.gateWindows.prReviewController,
480
467
  requirementsKind: this.requirementsKind,
481
468
  clarityKind: this.clarityKind,
482
469
  requirementsBrainstormKind: this.requirementsBrainstormKind,
@@ -517,26 +504,26 @@ export class ExecutionService {
517
504
  // still the single injected object, so the runtimes stay symmetric (no composition-root edit).
518
505
  /** Requirements-review window actions (run / incorporate / re-review / proceed / …). */
519
506
  get requirementsReview() {
520
- this.requirementsReviewActions ??= new RequirementReviewActions(this.reviewGate, this.requirementsKind);
507
+ this.requirementsReviewActions ??= new RequirementReviewActions(this.gateWindows.reviewGate, this.requirementsKind);
521
508
  return this.requirementsReviewActions;
522
509
  }
523
510
  /** Clarity-review (bug-report triage) window actions. */
524
511
  get clarityReview() {
525
- this.clarityReviewActions ??= new ClarityReviewActions(this.reviewGate, this.clarityKind);
512
+ this.clarityReviewActions ??= new ClarityReviewActions(this.gateWindows.reviewGate, this.clarityKind);
526
513
  return this.clarityReviewActions;
527
514
  }
528
515
  /** Brainstorm (structured-dialogue) window actions, keyed by stage. */
529
516
  get brainstorm() {
530
- this.brainstormActions ??= new BrainstormActions(this.reviewGate, (stage) => this.brainstormKindFor(stage));
517
+ this.brainstormActions ??= new BrainstormActions(this.gateWindows.reviewGate, (stage) => this.brainstormKindFor(stage));
531
518
  return this.brainstormActions;
532
519
  }
533
520
  /** Human-testing gate window actions (confirm / request-fix / pull-main / recreate / destroy). */
534
521
  get humanTest() {
535
- return this.humanTestController;
522
+ return this.gateWindows.humanTestController;
536
523
  }
537
524
  /** Visual-confirmation gate window actions (approve / request-fix / recapture). */
538
525
  get visualConfirm() {
539
- return this.visualConfirmationController;
526
+ return this.gateWindows.visualConfirmationController;
540
527
  }
541
528
  /**
542
529
  * Interactive-planning interviewer window actions (answer / continue / proceed). Undefined
@@ -776,58 +763,14 @@ export class ExecutionService {
776
763
  resolveGatePollExhaustion(workspaceId, executionId) {
777
764
  return this.runDispatcher.resolveGatePollExhaustion(workspaceId, executionId);
778
765
  }
779
- /** @see RunDispatcher.getFollowUps */
780
- getFollowUps(workspaceId, executionId) {
781
- return this.runDispatcher.getFollowUps(workspaceId, executionId);
782
- }
783
- /** @see RunDispatcher.getForkDecision */
784
- getForkDecision(workspaceId, executionId) {
785
- return this.runDispatcher.getForkDecision(workspaceId, executionId);
786
- }
787
- /** @see RunDispatcher.chooseFork */
788
- chooseFork(workspaceId, executionId, input) {
789
- return this.runDispatcher.chooseFork(workspaceId, executionId, input);
790
- }
791
- /** @see RunDispatcher.forkChat */
792
- forkChat(workspaceId, executionId, input) {
793
- return this.runDispatcher.forkChat(workspaceId, executionId, input);
794
- }
795
- /** @see RunDispatcher.getPrReview */
796
- getPrReview(workspaceId, executionId) {
797
- return this.runDispatcher.getPrReview(workspaceId, executionId);
798
- }
799
- /** @see RunDispatcher.resolvePrReview */
800
- resolvePrReview(workspaceId, executionId, input) {
801
- return this.runDispatcher.resolvePrReview(workspaceId, executionId, input);
802
- }
803
- /** @see RunDispatcher.resumePrReview */
804
- resumePrReview(workspaceId, executionId) {
805
- return this.runDispatcher.resumePrReview(workspaceId, executionId);
806
- }
807
- /** @see RunDispatcher.dismissPrReviewFinding */
808
- dismissPrReviewFinding(workspaceId, executionId, findingId) {
809
- return this.runDispatcher.dismissPrReviewFinding(workspaceId, executionId, findingId);
810
- }
811
- /** @see RunDispatcher.challengePrReviewFinding */
812
- challengePrReviewFinding(workspaceId, executionId, findingId, input) {
813
- return this.runDispatcher.challengePrReviewFinding(workspaceId, executionId, findingId, input);
814
- }
815
- /** @see RunDispatcher.fileFollowUp */
816
- fileFollowUp(workspaceId, executionId, itemId) {
817
- return this.runDispatcher.fileFollowUp(workspaceId, executionId, itemId);
818
- }
819
- /** @see RunDispatcher.queueFollowUp */
820
- queueFollowUp(workspaceId, executionId, itemId) {
821
- return this.runDispatcher.queueFollowUp(workspaceId, executionId, itemId);
822
- }
823
- /** @see RunDispatcher.answerFollowUp */
824
- answerFollowUp(workspaceId, executionId, itemId, answer) {
825
- return this.runDispatcher.answerFollowUp(workspaceId, executionId, itemId, answer);
826
- }
827
- /** @see RunDispatcher.dismissFollowUp */
828
- dismissFollowUp(workspaceId, executionId, itemId) {
829
- return this.runDispatcher.dismissFollowUp(workspaceId, executionId, itemId);
830
- }
766
+ /**
767
+ * The verbs a run's DEDICATED PARK WINDOWS are answered with: the Follow-up companion, the
768
+ * implementation-fork decision, the PR deep-review and the generated-candidate comparison.
769
+ *
770
+ * One property rather than sixteen delegates, because they are one concern and the family grows
771
+ * by two every time a park surface is added. See `run-decision-surfaces.ts`.
772
+ */
773
+ decisions = runDecisionSurfaces(() => this.runDispatcher);
831
774
  /**
832
775
  * Infer + persist the block's `technical` label from the settled spec phase (item 5):
833
776
  * combine the spec-writer's `noBusinessSpecs` determination (recorded on the producer