@cat-factory/orchestration 0.238.0 → 0.240.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.
- package/dist/container/modules.d.ts.map +1 -1
- package/dist/container/modules.js +5 -0
- package/dist/container/modules.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/execution/ExecutionService.d.ts.map +1 -1
- package/dist/modules/execution/ExecutionService.js +2 -1
- package/dist/modules/execution/ExecutionService.js.map +1 -1
- package/dist/modules/execution/VisualConfirmationController.d.ts +20 -4
- package/dist/modules/execution/VisualConfirmationController.d.ts.map +1 -1
- package/dist/modules/execution/VisualConfirmationController.js +77 -15
- package/dist/modules/execution/VisualConfirmationController.js.map +1 -1
- package/dist/modules/execution/drive.d.ts +28 -0
- package/dist/modules/execution/drive.d.ts.map +1 -1
- package/dist/modules/execution/drive.js +53 -3
- package/dist/modules/execution/drive.js.map +1 -1
- package/dist/modules/execution/gate-window-controllers.d.ts +2 -0
- package/dist/modules/execution/gate-window-controllers.d.ts.map +1 -1
- package/dist/modules/execution/gate-window-controllers.js +2 -1
- package/dist/modules/execution/gate-window-controllers.js.map +1 -1
- package/dist/modules/execution/visual-confirm-design-references.d.ts +85 -0
- package/dist/modules/execution/visual-confirm-design-references.d.ts.map +1 -0
- package/dist/modules/execution/visual-confirm-design-references.js +229 -0
- package/dist/modules/execution/visual-confirm-design-references.js.map +1 -0
- package/package.json +11 -11
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { isDesignSource } from '@cat-factory/contracts';
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// The visual-confirmation gate's DESIGN-ORIGIN reference half: the rendered frames an import
|
|
4
|
+
// retained for the designs a task links, folded into the gate's gallery beside the images a
|
|
5
|
+
// person uploaded by hand.
|
|
6
|
+
//
|
|
7
|
+
// Its own module rather than more methods on `VisualConfirmationController` because the fold is
|
|
8
|
+
// pure and the interesting part: which frame wins a view, what a name collision across two
|
|
9
|
+
// designs means, and which of five ways a design can contribute nothing the reviewer is looking
|
|
10
|
+
// at. The controller keeps the one impure step (two reads) and hands the rest here.
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* How many design-rendered views one gallery may carry, across every design a task links.
|
|
14
|
+
*
|
|
15
|
+
* A per-document render cap already bounds each design (Figma rasterises the first frames of a
|
|
16
|
+
* file, not all of them), and this bounds their SUM: a task linking four designs would otherwise
|
|
17
|
+
* push a couple of captured screenshots off the bottom of a page of mocks nobody asked to review
|
|
18
|
+
* here. Whatever it excludes is COUNTED and stated, never quietly trimmed.
|
|
19
|
+
*/
|
|
20
|
+
export const MAX_DESIGN_REFERENCE_VIEWS = 12;
|
|
21
|
+
/**
|
|
22
|
+
* Why a linked design contributed less than its whole set of frames, or null when it contributed
|
|
23
|
+
* everything it has.
|
|
24
|
+
*
|
|
25
|
+
* Reads the stored `renderStatus` AND what the artifact store actually holds, because the two can
|
|
26
|
+
* disagree in the one direction that matters: a row CLAIMING retention over an empty shelf (an
|
|
27
|
+
* account that re-pointed its blob backend, a reclaim that outran its re-import) would otherwise
|
|
28
|
+
* describe a gallery that is not there. `partial` is such a claim just as `stored` is, and left to
|
|
29
|
+
* speak for itself it tells the reviewer "only part of its frames were retained" above nothing at
|
|
30
|
+
* all, which reads as a design that is merely short rather than one that is absent, and sends them
|
|
31
|
+
* looking for the frames that did survive.
|
|
32
|
+
*
|
|
33
|
+
* So the two claiming statuses are checked against what is held, and the three that already say
|
|
34
|
+
* nothing was kept (`failed` / `none` / `storage_unavailable`) stand as they are: each names a
|
|
35
|
+
* DIFFERENT cause of the same empty shelf, and collapsing them would throw the cause away.
|
|
36
|
+
*/
|
|
37
|
+
export function designGapReason(renderStatus, heldImages) {
|
|
38
|
+
switch (renderStatus) {
|
|
39
|
+
case 'stored':
|
|
40
|
+
return heldImages > 0 ? null : 'not_retained';
|
|
41
|
+
case 'partial':
|
|
42
|
+
return heldImages > 0 ? 'partial' : 'not_retained';
|
|
43
|
+
case 'failed':
|
|
44
|
+
return 'failed';
|
|
45
|
+
case 'none':
|
|
46
|
+
return 'none';
|
|
47
|
+
case 'storage_unavailable':
|
|
48
|
+
return 'storage_unavailable';
|
|
49
|
+
case null:
|
|
50
|
+
// No render outcome was ever recorded for this document. Two causes the gate cannot tell
|
|
51
|
+
// apart (a source that rasterises nothing, a document imported before renders were kept),
|
|
52
|
+
// and one answer covers both honestly; a re-import is what distinguishes them.
|
|
53
|
+
return heldImages > 0 ? null : 'not_retained';
|
|
54
|
+
default:
|
|
55
|
+
return exhaustiveRenderStatus(renderStatus);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The compile-time totality guard: a new {@link DocumentRenderStatus} member fails the build here
|
|
60
|
+
* rather than silently becoming "this design is complete".
|
|
61
|
+
*/
|
|
62
|
+
function exhaustiveRenderStatus(status) {
|
|
63
|
+
void status;
|
|
64
|
+
return 'not_retained';
|
|
65
|
+
}
|
|
66
|
+
/** The stable key both sides of the join use: a document's own source identity. */
|
|
67
|
+
function documentKey(ref) {
|
|
68
|
+
return `${ref.source}::${ref.externalId}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A per-document display label that is UNIQUE within this fold, used to qualify a view name two
|
|
72
|
+
* designs both claim. Titles alone are not unique (two boards can import files named "Checkout
|
|
73
|
+
* flow"), so a shared title falls back to carrying the source id.
|
|
74
|
+
*/
|
|
75
|
+
function documentLabels(documents) {
|
|
76
|
+
const byTitle = new Map();
|
|
77
|
+
for (const document of documents) {
|
|
78
|
+
byTitle.set(document.title, (byTitle.get(document.title) ?? 0) + 1);
|
|
79
|
+
}
|
|
80
|
+
const labels = new Map();
|
|
81
|
+
for (const document of documents) {
|
|
82
|
+
const shared = (byTitle.get(document.title) ?? 0) > 1;
|
|
83
|
+
labels.set(documentKey(document), shared ? `${document.title} ${document.externalId}` : document.title);
|
|
84
|
+
}
|
|
85
|
+
return labels;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Share a bounded budget of gallery slots across the designs competing for it, one slot at a time
|
|
89
|
+
* in turn, and answer how many each may take.
|
|
90
|
+
*
|
|
91
|
+
* The budget is shared, so how it is SPLIT is a decision, and taking the first `cap` views in read
|
|
92
|
+
* order is the one shape that answers it worst: reads come back oldest-first, so the design linked
|
|
93
|
+
* longest ago fills the gallery and a design linked this morning contributes nothing, its absence
|
|
94
|
+
* indistinguishable to the reviewer from a design with no frames. Round-robin instead: every
|
|
95
|
+
* design is represented before any design gets a second slot, a design with fewer frames than its
|
|
96
|
+
* share leaves the rest to the others, and the split does not move when the links are re-ordered.
|
|
97
|
+
*/
|
|
98
|
+
function allocate(counts, cap) {
|
|
99
|
+
const taken = counts.map(() => 0);
|
|
100
|
+
let remaining = Math.max(0, cap);
|
|
101
|
+
for (let round = 0; remaining > 0; round += 1) {
|
|
102
|
+
let servedThisRound = false;
|
|
103
|
+
for (let i = 0; i < counts.length && remaining > 0; i += 1) {
|
|
104
|
+
if (round >= counts[i])
|
|
105
|
+
continue;
|
|
106
|
+
taken[i] += 1;
|
|
107
|
+
remaining -= 1;
|
|
108
|
+
servedThisRound = true;
|
|
109
|
+
}
|
|
110
|
+
// Nobody had a frame left at this depth, so nobody will at any greater one.
|
|
111
|
+
if (!servedThisRound)
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
return taken;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Fold a task's design documents and their retained renders into the gate's reference set.
|
|
118
|
+
*
|
|
119
|
+
* Four rules, each of which the obvious shape gets wrong:
|
|
120
|
+
*
|
|
121
|
+
* A view name claimed by TWO designs is qualified with its design's label on BOTH sides, never
|
|
122
|
+
* just the second. This is the same rule slice 1 applied to a frame name repeated across pages
|
|
123
|
+
* within one file: leaving the first occurrence bare hands the plain name to whichever document
|
|
124
|
+
* happened to be read first, so re-ordering the links would silently re-point a reviewed view at
|
|
125
|
+
* a different screen. The cost is that neither qualified name matches a screenshot captured as
|
|
126
|
+
* plain "Checkout", which is correct: nothing knows which of two designs that capture is of.
|
|
127
|
+
*
|
|
128
|
+
* Within ONE design, the NEWEST render for a view wins. The artifact reads are ordered oldest
|
|
129
|
+
* first, so a later assignment overriding an earlier one is the rule, not an accident.
|
|
130
|
+
*
|
|
131
|
+
* The cap counts VIEWS, not artifacts, and is applied after the per-view reduction: capping the
|
|
132
|
+
* raw rows first would spend the budget on frames a later revision had already replaced. It is
|
|
133
|
+
* SHARED across the linked designs rather than consumed in read order (see {@link allocate}), and
|
|
134
|
+
* what it cuts is named per design, not just totalled.
|
|
135
|
+
*
|
|
136
|
+
* Emission stays in document order with each design's own frames contiguous: the allocation
|
|
137
|
+
* decides how many slots each design gets, never how the gallery reads.
|
|
138
|
+
*/
|
|
139
|
+
export function foldDesignReferences(documents, artifacts, cap = MAX_DESIGN_REFERENCE_VIEWS) {
|
|
140
|
+
// One entry per document IDENTITY, in first-linked order. A repeated link is one design: counted
|
|
141
|
+
// twice it would take two shares of the budget, state its gap twice, and make its own title look
|
|
142
|
+
// shared to the qualifier below, which would then qualify every one of its views against itself.
|
|
143
|
+
const known = new Map(documents.map((document) => [documentKey(document), document]));
|
|
144
|
+
const unique = [...known.values()];
|
|
145
|
+
const renders = artifacts.filter((record) => record.kind === 'reference' && record.document && known.has(documentKey(record.document)));
|
|
146
|
+
// Which documents claim each raw view name: the collision test the qualification below runs on.
|
|
147
|
+
const claimants = new Map();
|
|
148
|
+
for (const record of renders) {
|
|
149
|
+
const view = record.view;
|
|
150
|
+
if (!view)
|
|
151
|
+
continue;
|
|
152
|
+
const key = documentKey(record.document);
|
|
153
|
+
const held = claimants.get(view);
|
|
154
|
+
if (held)
|
|
155
|
+
held.add(key);
|
|
156
|
+
else
|
|
157
|
+
claimants.set(view, new Set([key]));
|
|
158
|
+
}
|
|
159
|
+
const labels = documentLabels(unique);
|
|
160
|
+
const byDocument = new Map(unique.map((document) => [documentKey(document), new Map()]));
|
|
161
|
+
const heldPerDocument = new Map();
|
|
162
|
+
for (const record of renders) {
|
|
163
|
+
// A render with no view has no pairing key, so it can only ever be shown against nothing.
|
|
164
|
+
// Counted for its document (it IS retained) but not rendered as a pair.
|
|
165
|
+
const key = documentKey(record.document);
|
|
166
|
+
heldPerDocument.set(key, (heldPerDocument.get(key) ?? 0) + 1);
|
|
167
|
+
if (!record.view)
|
|
168
|
+
continue;
|
|
169
|
+
const contested = (claimants.get(record.view)?.size ?? 0) > 1;
|
|
170
|
+
const view = contested ? `${record.view} (${labels.get(key) ?? key})` : record.view;
|
|
171
|
+
byDocument.get(key).set(view, record.id);
|
|
172
|
+
}
|
|
173
|
+
const offered = unique.map((document) => [...byDocument.get(documentKey(document)).entries()]);
|
|
174
|
+
const taken = allocate(offered.map((views) => views.length), cap);
|
|
175
|
+
const references = offered.flatMap((views, index) => views.slice(0, taken[index]).map(([view, artifactId]) => ({ view, artifactId })));
|
|
176
|
+
const gaps = [];
|
|
177
|
+
let dropped = 0;
|
|
178
|
+
unique.forEach((document, index) => {
|
|
179
|
+
const cut = offered[index].length - taken[index];
|
|
180
|
+
dropped += cut;
|
|
181
|
+
const reason = designGapReason(document.renderStatus, heldPerDocument.get(documentKey(document)) ?? 0);
|
|
182
|
+
// The two ways a design falls short are independent, so one entry carries both: a design can
|
|
183
|
+
// be short at its source, short at the gallery ceiling, or both at once.
|
|
184
|
+
if (reason || cut > 0) {
|
|
185
|
+
gaps.push({ title: document.title, reason, ...(cut > 0 ? { dropped: cut } : {}) });
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return {
|
|
189
|
+
references,
|
|
190
|
+
summary: {
|
|
191
|
+
documents: unique.length,
|
|
192
|
+
images: references.length,
|
|
193
|
+
...(dropped > 0 ? { dropped } : {}),
|
|
194
|
+
...(gaps.length ? { gaps } : {}),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Read the task's linked DESIGN documents and their retained renders, then fold them.
|
|
200
|
+
*
|
|
201
|
+
* Returns null when the task links no design at all, which is a different fact from a design that
|
|
202
|
+
* gave nothing: the first has nothing to state and the second is exactly what the summary exists
|
|
203
|
+
* to say. Two reads regardless of how many designs are attached (the batched
|
|
204
|
+
* {@link BinaryArtifactStore.listByDocuments}), because this runs on the driver path of every run
|
|
205
|
+
* whose pipeline carries the gate.
|
|
206
|
+
*
|
|
207
|
+
* The documents are read LIVE at gather time rather than off the run's recorded context, for the
|
|
208
|
+
* same reason the hand-uploaded references are: `recapture` exists so a person can attach a
|
|
209
|
+
* missing reference mid-review and see it, and a design linked while the gate is parked is that
|
|
210
|
+
* same act.
|
|
211
|
+
*/
|
|
212
|
+
export async function resolveDesignReferences(documentRepository, store, workspaceId, blockId) {
|
|
213
|
+
if (!documentRepository || !store)
|
|
214
|
+
return null;
|
|
215
|
+
const linked = await documentRepository.listByBlock(workspaceId, blockId);
|
|
216
|
+
const designs = linked
|
|
217
|
+
.filter((document) => isDesignSource(document.source))
|
|
218
|
+
.map((document) => ({
|
|
219
|
+
source: document.source,
|
|
220
|
+
externalId: document.externalId,
|
|
221
|
+
title: document.title,
|
|
222
|
+
renderStatus: document.renderStatus,
|
|
223
|
+
}));
|
|
224
|
+
if (!designs.length)
|
|
225
|
+
return null;
|
|
226
|
+
const artifacts = await store.listByDocuments(workspaceId, designs.map((document) => ({ source: document.source, externalId: document.externalId })));
|
|
227
|
+
return foldDesignReferences(designs, artifacts);
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=visual-confirm-design-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-confirm-design-references.js","sourceRoot":"","sources":["../../../src/modules/execution/visual-confirm-design-references.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/orchestration",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.240.0",
|
|
4
4
|
"description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,20 +25,20 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^7.0.51",
|
|
28
|
-
"@cat-factory/agents": "0.117.
|
|
29
|
-
"@cat-factory/caching": "0.18.
|
|
30
|
-
"@cat-factory/contracts": "0.
|
|
31
|
-
"@cat-factory/integrations": "0.
|
|
32
|
-
"@cat-factory/kernel": "0.
|
|
33
|
-
"@cat-factory/prompt-fragments": "1.0.
|
|
34
|
-
"@cat-factory/sandbox": "0.11.
|
|
35
|
-
"@cat-factory/spend": "0.15.
|
|
36
|
-
"@cat-factory/workspaces": "0.26.
|
|
28
|
+
"@cat-factory/agents": "0.117.12",
|
|
29
|
+
"@cat-factory/caching": "0.18.13",
|
|
30
|
+
"@cat-factory/contracts": "0.274.0",
|
|
31
|
+
"@cat-factory/integrations": "0.150.0",
|
|
32
|
+
"@cat-factory/kernel": "0.272.0",
|
|
33
|
+
"@cat-factory/prompt-fragments": "1.0.22",
|
|
34
|
+
"@cat-factory/sandbox": "0.11.99",
|
|
35
|
+
"@cat-factory/spend": "0.15.40",
|
|
36
|
+
"@cat-factory/workspaces": "0.26.12"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"typescript": "7.0.2",
|
|
40
40
|
"vitest": "^4.1.10",
|
|
41
|
-
"@cat-factory/sandbox-fixtures": "0.7.
|
|
41
|
+
"@cat-factory/sandbox-fixtures": "0.7.309"
|
|
42
42
|
},
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsc -b tsconfig.build.json",
|