@cat-factory/orchestration 0.172.1 → 0.174.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 (44) hide show
  1. package/dist/container.d.ts.map +1 -1
  2. package/dist/container.js +10 -1
  3. package/dist/container.js.map +1 -1
  4. package/dist/modules/execution/AgentContextBuilder.d.ts.map +1 -1
  5. package/dist/modules/execution/AgentContextBuilder.js +48 -2
  6. package/dist/modules/execution/AgentContextBuilder.js.map +1 -1
  7. package/dist/modules/execution/ExecutionService.d.ts +2 -0
  8. package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
  9. package/dist/modules/execution/ExecutionService.js +17 -7
  10. package/dist/modules/execution/ExecutionService.js.map +1 -1
  11. package/dist/modules/execution/PrReviewController.d.ts +39 -0
  12. package/dist/modules/execution/PrReviewController.d.ts.map +1 -1
  13. package/dist/modules/execution/PrReviewController.js +98 -0
  14. package/dist/modules/execution/PrReviewController.js.map +1 -1
  15. package/dist/modules/execution/RunAdmission.d.ts.map +1 -1
  16. package/dist/modules/execution/RunAdmission.js +10 -4
  17. package/dist/modules/execution/RunAdmission.js.map +1 -1
  18. package/dist/modules/execution/RunDispatcher.d.ts +2 -0
  19. package/dist/modules/execution/RunDispatcher.d.ts.map +1 -1
  20. package/dist/modules/execution/RunDispatcher.js +11 -0
  21. package/dist/modules/execution/RunDispatcher.js.map +1 -1
  22. package/dist/modules/execution/RunRepoOpsController.d.ts.map +1 -1
  23. package/dist/modules/execution/RunRepoOpsController.js +10 -2
  24. package/dist/modules/execution/RunRepoOpsController.js.map +1 -1
  25. package/dist/modules/execution/prReview.logic.d.ts.map +1 -1
  26. package/dist/modules/execution/prReview.logic.js +8 -0
  27. package/dist/modules/execution/prReview.logic.js.map +1 -1
  28. package/dist/modules/execution/prReviewSlices.logic.d.ts +71 -0
  29. package/dist/modules/execution/prReviewSlices.logic.d.ts.map +1 -0
  30. package/dist/modules/execution/prReviewSlices.logic.js +181 -0
  31. package/dist/modules/execution/prReviewSlices.logic.js.map +1 -0
  32. package/dist/modules/execution/stepGating.logic.d.ts +25 -1
  33. package/dist/modules/execution/stepGating.logic.d.ts.map +1 -1
  34. package/dist/modules/execution/stepGating.logic.js +30 -0
  35. package/dist/modules/execution/stepGating.logic.js.map +1 -1
  36. package/dist/modules/pipelines/PipelineService.d.ts +14 -1
  37. package/dist/modules/pipelines/PipelineService.d.ts.map +1 -1
  38. package/dist/modules/pipelines/PipelineService.js +21 -2
  39. package/dist/modules/pipelines/PipelineService.js.map +1 -1
  40. package/dist/modules/pipelines/pipelineShape.d.ts +48 -16
  41. package/dist/modules/pipelines/pipelineShape.d.ts.map +1 -1
  42. package/dist/modules/pipelines/pipelineShape.js +34 -19
  43. package/dist/modules/pipelines/pipelineShape.js.map +1 -1
  44. package/package.json +11 -11
