codeloop-mcp-server 0.1.47 → 0.1.49
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/auth/critical_floors.d.ts +8 -4
- package/dist/auth/critical_floors.d.ts.map +1 -1
- package/dist/auth/critical_floors.js +16 -16
- package/dist/auth/critical_floors.js.map +1 -1
- package/dist/auth/init_hint_cache.d.ts +35 -0
- package/dist/auth/init_hint_cache.d.ts.map +1 -0
- package/dist/auth/init_hint_cache.js +143 -0
- package/dist/auth/init_hint_cache.js.map +1 -0
- package/dist/evidence/screenshot_diff.d.ts +23 -0
- package/dist/evidence/screenshot_diff.d.ts.map +1 -1
- package/dist/evidence/screenshot_diff.js +46 -13
- package/dist/evidence/screenshot_diff.js.map +1 -1
- package/dist/index.js +484 -32
- package/dist/index.js.map +1 -1
- package/dist/runners/csproj_output_path.d.ts +22 -0
- package/dist/runners/csproj_output_path.d.ts.map +1 -0
- package/dist/runners/csproj_output_path.js +108 -0
- package/dist/runners/csproj_output_path.js.map +1 -0
- package/dist/runners/png_dims.d.ts +20 -0
- package/dist/runners/png_dims.d.ts.map +1 -0
- package/dist/runners/png_dims.js +58 -0
- package/dist/runners/png_dims.js.map +1 -0
- package/dist/runners/window_manager.d.ts +51 -4
- package/dist/runners/window_manager.d.ts.map +1 -1
- package/dist/runners/window_manager.js +348 -9
- package/dist/runners/window_manager.js.map +1 -1
- package/dist/tools/design_compare.d.ts +43 -0
- package/dist/tools/design_compare.d.ts.map +1 -1
- package/dist/tools/design_compare.js +199 -66
- package/dist/tools/design_compare.js.map +1 -1
- package/dist/tools/desktop_app_mode.d.ts +48 -0
- package/dist/tools/desktop_app_mode.d.ts.map +1 -0
- package/dist/tools/desktop_app_mode.js +86 -0
- package/dist/tools/desktop_app_mode.js.map +1 -0
- package/dist/tools/gate_check.js +29 -7
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/self_test.d.ts +40 -0
- package/dist/tools/self_test.d.ts.map +1 -0
- package/dist/tools/self_test.js +205 -0
- package/dist/tools/self_test.js.map +1 -0
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +4 -5
- package/dist/tools/verify.js.map +1 -1
- package/package.json +1 -1
|
@@ -92,6 +92,49 @@ export declare function hasDesignReferences(cwd: string, designsDir?: string): b
|
|
|
92
92
|
* - `designs/desktop/home@1x.png` -> screen=home, viewport=desktop, scale=1
|
|
93
93
|
*/
|
|
94
94
|
export declare function listReferenceFiles(cwd: string, designsDir?: string): ReferenceFile[];
|
|
95
|
+
/**
|
|
96
|
+
* Filename-matching helper extracted so the cross-run resolver can
|
|
97
|
+
* reuse it. The matching is intentionally permissive — every Photometry
|
|
98
|
+
* DB-style "the reference is named `led-photometric-summary.png` but
|
|
99
|
+
* the agent captured `10-led-photometric-data-page_1778895588226.png`"
|
|
100
|
+
* combination should succeed.
|
|
101
|
+
*
|
|
102
|
+
* Match precedence (highest to lowest):
|
|
103
|
+
* 1. Exact (case-insensitive) `<screen>.png`
|
|
104
|
+
* 2. Viewport-tagged `<screen>_<viewport>.png` / `<viewport>_<screen>.png`
|
|
105
|
+
* 3. Prefix `<screen>_*.png` / `<screen>-*.png` (covers timestamped captures)
|
|
106
|
+
* 4. Suffix `*_<screen>.png` / `*-<screen>.png` (covers `01-dashboard.png`)
|
|
107
|
+
* 5. Contains `<screen>` token anywhere in the stem (lenient last resort)
|
|
108
|
+
* 6. Token-overlap fallback: split both sides on `-`/`_`/digits, pick
|
|
109
|
+
* the file with the most token overlap (≥2 shared tokens).
|
|
110
|
+
*/
|
|
111
|
+
/**
|
|
112
|
+
* Match-quality tier reported by `matchScreenshotFile`:
|
|
113
|
+
* - `strong`: exact filename or prefix/suffix match. Always trust.
|
|
114
|
+
* - `weak`: substring or token-overlap match. Trustworthy ONLY when
|
|
115
|
+
* the screenshot lives in the gate's own run dir. When the only
|
|
116
|
+
* `weak` hit is in an older sibling run, the caller treats it as
|
|
117
|
+
* "no screenshot found yet" so we don't compare a fresh reference
|
|
118
|
+
* against an unrelated screen from a previous CRUD test
|
|
119
|
+
* (Photometry-DB E2E 8 — 11+ `led-design-bom-*` references
|
|
120
|
+
* resolved to `10-led-bom_*` in `run_*_deep47663`, scoring 0%
|
|
121
|
+
* because the underlying UI was unrelated).
|
|
122
|
+
*/
|
|
123
|
+
export type MatchQuality = "strong" | "weak";
|
|
124
|
+
/**
|
|
125
|
+
* Recognise the error-message family thrown by pngjs when it can't
|
|
126
|
+
* decode a file that passed the magic-byte sniff. We treat these as
|
|
127
|
+
* "skip — bad PNG" (warning, excluded from gate scoring) rather than
|
|
128
|
+
* "comparison failed = 0% match" (critical, drags the gate down).
|
|
129
|
+
*
|
|
130
|
+
* The Photometry-DB E2E session 8 hit this hard: 13 of 16 design
|
|
131
|
+
* compare failures were `unrecognised content at end of stream` from
|
|
132
|
+
* pngjs on legacy run PNGs. With this classifier those are now
|
|
133
|
+
* downgraded to warnings and the gate sees a 2/3 pass instead of
|
|
134
|
+
* 2/18 (≈11%) — matching the reality that only 3 references were
|
|
135
|
+
* genuine empty-state-vs-populated-state mismatches.
|
|
136
|
+
*/
|
|
137
|
+
export declare function isPngDecodeError(msg: string): boolean;
|
|
95
138
|
/**
|
|
96
139
|
* Single-screen comparison (legacy entry point preserved for the existing
|
|
97
140
|
* `runDesignCompare` MCP tool signature).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design_compare.d.ts","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyB3D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CACrC;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAeD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,cAAc,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EACrE,UAAU,GAAE,MAA4B,GACvC,OAAO,CAKT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EACF;IACE,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH,GACD,IAAI,GACJ,SAAS,GACZ,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAsBjC;AAgBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAA4B,GAAG,OAAO,CA+BlG;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,MAA4B,GAAG,aAAa,EAAE,CAiCzG;
|
|
1
|
+
{"version":3,"file":"design_compare.d.ts","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -205,22 +205,6 @@ function findActualScreenshot(screenshotsDir, screenName, viewport) {
|
|
|
205
205
|
return null;
|
|
206
206
|
return matchScreenshotFile(readable, screenshotsDir, screenName, viewport);
|
|
207
207
|
}
|
|
208
|
-
/**
|
|
209
|
-
* Filename-matching helper extracted so the cross-run resolver can
|
|
210
|
-
* reuse it. The matching is intentionally permissive — every Photometry
|
|
211
|
-
* DB-style "the reference is named `led-photometric-summary.png` but
|
|
212
|
-
* the agent captured `10-led-photometric-data-page_1778895588226.png`"
|
|
213
|
-
* combination should succeed.
|
|
214
|
-
*
|
|
215
|
-
* Match precedence (highest to lowest):
|
|
216
|
-
* 1. Exact (case-insensitive) `<screen>.png`
|
|
217
|
-
* 2. Viewport-tagged `<screen>_<viewport>.png` / `<viewport>_<screen>.png`
|
|
218
|
-
* 3. Prefix `<screen>_*.png` / `<screen>-*.png` (covers timestamped captures)
|
|
219
|
-
* 4. Suffix `*_<screen>.png` / `*-<screen>.png` (covers `01-dashboard.png`)
|
|
220
|
-
* 5. Contains `<screen>` token anywhere in the stem (lenient last resort)
|
|
221
|
-
* 6. Token-overlap fallback: split both sides on `-`/`_`/digits, pick
|
|
222
|
-
* the file with the most token overlap (≥2 shared tokens).
|
|
223
|
-
*/
|
|
224
208
|
function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
225
209
|
const target = screenName.toLowerCase();
|
|
226
210
|
const targetTokens = tokens(target);
|
|
@@ -236,24 +220,24 @@ function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
|
236
220
|
for (const candidate of candidates) {
|
|
237
221
|
const match = files.find((f) => f.toLowerCase() === candidate.toLowerCase());
|
|
238
222
|
if (match)
|
|
239
|
-
return join(screenshotsDir, match);
|
|
223
|
+
return { path: join(screenshotsDir, match), quality: "strong" };
|
|
240
224
|
}
|
|
241
225
|
// (3) prefix.
|
|
242
226
|
let m = files.find((f) => f.toLowerCase().startsWith(target + "_") || f.toLowerCase().startsWith(target + "-"));
|
|
243
227
|
if (m)
|
|
244
|
-
return join(screenshotsDir, m);
|
|
228
|
+
return { path: join(screenshotsDir, m), quality: "strong" };
|
|
245
229
|
// (4) suffix.
|
|
246
230
|
m = files.find((f) => {
|
|
247
231
|
const stem = f.toLowerCase().replace(/\.png$/, "");
|
|
248
232
|
return stem.endsWith("_" + target) || stem.endsWith("-" + target);
|
|
249
233
|
});
|
|
250
234
|
if (m)
|
|
251
|
-
return join(screenshotsDir, m);
|
|
235
|
+
return { path: join(screenshotsDir, m), quality: "strong" };
|
|
252
236
|
// (5) "contains the target token anywhere" — handles
|
|
253
237
|
// `10-led-photometric-data-page_<ts>.png` matching screen `photometric-data`.
|
|
254
238
|
m = files.find((f) => f.toLowerCase().includes(target));
|
|
255
239
|
if (m)
|
|
256
|
-
return join(screenshotsDir, m);
|
|
240
|
+
return { path: join(screenshotsDir, m), quality: "weak" };
|
|
257
241
|
// (6) Token overlap. Pick the file whose stem shares the most tokens
|
|
258
242
|
// with the reference name (alphabetic tokens ≥ 3 chars). Require at
|
|
259
243
|
// least 2 shared tokens to avoid false positives.
|
|
@@ -271,7 +255,7 @@ function matchScreenshotFile(files, screenshotsDir, screenName, viewport) {
|
|
|
271
255
|
}
|
|
272
256
|
}
|
|
273
257
|
if (bestFile && bestOverlap >= 2)
|
|
274
|
-
return join(screenshotsDir, bestFile);
|
|
258
|
+
return { path: join(screenshotsDir, bestFile), quality: "weak" };
|
|
275
259
|
return null;
|
|
276
260
|
}
|
|
277
261
|
/** Tokeniser used by the lenient matcher. Splits on non-alphanumerics
|
|
@@ -340,6 +324,54 @@ function isReadablePng(filePath) {
|
|
|
340
324
|
return false;
|
|
341
325
|
}
|
|
342
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Recognise the error-message family thrown by pngjs when it can't
|
|
329
|
+
* decode a file that passed the magic-byte sniff. We treat these as
|
|
330
|
+
* "skip — bad PNG" (warning, excluded from gate scoring) rather than
|
|
331
|
+
* "comparison failed = 0% match" (critical, drags the gate down).
|
|
332
|
+
*
|
|
333
|
+
* The Photometry-DB E2E session 8 hit this hard: 13 of 16 design
|
|
334
|
+
* compare failures were `unrecognised content at end of stream` from
|
|
335
|
+
* pngjs on legacy run PNGs. With this classifier those are now
|
|
336
|
+
* downgraded to warnings and the gate sees a 2/3 pass instead of
|
|
337
|
+
* 2/18 (≈11%) — matching the reality that only 3 references were
|
|
338
|
+
* genuine empty-state-vs-populated-state mismatches.
|
|
339
|
+
*/
|
|
340
|
+
export function isPngDecodeError(msg) {
|
|
341
|
+
if (!msg)
|
|
342
|
+
return false;
|
|
343
|
+
const m = msg.toLowerCase();
|
|
344
|
+
// 0.1.49: readPng() now wraps every pngjs throw in
|
|
345
|
+
// PngDecodeError("PNG decode failed for <path>: <inner>"). Catching
|
|
346
|
+
// that prefix is the catch-all the plan calls for — any future
|
|
347
|
+
// pngjs error message (truncated IDAT, malformed IHDR, bad CRC,
|
|
348
|
+
// EOF-mid-chunk, etc.) is classified as a skip without us having
|
|
349
|
+
// to enumerate every wording.
|
|
350
|
+
if (m.startsWith("png decode failed for "))
|
|
351
|
+
return true;
|
|
352
|
+
return (m.includes("unrecognised content at end of stream") ||
|
|
353
|
+
m.includes("unrecognized content at end of stream") ||
|
|
354
|
+
m.includes("invalid file signature") ||
|
|
355
|
+
m.includes("crc mismatch") ||
|
|
356
|
+
m.includes("crc error") ||
|
|
357
|
+
m.includes("unsupported color type") ||
|
|
358
|
+
m.includes("not enough data") ||
|
|
359
|
+
m.includes("unexpected end of input") ||
|
|
360
|
+
m.includes("unexpected end of file") ||
|
|
361
|
+
m.includes("invalid chunk length") ||
|
|
362
|
+
m.includes("eof while reading chunk") ||
|
|
363
|
+
// pngjs's "End of stream" variants
|
|
364
|
+
m.includes("end of stream") ||
|
|
365
|
+
// pngjs's IHDR / chunk-validation throws
|
|
366
|
+
m.includes("invalid ihdr") ||
|
|
367
|
+
m.includes("invalid filter type") ||
|
|
368
|
+
m.includes("unrecognised chunk type") ||
|
|
369
|
+
m.includes("unrecognized chunk type") ||
|
|
370
|
+
m.includes("chunk length") ||
|
|
371
|
+
// node fs / sharp variants
|
|
372
|
+
m.includes("unsupported image format") ||
|
|
373
|
+
m.includes("input buffer contains unsupported image format"));
|
|
374
|
+
}
|
|
343
375
|
function openSyncSafe(p) {
|
|
344
376
|
try {
|
|
345
377
|
return openSync(p, "r");
|
|
@@ -370,33 +402,49 @@ function findActualScreenshotAcrossRuns(cwd, screenName, viewport, preferRunId)
|
|
|
370
402
|
const ordered = preferRunId
|
|
371
403
|
? [preferRunId, ...runs.filter((r) => r !== preferRunId)]
|
|
372
404
|
: runs;
|
|
373
|
-
for
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
405
|
+
// Two-pass: first look for STRONG matches across all runs (exact /
|
|
406
|
+
// prefix / suffix). Only fall back to WEAK matches (substring /
|
|
407
|
+
// token-overlap) if no strong match exists anywhere. This prevents
|
|
408
|
+
// the Photometry-DB E2E 8 failure mode where a weak token-overlap
|
|
409
|
+
// match in an older run (e.g. `10-led-bom_*` matching
|
|
410
|
+
// `led-design-bom-add-component`) shadowed the gate's own fresh
|
|
411
|
+
// capture or — when no fresh capture existed — drove a meaningless
|
|
412
|
+
// pixel-diff against an unrelated screen.
|
|
413
|
+
let weakHit = null;
|
|
414
|
+
for (const pass of ["strong", "weak"]) {
|
|
415
|
+
for (const runId of ordered) {
|
|
416
|
+
const dir = join(getRunDir(runId, base), "screenshots");
|
|
417
|
+
if (!existsSync(dir))
|
|
418
|
+
continue;
|
|
419
|
+
let files;
|
|
420
|
+
try {
|
|
421
|
+
files = readdirSync(dir).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (files.length === 0)
|
|
427
|
+
continue;
|
|
428
|
+
const readableFiles = files.filter((f) => isReadablePng(join(dir, f)));
|
|
429
|
+
if (readableFiles.length === 0)
|
|
430
|
+
continue;
|
|
431
|
+
const m = matchScreenshotFile(readableFiles, dir, screenName, viewport);
|
|
432
|
+
if (!m)
|
|
433
|
+
continue;
|
|
434
|
+
if (pass === "strong" && m.quality === "strong") {
|
|
435
|
+
return { path: m.path, runId, quality: "strong" };
|
|
436
|
+
}
|
|
437
|
+
if (pass === "weak" && m.quality === "weak" && !weakHit) {
|
|
438
|
+
weakHit = { path: m.path, runId, quality: "weak" };
|
|
439
|
+
}
|
|
380
440
|
}
|
|
381
|
-
|
|
382
|
-
|
|
441
|
+
if (pass === "strong" && weakHit) {
|
|
442
|
+
// strong-pass was exhausted with no hit; keep the first weak
|
|
443
|
+
// hit we saw (newest-first ordering preserved by `ordered`).
|
|
444
|
+
return weakHit;
|
|
383
445
|
}
|
|
384
|
-
if (files.length === 0)
|
|
385
|
-
continue;
|
|
386
|
-
// Drop unreadable PNGs (zero-byte, truncated, wrong magic). If a
|
|
387
|
-
// run only has corrupt copies of this screen, fall through to the
|
|
388
|
-
// next run instead of locking a dud in. Without this filter, a
|
|
389
|
-
// single half-written file in an older run was poisoning the
|
|
390
|
-
// entire design-compare pass for every reference that resolved to
|
|
391
|
-
// that run dir.
|
|
392
|
-
const readableFiles = files.filter((f) => isReadablePng(join(dir, f)));
|
|
393
|
-
if (readableFiles.length === 0)
|
|
394
|
-
continue;
|
|
395
|
-
const m = matchScreenshotFile(readableFiles, dir, screenName, viewport);
|
|
396
|
-
if (m)
|
|
397
|
-
return { path: m, runId };
|
|
398
446
|
}
|
|
399
|
-
return
|
|
447
|
+
return weakHit;
|
|
400
448
|
}
|
|
401
449
|
/**
|
|
402
450
|
* Resolve which run directory to source actual screenshots from.
|
|
@@ -417,24 +465,38 @@ function bestRunDir(cwd, explicitRunId) {
|
|
|
417
465
|
return null;
|
|
418
466
|
}
|
|
419
467
|
const runs = listRuns(base);
|
|
420
|
-
|
|
468
|
+
// Photometry-DB E2E 8: if the newest run (the "gate run" the agent
|
|
469
|
+
// just created via codeloop_verify) is empty, bestRunDir used to
|
|
470
|
+
// silently fall back to an older sibling run with PNGs — and then
|
|
471
|
+
// every cross-run match looked legitimately in-run, defeating the
|
|
472
|
+
// weak-match downgrade. Now we tag the fallback so the main loop
|
|
473
|
+
// can apply stricter rules.
|
|
474
|
+
if (runs.length === 0)
|
|
475
|
+
return null;
|
|
476
|
+
const newestRunId = runs[0];
|
|
477
|
+
const newestDir = getRunDir(newestRunId, base);
|
|
478
|
+
const newestScreens = join(newestDir, "screenshots");
|
|
479
|
+
if (existsSync(newestScreens)) {
|
|
480
|
+
try {
|
|
481
|
+
const files = readdirSync(newestScreens).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
482
|
+
if (files.length > 0)
|
|
483
|
+
return { runId: newestRunId, dir: newestDir };
|
|
484
|
+
}
|
|
485
|
+
catch { /* skip */ }
|
|
486
|
+
}
|
|
487
|
+
for (const runId of runs.slice(1)) {
|
|
421
488
|
const dir = getRunDir(runId, base);
|
|
422
489
|
const screenshotsDir = join(dir, "screenshots");
|
|
423
490
|
if (existsSync(screenshotsDir)) {
|
|
424
491
|
try {
|
|
425
492
|
const files = readdirSync(screenshotsDir).filter((f) => f.toLowerCase().endsWith(".png"));
|
|
426
493
|
if (files.length > 0)
|
|
427
|
-
return { runId, dir };
|
|
428
|
-
}
|
|
429
|
-
catch {
|
|
430
|
-
/* skip */
|
|
494
|
+
return { runId, dir, isFallback: true };
|
|
431
495
|
}
|
|
496
|
+
catch { /* skip */ }
|
|
432
497
|
}
|
|
433
498
|
}
|
|
434
|
-
|
|
435
|
-
return { runId: runs[0], dir: getRunDir(runs[0], base) };
|
|
436
|
-
}
|
|
437
|
-
return null;
|
|
499
|
+
return { runId: newestRunId, dir: newestDir, isFallback: true };
|
|
438
500
|
}
|
|
439
501
|
/**
|
|
440
502
|
* Single-screen comparison (legacy entry point preserved for the existing
|
|
@@ -458,12 +520,18 @@ export async function runDesignCompare(input, config, cwd = process.cwd()) {
|
|
|
458
520
|
: "No verification runs found; cannot locate an actual screenshot.", "Run codeloop_verify (or codeloop_capture_screenshot) for this run first.", refPath);
|
|
459
521
|
}
|
|
460
522
|
const screenshotsDir = join(run.dir, "screenshots");
|
|
461
|
-
|
|
523
|
+
const own = findActualScreenshot(screenshotsDir, input.screen_name);
|
|
524
|
+
let actualPath = own?.path ?? null;
|
|
462
525
|
let sourceRunIdSingle;
|
|
463
526
|
if (!actualPath) {
|
|
464
527
|
// Cross-run fallback (mirrors the multi-screen `all` mode path).
|
|
465
528
|
const cross = findActualScreenshotAcrossRuns(cwd, input.screen_name, undefined, run.runId);
|
|
466
529
|
if (cross) {
|
|
530
|
+
// In single-mode the caller asked for a specific screen name —
|
|
531
|
+
// we trust the cross-run match even when it's `weak`, because
|
|
532
|
+
// the user is explicitly directing the comparison. The `all`
|
|
533
|
+
// mode is stricter (auto-discovered references shouldn't be
|
|
534
|
+
// compared against unrelated screens from old runs).
|
|
467
535
|
actualPath = cross.path;
|
|
468
536
|
if (cross.runId !== run.runId)
|
|
469
537
|
sourceRunIdSingle = cross.runId;
|
|
@@ -607,7 +675,9 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
607
675
|
mkdirSync(diffsDir, { recursive: true });
|
|
608
676
|
const perScreen = [];
|
|
609
677
|
for (const ref of refs) {
|
|
610
|
-
|
|
678
|
+
const own = findActualScreenshot(screenshotsDir, ref.screenName, ref.viewport);
|
|
679
|
+
let actualPath = own?.path ?? null;
|
|
680
|
+
let matchQuality = own?.quality ?? null;
|
|
611
681
|
let sourceRunId;
|
|
612
682
|
if (!actualPath) {
|
|
613
683
|
// Cross-run fallback. The Photometry DB E2E recorded screenshots
|
|
@@ -617,10 +687,31 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
617
687
|
const cross = findActualScreenshotAcrossRuns(cwd, ref.screenName, ref.viewport, run.runId);
|
|
618
688
|
if (cross) {
|
|
619
689
|
actualPath = cross.path;
|
|
690
|
+
matchQuality = cross.quality;
|
|
620
691
|
if (cross.runId !== run.runId)
|
|
621
692
|
sourceRunId = cross.runId;
|
|
622
693
|
}
|
|
623
694
|
}
|
|
695
|
+
// Downgrade weak matches to "no screenshot found yet" when the
|
|
696
|
+
// match doesn't live in the agent's actual gate run.
|
|
697
|
+
// Photometry-DB E2E 8 regression: lenient substring /
|
|
698
|
+
// token-overlap matches like `10-led-bom_*` resolving for
|
|
699
|
+
// `led-design-bom-add-component` from an unrelated old run
|
|
700
|
+
// drove a 0% pixel-diff and a critical-severity gate failure on
|
|
701
|
+
// what's actually a "you haven't captured this screen yet"
|
|
702
|
+
// situation. Two distinct sub-cases:
|
|
703
|
+
// (a) sourceRunId set → match came from a cross-run fallback
|
|
704
|
+
// inside a sibling run. Refuse.
|
|
705
|
+
// (b) bestRunDir itself fell back to a sibling run because the
|
|
706
|
+
// gate's own run was empty (run.isFallback=true). Same
|
|
707
|
+
// refusal — the agent expects design_compare to ground
|
|
708
|
+
// against the run it just created, not a stale sibling.
|
|
709
|
+
const weakInForeignRun = actualPath && matchQuality === "weak" && (sourceRunId || run.isFallback);
|
|
710
|
+
if (weakInForeignRun) {
|
|
711
|
+
actualPath = null;
|
|
712
|
+
sourceRunId = undefined;
|
|
713
|
+
matchQuality = null;
|
|
714
|
+
}
|
|
624
715
|
if (!actualPath) {
|
|
625
716
|
perScreen.push({
|
|
626
717
|
screen_name: ref.screenName,
|
|
@@ -641,6 +732,7 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
641
732
|
let matchScore = 0;
|
|
642
733
|
let diffOk;
|
|
643
734
|
let reason;
|
|
735
|
+
let skipped = false;
|
|
644
736
|
try {
|
|
645
737
|
const diffResult = compareScreenshot(actualPath, ref.path, diffPath, undefined, cwd);
|
|
646
738
|
matchScore = 1 - diffResult.diffScore;
|
|
@@ -650,9 +742,27 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
650
742
|
catch (err) {
|
|
651
743
|
matchScore = 0;
|
|
652
744
|
diffOk = undefined;
|
|
653
|
-
|
|
745
|
+
const errMsg = err.message || String(err);
|
|
746
|
+
// Photometry-DB regression (E2E 8): 13 of 16 design_compare
|
|
747
|
+
// failures were `unrecognised content at end of stream` thrown
|
|
748
|
+
// by pngjs on legacy run PNGs that had passed the magic-byte
|
|
749
|
+
// sniff but were missing/corrupt at the IEND chunk. Treating
|
|
750
|
+
// those as match_score=0 dragged the gate from a realistic 94%+
|
|
751
|
+
// down to 78% even though no real visual regression existed.
|
|
752
|
+
// Detect the family of pngjs decode errors and mark the screen
|
|
753
|
+
// as SKIPPED (not failed) — excluded from min_score / avg_score
|
|
754
|
+
// / failed_screens, severity downgraded to "low", and the
|
|
755
|
+
// agent's next action is "re-capture or clean up legacy
|
|
756
|
+
// artifacts" rather than "fix the visual diff".
|
|
757
|
+
if (isPngDecodeError(errMsg)) {
|
|
758
|
+
skipped = true;
|
|
759
|
+
reason = `Skipped — corrupt or truncated PNG (${errMsg}). Re-capture with codeloop_capture_screenshot screen_name="${ref.screenName}"${ref.viewport ? ` and copy/rename to match the reference filename` : ""}, or delete the bad legacy file under artifacts/runs/ to remove it from the cross-run fallback search.`;
|
|
760
|
+
}
|
|
761
|
+
else {
|
|
762
|
+
reason = `Comparison error: ${errMsg}`;
|
|
763
|
+
}
|
|
654
764
|
}
|
|
655
|
-
const passed = matchScore >= threshold;
|
|
765
|
+
const passed = skipped ? true : matchScore >= threshold;
|
|
656
766
|
perScreen.push({
|
|
657
767
|
screen_name: ref.screenName,
|
|
658
768
|
viewport: ref.viewport,
|
|
@@ -661,18 +771,29 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
661
771
|
diff_path: diffOk,
|
|
662
772
|
match_score: matchScore,
|
|
663
773
|
passed,
|
|
664
|
-
|
|
774
|
+
skipped: skipped || undefined,
|
|
775
|
+
// Skipped screens are always severity="low" — they're a
|
|
776
|
+
// hygiene problem (corrupt cached PNG), not a visual
|
|
777
|
+
// regression, so the gate shouldn't surface them as critical.
|
|
778
|
+
severity: skipped ? "low" : severityFromScore(matchScore, threshold),
|
|
665
779
|
reason: sourceRunId
|
|
666
780
|
? `${reason} (actual loaded from run ${sourceRunId} — different from gate run ${run.runId}; copy the screenshot forward if you want it scoped to the gate run.)`
|
|
667
781
|
: reason,
|
|
668
782
|
});
|
|
669
783
|
}
|
|
670
|
-
// 4. Aggregate.
|
|
671
|
-
|
|
784
|
+
// 4. Aggregate. Skipped screens (corrupt-PNG decode failures) are
|
|
785
|
+
// excluded from min_score / avg_score / failed_screens — they're
|
|
786
|
+
// not real regressions, they're hygiene problems with legacy run
|
|
787
|
+
// artifacts. They still appear in per_screen[] with skipped:true
|
|
788
|
+
// and a "Skipped — corrupt PNG" reason so the agent knows to
|
|
789
|
+
// re-capture or clean them up, but they don't poison the gate.
|
|
790
|
+
const scored = perScreen.filter((p) => !p.skipped);
|
|
791
|
+
const scores = scored.map((p) => p.match_score);
|
|
672
792
|
const minScore = scores.length ? Math.min(...scores) : 0;
|
|
673
793
|
const avgScore = scores.length ? scores.reduce((s, v) => s + v, 0) / scores.length : 0;
|
|
674
|
-
const failedScreens =
|
|
675
|
-
const
|
|
794
|
+
const failedScreens = scored.filter((p) => !p.passed).map((p) => p.screen_name);
|
|
795
|
+
const skippedScreens = perScreen.filter((p) => p.skipped).map((p) => p.screen_name);
|
|
796
|
+
const allPassed = failedScreens.length === 0 && scored.length > 0;
|
|
676
797
|
// 5. Persist summary for gate_check.
|
|
677
798
|
const summaryPath = join(run.dir, "design_compare_summary.json");
|
|
678
799
|
writeFileSync(summaryPath, JSON.stringify({
|
|
@@ -681,16 +802,28 @@ export async function runDesignCompareAll(input, config, cwd = process.cwd()) {
|
|
|
681
802
|
min_score: minScore,
|
|
682
803
|
avg_score: avgScore,
|
|
683
804
|
failed_screens: failedScreens,
|
|
805
|
+
skipped_screens: skippedScreens.length ? skippedScreens : undefined,
|
|
684
806
|
source,
|
|
685
807
|
generated_at: new Date().toISOString(),
|
|
686
808
|
figma_errors: figmaErrors.length ? figmaErrors : undefined,
|
|
687
809
|
}, null, 2));
|
|
688
810
|
// 6. Pick representative images for the MCP response (prefer worst failure).
|
|
689
|
-
|
|
811
|
+
// Skipped screens are pushed to the bottom so the lead image is a
|
|
812
|
+
// real visual diff, not a corrupt-PNG placeholder.
|
|
813
|
+
const sorted = [...perScreen].sort((a, b) => {
|
|
814
|
+
if (a.skipped && !b.skipped)
|
|
815
|
+
return 1;
|
|
816
|
+
if (!a.skipped && b.skipped)
|
|
817
|
+
return -1;
|
|
818
|
+
return a.match_score - b.match_score;
|
|
819
|
+
});
|
|
690
820
|
const lead = sorted[0] || perScreen[0];
|
|
821
|
+
const skipNote = skippedScreens.length > 0
|
|
822
|
+
? ` (${skippedScreens.length} screen(s) skipped due to corrupt/truncated PNG — re-capture or delete the bad files under artifacts/runs/: ${skippedScreens.slice(0, 3).join(", ")}${skippedScreens.length > 3 ? "…" : ""})`
|
|
823
|
+
: "";
|
|
691
824
|
const recommendation = allPassed
|
|
692
|
-
? `All ${
|
|
693
|
-
: `${failedScreens.length}/${
|
|
825
|
+
? `All ${scored.length} scored screen(s) match designs at or above ${(threshold * 100).toFixed(0)}% threshold (min: ${(minScore * 100).toFixed(1)}%).${skipNote}`
|
|
826
|
+
: `${failedScreens.length}/${scored.length} screen(s) below threshold ${(threshold * 100).toFixed(0)}%. Worst: "${lead.screen_name}" at ${(lead.match_score * 100).toFixed(1)}%. Fix and re-run codeloop_verify before gate_check.${skipNote}`;
|
|
694
827
|
const uxChecklist = readUxChecklist(input.ux_checklist_path, cwd);
|
|
695
828
|
return {
|
|
696
829
|
output: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design_compare.js","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design_compare.js","sourceRoot":"","sources":["../../src/tools/design_compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single canonical predicate: "is this project type one where a
|
|
3
|
+
* full-screen / no-app_name screenshot is NEVER legitimate evidence,
|
|
4
|
+
* so captureScreenshot should refuse to fall back to PrimaryScreen?"
|
|
5
|
+
*
|
|
6
|
+
* Why this lives in its own module
|
|
7
|
+
* --------------------------------
|
|
8
|
+
* Pre-0.1.49 the answer was hard-coded TWICE — once inline in
|
|
9
|
+
* `index.ts` (the codeloop_capture_screenshot handler) and once inline
|
|
10
|
+
* in `tools/verify.ts` (the auto-capture branch). Both copies only
|
|
11
|
+
* checked `dotnet | xcode | android`. That meant Electron / Tauri /
|
|
12
|
+
* React Native / Flutter desktop projects — all of which are real
|
|
13
|
+
* windowed apps — silently ran the no-appName screenshot branch and
|
|
14
|
+
* captured the user's IDE as "evidence of the app under test", which
|
|
15
|
+
* is the exact bug we shipped 0.1.46 to kill.
|
|
16
|
+
*
|
|
17
|
+
* Pulling the predicate into one place makes it impossible for the
|
|
18
|
+
* two call sites to drift again, and lets us extend the coverage
|
|
19
|
+
* without touching every consumer.
|
|
20
|
+
*
|
|
21
|
+
* What counts as a desktop / native UI app
|
|
22
|
+
* ----------------------------------------
|
|
23
|
+
* - dotnet platform with detected desktop framework
|
|
24
|
+
* (WPF / WinForms / MAUI / Avalonia / WinUI / UWP), but NOT a
|
|
25
|
+
* Blazor-only project — Blazor renders in a browser, so a
|
|
26
|
+
* fullscreen capture against a headed Playwright browser remains
|
|
27
|
+
* legitimate evidence.
|
|
28
|
+
* - xcode (iOS Simulator or native macOS)
|
|
29
|
+
* - android (Android emulator or device)
|
|
30
|
+
* - node platform with detectNodeUI hit (Electron, Tauri, React
|
|
31
|
+
* Native / Expo). All three are real windowed / on-device apps.
|
|
32
|
+
* - flutter platform when desktop sub-targets exist (windows/
|
|
33
|
+
* macos/ linux/ folders sibling to lib/main.dart). Flutter web /
|
|
34
|
+
* mobile-only projects fall through (mobile is covered by the
|
|
35
|
+
* android / xcode branches, web by the standard fullscreen
|
|
36
|
+
* fallback).
|
|
37
|
+
*
|
|
38
|
+
* What does NOT count
|
|
39
|
+
* -------------------
|
|
40
|
+
* - web / Next / React / Vue / Svelte / Angular (browser-rendered;
|
|
41
|
+
* fullscreen Playwright capture is fine)
|
|
42
|
+
* - Blazor Server / Blazor WASM (browser-rendered)
|
|
43
|
+
* - dotnet console / library / unit-test projects (no UI)
|
|
44
|
+
* - bare node backend (no UI)
|
|
45
|
+
* - flutter web-only (browser-rendered)
|
|
46
|
+
*/
|
|
47
|
+
export declare function isDesktopAppProject(cwd: string): boolean;
|
|
48
|
+
//# sourceMappingURL=desktop_app_mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop_app_mode.d.ts","sourceRoot":"","sources":["../../src/tools/desktop_app_mode.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsCxD"}
|