@@ -0,0 +1,71 @@
1
+ import type { PipelineStep, PrReviewSliceReview } from '@cat-factory/kernel';
2
+ /**
3
+ * Parse the harness payload into slice reviews, dropping unusable entries.
4
+ *
5
+ * Deliberately lenient per ENTRY rather than all-or-nothing: one malformed slice must not discard
6
+ * the seven good reports beside it, since discarding them is exactly the data loss this channel
7
+ * exists to prevent.
8
+ */
9
+ export declare function coerceSliceReviews(raw: unknown): PrReviewSliceReview[];
10
+ /**
11
+ * Fold the harness's live per-slice reviews onto a `pr-reviewer` step, returning whether anything
12
+ * changed.
13
+ *
14
+ * Only applies to a step that already carries `prReview` (the reviewer seeds it at dispatch): the
15
+ * channel is review-specific, and a subagent-fanning coder step must not grow review state. Absent
16
+ * or unparseable payloads leave the step untouched.
17
+ *
18
+ * NEVER shrinks the set. The harness republishes everything it has captured, but a poll can be
19
+ * served by a RESTARTED container (a resume, an eviction retry) whose tracker only knows the slices
20
+ * IT dispatched — forwarding that verbatim would erase the previous attempt's reports, which are
21
+ * the whole point. So completed reports already on the step survive a set that no longer mentions
22
+ * them.
23
+ */
24
+ export declare function applySliceReviews(step: PipelineStep, raw: unknown): boolean;
25
+ /**
26
+ * Merge freshly-reported slice reviews over what the step already holds, keyed by label.
27
+ *
28
+ * Monotonic in two directions, both of which matter across a resume: a slice already `completed`
29
+ * with a report is never demoted to `in_progress` (the resumed container re-dispatches it as new
30
+ * before its own subagent returns), and a slice the step knows about but this attempt never
31
+ * mentioned is kept rather than dropped.
32
+ */
33
+ export declare function mergeSliceReviews(existing: PrReviewSliceReview[], incoming: PrReviewSliceReview[]): PrReviewSliceReview[];
34
+ /**
35
+ * What the captured slice reports become once the reviewer's terminal output is recorded.
36
+ *
37
+ * They exist to make a review recoverable BEFORE that output, so an aggregation that CONSUMED them
38
+ * drops them: eight ~24KB prose reports on the run row is a quarter-megabyte of redundant text per
39
+ * review, and their content is in the findings by then.
40
+ *
41
+ * "Consumed" is the load-bearing word, and it is why this is a function rather than a `[]`. A
42
+ * reviewer that returned neither slices nor findings aggregated NOTHING — a crashed-out reply, an
43
+ * unusable output, a resumed run that died again — and clearing there would destroy the only record
44
+ * of the finished slices while recording the run as a clean PR. That is the exact loss this channel
45
+ * exists to prevent, wearing a pass as a disguise. So the reports survive precisely that case,
46
+ * leaving the review resumable.
47
+ *
48
+ * A genuinely clean PR still names its slices, so it takes the drop as before.
49
+ */
50
+ export declare function sliceReviewsAfterAggregation(existing: readonly PrReviewSliceReview[] | undefined, aggregation: {
51
+ slices: readonly unknown[];
52
+ findings: readonly unknown[];
53
+ }): PrReviewSliceReview[];
54
+ /**
55
+ * Work out which slices a manual resume still has to review, from the step's OWN observations.
56
+ *
57
+ * `planned` is the reviewer's live task list (`step.subtasks.items`), and it is the only place a
58
+ * slice that was planned but never DISPATCHED is named at all — the slice reviews can describe
59
+ * nothing but subagents that actually started. So the resume set is every planned slice with no
60
+ * completed review, plus any dispatched-but-unfinished slice the plan does not mention (a reviewer
61
+ * that regrouped mid-run, or never wrote a parent plan).
62
+ *
63
+ * Deduplicated on the same trimmed/lowercased key the labels are paired by, and ordered plan-first
64
+ * so the resumed reviewer is handed the slices in the order the previous attempt meant to take
65
+ * them. Returns labels in their original casing, which is what the prompt names them by.
66
+ */
67
+ export declare function planResumeSlices(reviews: readonly PrReviewSliceReview[], planned: readonly {
68
+ label: string;
69
+ status: string;
70
+ }[]): string[];
71
+ //# sourceMappingURL=prReviewSlices.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prReviewSlices.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/prReviewSlices.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AA2B5E;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAoBtE;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ3E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,mBAAmB,EAAE,CAWvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,EACpD,WAAW,EAAE;IAAE,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACxE,mBAAmB,EAAE,CAGvB;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GACpD,MAAM,EAAE,CAeV"}
@@ -0,0 +1,181 @@
1
+ import { parsePrReviewSliceReview } from '@cat-factory/contracts';
2
+ // ---------------------------------------------------------------------------
3
+ // Per-slice PR-review capture: fold the harness's live slice reviews onto the `pr-reviewer` step.
4
+ //
5
+ // WHY THIS FILE EXISTS. A PR review fans its slices out across parallel subagents and emits
6
+ // `slices`/`findings` only in its TERMINAL structured output. Everything in between was previously
7
+ // unpersisted, so a review that died mid-run (or whose aggregation pass wedged, the motivating
8
+ // incident) threw away every finished slice and could only be re-run from zero. The harness now
9
+ // captures each slice's subagent report as it lands; this module makes it durable on the step, which
10
+ // is the prerequisite for resuming a stuck review for only the slices that never finished.
11
+ //
12
+ // Pure: no engine state, no IO. The fold is idempotent (the harness republishes the WHOLE set on
13
+ // every poll, latest-wins), which is what lets a dropped poll response cost nothing.
14
+ // ---------------------------------------------------------------------------
15
+ /** Lenient parse of one harness-reported slice review; `null` when unusable. */
16
+ function coerceSliceReview(raw) {
17
+ const parsed = parsePrReviewSliceReview(raw);
18
+ if (!parsed)
19
+ return null;
20
+ // A label is the only field a resume can key on: an unlabelled slice can be neither paired with
21
+ // the reviewer's plan nor named in the prior-review context, so it is noise.
22
+ if (!parsed.label.trim())
23
+ return null;
24
+ return parsed;
25
+ }
26
+ /**
27
+ * Parse the harness payload into slice reviews, dropping unusable entries.
28
+ *
29
+ * Deliberately lenient per ENTRY rather than all-or-nothing: one malformed slice must not discard
30
+ * the seven good reports beside it, since discarding them is exactly the data loss this channel
31
+ * exists to prevent.
32
+ */
33
+ export function coerceSliceReviews(raw) {
34
+ if (!Array.isArray(raw))
35
+ return [];
36
+ const reviews = [];
37
+ for (const entry of raw) {
38
+ const review = coerceSliceReview(entry);
39
+ if (!review)
40
+ continue;
41
+ // The reviewer can dispatch the same slice label twice (a retried subagent). Keep the
42
+ // completed one whichever order they arrive in: a later in-flight duplicate must not demote a
43
+ // slice that already reported, or a resume would re-review work it already holds.
44
+ const key = review.label.trim();
45
+ const existing = reviews.findIndex((r) => r.label.trim() === key);
46
+ if (existing >= 0) {
47
+ if (reviews[existing].status !== 'completed' && review.status === 'completed') {
48
+ reviews[existing] = review;
49
+ }
50
+ continue;
51
+ }
52
+ reviews.push(review);
53
+ }
54
+ return reviews;
55
+ }
56
+ /** Whether two slice-review sets are equivalent, so an unchanged republish writes nothing. */
57
+ function sameSliceReviews(a, b) {
58
+ if (a.length !== b.length)
59
+ return false;
60
+ return a.every((left, i) => {
61
+ const right = b[i];
62
+ return (left.label === right.label &&
63
+ left.status === right.status &&
64
+ (left.report ?? null) === (right.report ?? null));
65
+ });
66
+ }
67
+ /**
68
+ * Fold the harness's live per-slice reviews onto a `pr-reviewer` step, returning whether anything
69
+ * changed.
70
+ *
71
+ * Only applies to a step that already carries `prReview` (the reviewer seeds it at dispatch): the
72
+ * channel is review-specific, and a subagent-fanning coder step must not grow review state. Absent
73
+ * or unparseable payloads leave the step untouched.
74
+ *
75
+ * NEVER shrinks the set. The harness republishes everything it has captured, but a poll can be
76
+ * served by a RESTARTED container (a resume, an eviction retry) whose tracker only knows the slices
77
+ * IT dispatched — forwarding that verbatim would erase the previous attempt's reports, which are
78
+ * the whole point. So completed reports already on the step survive a set that no longer mentions
79
+ * them.
80
+ */
81
+ export function applySliceReviews(step, raw) {
82
+ if (!step.prReview)
83
+ return false;
84
+ const incoming = coerceSliceReviews(raw);
85
+ if (incoming.length === 0)
86
+ return false;
87
+ const merged = mergeSliceReviews(step.prReview.sliceReviews ?? [], incoming);
88
+ if (sameSliceReviews(step.prReview.sliceReviews ?? [], merged))
89
+ return false;
90
+ step.prReview = { ...step.prReview, sliceReviews: merged };
91
+ return true;
92
+ }
93
+ /**
94
+ * Merge freshly-reported slice reviews over what the step already holds, keyed by label.
95
+ *
96
+ * Monotonic in two directions, both of which matter across a resume: a slice already `completed`
97
+ * with a report is never demoted to `in_progress` (the resumed container re-dispatches it as new
98
+ * before its own subagent returns), and a slice the step knows about but this attempt never
99
+ * mentioned is kept rather than dropped.
100
+ */
101
+ export function mergeSliceReviews(existing, incoming) {
102
+ const byLabel = new Map();
103
+ for (const review of existing)
104
+ byLabel.set(review.label.trim(), review);
105
+ for (const review of incoming) {
106
+ const key = review.label.trim();
107
+ const prior = byLabel.get(key);
108
+ // A completed report is terminal for that slice; only an upgrade to completed replaces it.
109
+ if (prior?.status === 'completed' && review.status !== 'completed')
110
+ continue;
111
+ byLabel.set(key, review);
112
+ }
113
+ return [...byLabel.values()];
114
+ }
115
+ /**
116
+ * What the captured slice reports become once the reviewer's terminal output is recorded.
117
+ *
118
+ * They exist to make a review recoverable BEFORE that output, so an aggregation that CONSUMED them
119
+ * drops them: eight ~24KB prose reports on the run row is a quarter-megabyte of redundant text per
120
+ * review, and their content is in the findings by then.
121
+ *
122
+ * "Consumed" is the load-bearing word, and it is why this is a function rather than a `[]`. A
123
+ * reviewer that returned neither slices nor findings aggregated NOTHING — a crashed-out reply, an
124
+ * unusable output, a resumed run that died again — and clearing there would destroy the only record
125
+ * of the finished slices while recording the run as a clean PR. That is the exact loss this channel
126
+ * exists to prevent, wearing a pass as a disguise. So the reports survive precisely that case,
127
+ * leaving the review resumable.
128
+ *
129
+ * A genuinely clean PR still names its slices, so it takes the drop as before.
130
+ */
131
+ export function sliceReviewsAfterAggregation(existing, aggregation) {
132
+ const aggregated = aggregation.slices.length > 0 || aggregation.findings.length > 0;
133
+ return aggregated ? [] : [...(existing ?? [])];
134
+ }
135
+ // ---------------------------------------------------------------------------
136
+ // Resume planning: what a manual resume of a wedged review still has to review.
137
+ // ---------------------------------------------------------------------------
138
+ /** Comparison key for a slice label — the harness pairs progress to slices the same way. */
139
+ function sliceKey(label) {
140
+ return label.trim().toLowerCase();
141
+ }
142
+ /**
143
+ * Whether a task-list entry is the reviewer's final AGGREGATION step rather than a slice. The
144
+ * `pr-reviewer` prompt fixes this wording ("aggregate findings") for that entry, and a resume
145
+ * always re-aggregates anyway, so it must never be listed as a slice to review.
146
+ */
147
+ function isAggregationEntry(key) {
148
+ return key.startsWith('aggregate');
149
+ }
150
+ /**
151
+ * Work out which slices a manual resume still has to review, from the step's OWN observations.
152
+ *
153
+ * `planned` is the reviewer's live task list (`step.subtasks.items`), and it is the only place a
154
+ * slice that was planned but never DISPATCHED is named at all — the slice reviews can describe
155
+ * nothing but subagents that actually started. So the resume set is every planned slice with no
156
+ * completed review, plus any dispatched-but-unfinished slice the plan does not mention (a reviewer
157
+ * that regrouped mid-run, or never wrote a parent plan).
158
+ *
159
+ * Deduplicated on the same trimmed/lowercased key the labels are paired by, and ordered plan-first
160
+ * so the resumed reviewer is handed the slices in the order the previous attempt meant to take
161
+ * them. Returns labels in their original casing, which is what the prompt names them by.
162
+ */
163
+ export function planResumeSlices(reviews, planned) {
164
+ const completed = new Set(reviews.filter((r) => r.status === 'completed').map((r) => sliceKey(r.label)));
165
+ const pending = [];
166
+ const seen = new Set();
167
+ const push = (label) => {
168
+ const key = sliceKey(label);
169
+ if (!key || isAggregationEntry(key) || completed.has(key) || seen.has(key))
170
+ return;
171
+ seen.add(key);
172
+ pending.push(label.trim());
173
+ };
174
+ for (const item of planned)
175
+ push(item.label);
176
+ for (const review of reviews)
177
+ if (review.status !== 'completed')
178
+ push(review.label);
179
+ return pending;
180
+ }
181
+ //# sourceMappingURL=prReviewSlices.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prReviewSlices.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/prReviewSlices.logic.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { StepGating, TaskEstimate } from '@cat-factory/kernel';
1
+ import type { PipelineStep, StepGating, TaskEstimate } from '@cat-factory/kernel';
2
2
  /**
3
3
  * Decide whether a gated pipeline step should run, given the task estimate and the step's
4
4
  * gating config. Mirrors the consensus-gating decision (OR across axes) but yields a plain
@@ -12,4 +12,28 @@ import type { StepGating, TaskEstimate } from '@cat-factory/kernel';
12
12
  * to thoroughness).
13
13
  */
14
14
  export declare function shouldRunGatedStep(estimate: TaskEstimate | null | undefined, gating: StepGating | null | undefined): boolean;
15
+ /**
16
+ * Whether `step` is a COMPANION whose producer was skipped, and must therefore be skipped too.
17
+ *
18
+ * A companion reviews the step immediately before it (`assertValidCompanionPlacement` guarantees
19
+ * that adjacency over the enabled subset). Once a PRODUCER can itself be estimate-gated, a
20
+ * companion can arrive with nothing to review: skipping `architect` on a light task would leave
21
+ * `architect-companion` grading whichever step happens to precede it — silently rating the wrong
22
+ * artifact rather than failing.
23
+ *
24
+ * Deliberately a LOCAL rule evaluated at the companion's own turn rather than a lookahead that
25
+ * skips two steps at once:
26
+ *
27
+ * - it reads PERSISTED state (`prior.skipped`), so it survives a durable-driver replay — an
28
+ * in-memory "I intend to skip the next one too" would not;
29
+ * - it composes with the companion's OWN gate (either reason skips it, and the reasons don't
30
+ * have to agree);
31
+ * - it needs no knowledge of which producer the companion targets, because adjacency is already
32
+ * an invariant the shape validation enforces.
33
+ *
34
+ * `steps`/`index` are the run's step list and this step's position in it. Index 0 can never be a
35
+ * companion (it would have no producer, which the shape validation rejects), so a missing
36
+ * predecessor yields `false` rather than a skip.
37
+ */
38
+ export declare function producerWasSkipped(steps: readonly PipelineStep[], index: number): boolean;
15
39
  //# sourceMappingURL=stepGating.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepGating.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/stepGating.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEnE;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,OAAO,CAYT"}
1
+ {"version":3,"file":"stepGating.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/execution/stepGating.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGjF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,OAAO,CAYT;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIzF"}
@@ -1,3 +1,4 @@
1
+ import { isCompanionKind } from '@cat-factory/agents';
1
2
  /**
2
3
  * Decide whether a gated pipeline step should run, given the task estimate and the step's
3
4
  * gating config. Mirrors the consensus-gating decision (OR across axes) but yields a plain
@@ -26,4 +27,33 @@ export function shouldRunGatedStep(estimate, gating) {
26
27
  }
27
28
  return false;
28
29
  }
30
+ /**
31
+ * Whether `step` is a COMPANION whose producer was skipped, and must therefore be skipped too.
32
+ *
33
+ * A companion reviews the step immediately before it (`assertValidCompanionPlacement` guarantees
34
+ * that adjacency over the enabled subset). Once a PRODUCER can itself be estimate-gated, a
35
+ * companion can arrive with nothing to review: skipping `architect` on a light task would leave
36
+ * `architect-companion` grading whichever step happens to precede it — silently rating the wrong
37
+ * artifact rather than failing.
38
+ *
39
+ * Deliberately a LOCAL rule evaluated at the companion's own turn rather than a lookahead that
40
+ * skips two steps at once:
41
+ *
42
+ * - it reads PERSISTED state (`prior.skipped`), so it survives a durable-driver replay — an
43
+ * in-memory "I intend to skip the next one too" would not;
44
+ * - it composes with the companion's OWN gate (either reason skips it, and the reasons don't
45
+ * have to agree);
46
+ * - it needs no knowledge of which producer the companion targets, because adjacency is already
47
+ * an invariant the shape validation enforces.
48
+ *
49
+ * `steps`/`index` are the run's step list and this step's position in it. Index 0 can never be a
50
+ * companion (it would have no producer, which the shape validation rejects), so a missing
51
+ * predecessor yields `false` rather than a skip.
52
+ */
53
+ export function producerWasSkipped(steps, index) {
54
+ const step = steps[index];
55
+ if (!step || !isCompanionKind(step.agentKind))
56
+ return false;
57
+ return steps[index - 1]?.skipped === true;
58
+ }
29
59
  //# sourceMappingURL=stepGating.logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stepGating.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/stepGating.logic.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAyC,EACzC,MAAqC;IAErC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAA;IACnE,MAAM,IAAI,GAAwC;QAChD,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC3C,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC/B,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,CAAA;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO,IAAI,CAAA;IAChE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"stepGating.logic.js","sourceRoot":"","sources":["../../../src/modules/execution/stepGating.logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAyC,EACzC,MAAqC;IAErC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAA;IACnE,MAAM,IAAI,GAAwC;QAChD,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC3C,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC/B,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC;KACpC,CAAA;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO,IAAI,CAAA;IAChE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B,EAAE,KAAa;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3D,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;AAC3C,CAAC"}
@@ -3,6 +3,7 @@ import type { Pipeline } from '@cat-factory/kernel';
3
3
  import type { PipelineRegistry } from '@cat-factory/kernel';
4
4
  import type { ObservabilityConnectionRepository, PipelineRepository, PipelineScheduleRepository, WorkspaceRepository } from '@cat-factory/kernel';
5
5
  import type { IdGenerator } from '@cat-factory/kernel';
6
+ import type { AgentKindRegistry } from '@cat-factory/agents';
6
7
  export interface PipelineServiceDependencies {
7
8
  workspaceRepository: WorkspaceRepository;
8
9
  pipelineRepository: PipelineRepository;
@@ -13,6 +14,17 @@ export interface PipelineServiceDependencies {
13
14
  * the built-in catalog only.
14
15
  */
15
16
  pipelineRegistry?: PipelineRegistry;
17
+ /**
18
+ * The app-owned agent-kind registry, so a save honours a DEPLOYMENT-registered kind's own
19
+ * `gatable` flag — the same answer the run-start guard reaches. Optional so the service stays
20
+ * constructible standalone in unit tests; absent ⇒ built-in gatability only.
21
+ *
22
+ * `createCore` passes the instance `resolveCoreRuntime` RESOLVED (the facade's, else the default),
23
+ * which is the same one `RunAdmission` gets. Passing `CoreDependencies.agentKindRegistry` straight
24
+ * through instead would hand this `undefined` on every facade that doesn't inject one, and the two
25
+ * boundaries would then be answering "may this step be gated?" from different registries.
26
+ */
27
+ agentKindRegistry?: AgentKindRegistry;
16
28
  /**
17
29
  * Resolves whether the workspace has any observability integration enabled (today: a
18
30
  * Datadog connection). When absent (no observability persistence wired at all), the
@@ -35,7 +47,8 @@ export declare class PipelineService {
35
47
  private readonly observabilityConnectionRepository?;
36
48
  private readonly pipelineScheduleRepository?;
37
49
  private readonly pipelineRegistry?;
38
- constructor({ workspaceRepository, pipelineRepository, idGenerator, observabilityConnectionRepository, pipelineScheduleRepository, pipelineRegistry, }: PipelineServiceDependencies);
50
+ private readonly agentKindRegistry?;
51
+ constructor({ workspaceRepository, pipelineRepository, idGenerator, observabilityConnectionRepository, pipelineScheduleRepository, pipelineRegistry, agentKindRegistry, }: PipelineServiceDependencies);
39
52
  /**
40
53
  * The post-release-health gate is only meaningful with an observability integration, so
41
54
  * reject a chain that includes an ENABLED post-release-health step unless the workspace
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineService.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAEV,QAAQ,EAIT,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAQ3D,OAAO,KAAK,EACV,iCAAiC,EACjC,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAetD,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,WAAW,EAAE,WAAW,CAAA;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;OAIG;IACH,iCAAiC,CAAC,EAAE,iCAAiC,CAAA;IACrE;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;CACxD;AA0BD,wDAAwD;AACxD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAmC;IACtF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAA4B;IACxE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAkB;IAEpD,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,iCAAiC,EACjC,0BAA0B,EAC1B,gBAAgB,GACjB,EAAE,2BAA2B,EAO7B;IAED;;;;;OAKG;YACW,mCAAmC;IAiBjD,OAAO,CAAC,gBAAgB;IAIlB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGnD;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkC/E;IAED;;;;OAIG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+C/F;IAED;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkG3F;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC/D;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B3D;IAED;;;;;OAKG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAc/F;CACF"}
1
+ {"version":3,"file":"PipelineService.d.ts","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAEV,QAAQ,EAIT,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAQ3D,OAAO,KAAK,EACV,iCAAiC,EACjC,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAc5D,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,WAAW,EAAE,WAAW,CAAA;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;OAIG;IACH,iCAAiC,CAAC,EAAE,iCAAiC,CAAA;IACrE;;;;;OAKG;IACH,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;CACxD;AA0BD,wDAAwD;AACxD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAmC;IACtF,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAA4B;IACxE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAmB;IAEtD,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,iCAAiC,EACjC,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GAClB,EAAE,2BAA2B,EAQ7B;IAED;;;;;OAKG;YACW,mCAAmC;IAiBjD,OAAO,CAAC,gBAAgB;IAIlB,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGnD;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoC/E;IAED;;;;OAIG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiD/F;IAED;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+G3F;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC/D;IAED;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B3D;IAED;;;;;OAKG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAc/F;CACF"}
@@ -38,13 +38,15 @@ export class PipelineService {
38
38
  observabilityConnectionRepository;
39
39
  pipelineScheduleRepository;
40
40
  pipelineRegistry;
41
- constructor({ workspaceRepository, pipelineRepository, idGenerator, observabilityConnectionRepository, pipelineScheduleRepository, pipelineRegistry, }) {
41
+ agentKindRegistry;
42
+ constructor({ workspaceRepository, pipelineRepository, idGenerator, observabilityConnectionRepository, pipelineScheduleRepository, pipelineRegistry, agentKindRegistry, }) {
42
43
  this.workspaceRepository = workspaceRepository;
43
44
  this.pipelineRepository = pipelineRepository;
44
45
  this.idGenerator = idGenerator;
45
46
  this.observabilityConnectionRepository = observabilityConnectionRepository;
46
47
  this.pipelineScheduleRepository = pipelineScheduleRepository;
47
48
  this.pipelineRegistry = pipelineRegistry;
49
+ this.agentKindRegistry = agentKindRegistry;
48
50
  }
49
51
  /**
50
52
  * The post-release-health gate is only meaningful with an observability integration, so
@@ -74,9 +76,11 @@ export class PipelineService {
74
76
  validatePipelineShape({
75
77
  agentKinds: input.agentKinds,
76
78
  enabled: input.enabled,
79
+ gates: input.gates,
77
80
  gating: input.gating,
78
81
  testerQuality: input.testerQuality,
79
82
  stepOptions: input.stepOptions,
83
+ agentKindRegistry: this.agentKindRegistry,
80
84
  });
81
85
  // Launch-constraint validation (no origin — a save, not a launch): a `bug-intake` step
82
86
  // requires a recurring pipeline. `availability` absent ⇒ `'both'` (unrestricted). Evaluated
@@ -117,9 +121,11 @@ export class PipelineService {
117
121
  validatePipelineShape({
118
122
  agentKinds: source.agentKinds,
119
123
  enabled: source.enabled,
124
+ gates: source.gates,
120
125
  gating: source.gating,
121
126
  testerQuality: source.testerQuality,
122
127
  stepOptions: source.stepOptions,
128
+ agentKindRegistry: this.agentKindRegistry,
123
129
  });
124
130
  // Same launch-constraint guarantee create/update give: a clone preserves the source's
125
131
  // agentKinds + availability, so re-check that the pair is launchable (e.g. a bug-intake step
@@ -169,12 +175,25 @@ export class PipelineService {
169
175
  // while leaving its companion on would orphan the companion, and adding gating (step or
170
176
  // tester-QC) without an estimator is illegal — so validate whenever the chain, enable
171
177
  // flags, gating, OR tester-QC change, not just on a chain replacement.
178
+ //
179
+ // `input.gates` is a trigger too: a human approval gate and an estimate gate on the SAME step
180
+ // is illegal, so adding the approval gate to an already-estimate-gated step invalidates the
181
+ // shape while touching neither the chain nor `gating`.
172
182
  if (input.agentKinds ||
173
183
  input.enabled ||
184
+ input.gates ||
174
185
  input.gating ||
175
186
  input.testerQuality ||
176
187
  input.stepOptions) {
177
- validatePipelineShape({ agentKinds, enabled, gating, testerQuality, stepOptions });
188
+ validatePipelineShape({
189
+ agentKinds,
190
+ enabled,
191
+ gates,
192
+ gating,
193
+ testerQuality,
194
+ stepOptions,
195
+ agentKindRegistry: this.agentKindRegistry,
196
+ });
178
197
  await this.assertObservabilityGatedStepAllowed(workspaceId, agentKinds, enabled);
179
198
  }
180
199
  // Re-check the launch constraint when the chain, the enable mask, or the availability
@@ -1 +1 @@
1
- {"version":3,"file":"PipelineService.js","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelineService.js","sourceRoot":"","sources":["../../../src/modules/pipelines/PipelineService.ts"],"names":[],"mappings":"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"}