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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { detectPlatform } from "./verify.js";
|
|
4
|
+
import { detectDesktopUI } from "./desktop_detection.js";
|
|
5
|
+
import { detectNodeUI } from "./node_ui_detection.js";
|
|
6
|
+
/**
|
|
7
|
+
* Single canonical predicate: "is this project type one where a
|
|
8
|
+
* full-screen / no-app_name screenshot is NEVER legitimate evidence,
|
|
9
|
+
* so captureScreenshot should refuse to fall back to PrimaryScreen?"
|
|
10
|
+
*
|
|
11
|
+
* Why this lives in its own module
|
|
12
|
+
* --------------------------------
|
|
13
|
+
* Pre-0.1.49 the answer was hard-coded TWICE — once inline in
|
|
14
|
+
* `index.ts` (the codeloop_capture_screenshot handler) and once inline
|
|
15
|
+
* in `tools/verify.ts` (the auto-capture branch). Both copies only
|
|
16
|
+
* checked `dotnet | xcode | android`. That meant Electron / Tauri /
|
|
17
|
+
* React Native / Flutter desktop projects — all of which are real
|
|
18
|
+
* windowed apps — silently ran the no-appName screenshot branch and
|
|
19
|
+
* captured the user's IDE as "evidence of the app under test", which
|
|
20
|
+
* is the exact bug we shipped 0.1.46 to kill.
|
|
21
|
+
*
|
|
22
|
+
* Pulling the predicate into one place makes it impossible for the
|
|
23
|
+
* two call sites to drift again, and lets us extend the coverage
|
|
24
|
+
* without touching every consumer.
|
|
25
|
+
*
|
|
26
|
+
* What counts as a desktop / native UI app
|
|
27
|
+
* ----------------------------------------
|
|
28
|
+
* - dotnet platform with detected desktop framework
|
|
29
|
+
* (WPF / WinForms / MAUI / Avalonia / WinUI / UWP), but NOT a
|
|
30
|
+
* Blazor-only project — Blazor renders in a browser, so a
|
|
31
|
+
* fullscreen capture against a headed Playwright browser remains
|
|
32
|
+
* legitimate evidence.
|
|
33
|
+
* - xcode (iOS Simulator or native macOS)
|
|
34
|
+
* - android (Android emulator or device)
|
|
35
|
+
* - node platform with detectNodeUI hit (Electron, Tauri, React
|
|
36
|
+
* Native / Expo). All three are real windowed / on-device apps.
|
|
37
|
+
* - flutter platform when desktop sub-targets exist (windows/
|
|
38
|
+
* macos/ linux/ folders sibling to lib/main.dart). Flutter web /
|
|
39
|
+
* mobile-only projects fall through (mobile is covered by the
|
|
40
|
+
* android / xcode branches, web by the standard fullscreen
|
|
41
|
+
* fallback).
|
|
42
|
+
*
|
|
43
|
+
* What does NOT count
|
|
44
|
+
* -------------------
|
|
45
|
+
* - web / Next / React / Vue / Svelte / Angular (browser-rendered;
|
|
46
|
+
* fullscreen Playwright capture is fine)
|
|
47
|
+
* - Blazor Server / Blazor WASM (browser-rendered)
|
|
48
|
+
* - dotnet console / library / unit-test projects (no UI)
|
|
49
|
+
* - bare node backend (no UI)
|
|
50
|
+
* - flutter web-only (browser-rendered)
|
|
51
|
+
*/
|
|
52
|
+
export function isDesktopAppProject(cwd) {
|
|
53
|
+
try {
|
|
54
|
+
const platform = detectPlatform(cwd);
|
|
55
|
+
if (platform === "xcode" || platform === "android") {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (platform === "dotnet") {
|
|
59
|
+
const ui = detectDesktopUI(cwd);
|
|
60
|
+
if (!ui.is_desktop_ui)
|
|
61
|
+
return false;
|
|
62
|
+
// Pure Blazor (no other desktop framework) renders in a browser
|
|
63
|
+
// — the fullscreen / Playwright capture path is correct evidence
|
|
64
|
+
// for it, so don't enforce desktopAppMode.
|
|
65
|
+
const hasNonBlazorDesktop = ui.frameworks.some((f) => f !== "blazor");
|
|
66
|
+
return hasNonBlazorDesktop;
|
|
67
|
+
}
|
|
68
|
+
if (platform === "node") {
|
|
69
|
+
return detectNodeUI(cwd).is_node_ui;
|
|
70
|
+
}
|
|
71
|
+
if (platform === "flutter") {
|
|
72
|
+
// Flutter desktop targets ship as sibling folders to lib/.
|
|
73
|
+
// Mobile-only Flutter is covered by the dedicated android / xcode
|
|
74
|
+
// platform branches; web-only Flutter goes through the regular
|
|
75
|
+
// fullscreen fallback.
|
|
76
|
+
return (existsSync(join(cwd, "windows")) ||
|
|
77
|
+
existsSync(join(cwd, "macos")) ||
|
|
78
|
+
existsSync(join(cwd, "linux")));
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=desktop_app_mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desktop_app_mode.js","sourceRoot":"","sources":["../../src/tools/desktop_app_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YACpC,gEAAgE;YAChE,iEAAiE;YACjE,2CAA2C;YAC3C,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;YACtE,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;QACtC,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,2DAA2D;YAC3D,kEAAkE;YAClE,+DAA+D;YAC/D,uBAAuB;YACvB,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAC/B,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/tools/gate_check.js
CHANGED
|
@@ -348,11 +348,31 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
348
348
|
else {
|
|
349
349
|
const failed = summary.failed_screens || [];
|
|
350
350
|
const min = summary.min_score ?? 0;
|
|
351
|
-
|
|
351
|
+
// Skipped screens (corrupt PNG decode) are tracked separately
|
|
352
|
+
// so the gate can stay green when the only "failures" were
|
|
353
|
+
// hygiene problems on legacy artifacts. Counts come from the
|
|
354
|
+
// `skipped: true` flag on per_screen entries (0.1.48+).
|
|
355
|
+
const skippedScreens = summary.per_screen.filter((p) => p.skipped);
|
|
356
|
+
const scoredScreens = summary.per_screen.filter((p) => !p.skipped);
|
|
357
|
+
const skipNote = skippedScreens.length > 0
|
|
358
|
+
? ` (${skippedScreens.length} corrupt-PNG screen(s) skipped — re-capture or delete from artifacts/runs/: ${skippedScreens.slice(0, 3).map((p) => p.screen_name).join(", ")}${skippedScreens.length > 3 ? "…" : ""})`
|
|
359
|
+
: "";
|
|
360
|
+
if (failed.length === 0 && min >= threshold && scoredScreens.length > 0) {
|
|
352
361
|
results.push({
|
|
353
362
|
gate: designGate,
|
|
354
363
|
passed: true,
|
|
355
|
-
reason: `${
|
|
364
|
+
reason: `${scoredScreens.length} screen(s) match designs (min ${(min * 100).toFixed(1)}% >= ${(threshold * 100).toFixed(0)}% threshold).${skipNote}`,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
else if (scoredScreens.length === 0 && skippedScreens.length > 0) {
|
|
368
|
+
// EVERY screen was skipped due to corrupt PNGs — that's a
|
|
369
|
+
// hygiene problem, not a visual regression. Surface it as a
|
|
370
|
+
// gate-fail with a hygiene next_step rather than letting the
|
|
371
|
+
// empty-score situation default to "no per-screen results".
|
|
372
|
+
results.push({
|
|
373
|
+
gate: designGate,
|
|
374
|
+
passed: false,
|
|
375
|
+
reason: `All ${skippedScreens.length} design comparison(s) were skipped due to corrupt/truncated PNGs (sample: ${skippedScreens.slice(0, 3).map((p) => p.screen_name).join(", ")}${skippedScreens.length > 3 ? "…" : ""}). Re-capture the screens with codeloop_capture_screenshot, or delete the bad legacy files under artifacts/runs/, then re-run codeloop_design_compare.`,
|
|
356
376
|
});
|
|
357
377
|
}
|
|
358
378
|
else {
|
|
@@ -373,11 +393,11 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
373
393
|
// whether to (a) call codeloop_capture_screenshot for the
|
|
374
394
|
// missing screens or (b) actually inspect a real visual
|
|
375
395
|
// regression.
|
|
376
|
-
const missingCaptures =
|
|
396
|
+
const missingCaptures = scoredScreens.filter((p) => !p.passed &&
|
|
377
397
|
(!p.actual_path ||
|
|
378
398
|
(typeof p.reason === "string" &&
|
|
379
399
|
p.reason.toLowerCase().startsWith("no screenshot found"))));
|
|
380
|
-
const lowMatches =
|
|
400
|
+
const lowMatches = scoredScreens
|
|
381
401
|
.filter((p) => !p.passed && !missingCaptures.includes(p))
|
|
382
402
|
.sort((a, b) => a.match_score - b.match_score);
|
|
383
403
|
const fmtScreen = (p) => `${p.screen_name}${p.viewport ? `[${p.viewport}]` : ""}`;
|
|
@@ -394,19 +414,21 @@ async function evaluateEvidenceGates(runId, cwd, config) {
|
|
|
394
414
|
.slice(0, 3)
|
|
395
415
|
.map((p) => `${fmtScreen(p)}=${(p.match_score * 100).toFixed(1)}%`)
|
|
396
416
|
.join(", ");
|
|
397
|
-
reasonParts.push(`${lowMatches.length}/${
|
|
417
|
+
reasonParts.push(`${lowMatches.length}/${scoredScreens.length} captured screen(s) below ${(threshold * 100).toFixed(0)}% threshold (worst: ${worst}). Fix the visual regression and re-run codeloop_verify.`);
|
|
398
418
|
}
|
|
399
419
|
if (reasonParts.length === 0) {
|
|
400
420
|
// Safety net: failed_screens was non-empty but neither
|
|
401
421
|
// bucket caught anything. Fall back to the legacy
|
|
402
422
|
// summary so we never emit an empty reason.
|
|
403
|
-
const worst = [...
|
|
423
|
+
const worst = [...scoredScreens]
|
|
404
424
|
.sort((a, b) => a.match_score - b.match_score)
|
|
405
425
|
.slice(0, 3)
|
|
406
426
|
.map((p) => `${fmtScreen(p)}=${(p.match_score * 100).toFixed(1)}%`)
|
|
407
427
|
.join(", ");
|
|
408
|
-
reasonParts.push(`${failed.length}/${
|
|
428
|
+
reasonParts.push(`${failed.length}/${scoredScreens.length} screens below ${(threshold * 100).toFixed(0)}% threshold. Worst: ${worst}. Fix and re-run codeloop_verify.`);
|
|
409
429
|
}
|
|
430
|
+
if (skipNote)
|
|
431
|
+
reasonParts.push(skipNote.trim());
|
|
410
432
|
results.push({
|
|
411
433
|
gate: designGate,
|
|
412
434
|
passed: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate_check.js","sourceRoot":"","sources":["../../src/tools/gate_check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gate_check.js","sourceRoot":"","sources":["../../src/tools/gate_check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface SelfTestCheck {
|
|
2
|
+
name: string;
|
|
3
|
+
passed: boolean;
|
|
4
|
+
detail: string;
|
|
5
|
+
fix?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SelfTestResult {
|
|
8
|
+
project_dir: string;
|
|
9
|
+
platform: string;
|
|
10
|
+
is_desktop_app_project: boolean;
|
|
11
|
+
is_ui_project: boolean;
|
|
12
|
+
passed: boolean;
|
|
13
|
+
checks: SelfTestCheck[];
|
|
14
|
+
next_step: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* G12 — pre-flight self-test the agent runs on a fresh workspace
|
|
18
|
+
* BEFORE the first verify cycle. It walks every critical CodeLoop
|
|
19
|
+
* pre-condition synthetically (no live build, no live screenshot, no
|
|
20
|
+
* network calls past the platform sniff) and returns a structured
|
|
21
|
+
* pass/fail report.
|
|
22
|
+
*
|
|
23
|
+
* Pinned in agent rules as: "When CodeLoop is misbehaving on this
|
|
24
|
+
* project, run codeloop_self_test FIRST. It will tell you in one
|
|
25
|
+
* call whether the issue is a config gap (target_app missing, init
|
|
26
|
+
* skipped, MCP cwd wrong) or an actual product bug worth diagnosing
|
|
27
|
+
* deeper."
|
|
28
|
+
*
|
|
29
|
+
* Photometry-DB E2E session 8 + 9 trauma:
|
|
30
|
+
* - Init had been skipped → every other call false-positive'd.
|
|
31
|
+
* - target_app wasn't auto-detected → captureScreenshot fell back
|
|
32
|
+
* to fullscreen and silently grabbed the IDE.
|
|
33
|
+
* - The .csproj had a custom <BaseOutputPath> → launchDesktopApp
|
|
34
|
+
* refused to find the binary.
|
|
35
|
+
* - PNG screenshots from PowerShell had IEND-trailing bytes →
|
|
36
|
+
* design_compare returned 0% match instead of skipping.
|
|
37
|
+
* All four would have been caught in one self-test call.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runSelfTest(cwd: string): SelfTestResult;
|
|
40
|
+
//# sourceMappingURL=self_test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self_test.d.ts","sourceRoot":"","sources":["../../src/tools/self_test.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA4KvD"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { existsSync, statSync } from "fs";
|
|
2
|
+
import { join, resolve } from "path";
|
|
3
|
+
import { loadConfig } from "../config.js";
|
|
4
|
+
import { detectPlatform } from "./verify.js";
|
|
5
|
+
import { isDesktopAppProject } from "./desktop_app_mode.js";
|
|
6
|
+
import { detectDesktopUI } from "./desktop_detection.js";
|
|
7
|
+
import { detectNodeUI } from "./node_ui_detection.js";
|
|
8
|
+
import { isPngDecodeError } from "./design_compare.js";
|
|
9
|
+
import { PngDecodeError } from "../evidence/screenshot_diff.js";
|
|
10
|
+
/**
|
|
11
|
+
* G12 — pre-flight self-test the agent runs on a fresh workspace
|
|
12
|
+
* BEFORE the first verify cycle. It walks every critical CodeLoop
|
|
13
|
+
* pre-condition synthetically (no live build, no live screenshot, no
|
|
14
|
+
* network calls past the platform sniff) and returns a structured
|
|
15
|
+
* pass/fail report.
|
|
16
|
+
*
|
|
17
|
+
* Pinned in agent rules as: "When CodeLoop is misbehaving on this
|
|
18
|
+
* project, run codeloop_self_test FIRST. It will tell you in one
|
|
19
|
+
* call whether the issue is a config gap (target_app missing, init
|
|
20
|
+
* skipped, MCP cwd wrong) or an actual product bug worth diagnosing
|
|
21
|
+
* deeper."
|
|
22
|
+
*
|
|
23
|
+
* Photometry-DB E2E session 8 + 9 trauma:
|
|
24
|
+
* - Init had been skipped → every other call false-positive'd.
|
|
25
|
+
* - target_app wasn't auto-detected → captureScreenshot fell back
|
|
26
|
+
* to fullscreen and silently grabbed the IDE.
|
|
27
|
+
* - The .csproj had a custom <BaseOutputPath> → launchDesktopApp
|
|
28
|
+
* refused to find the binary.
|
|
29
|
+
* - PNG screenshots from PowerShell had IEND-trailing bytes →
|
|
30
|
+
* design_compare returned 0% match instead of skipping.
|
|
31
|
+
* All four would have been caught in one self-test call.
|
|
32
|
+
*/
|
|
33
|
+
export function runSelfTest(cwd) {
|
|
34
|
+
const checks = [];
|
|
35
|
+
const projectAbs = resolve(cwd);
|
|
36
|
+
// 1. Workspace exists and is a directory
|
|
37
|
+
let workspaceOk = false;
|
|
38
|
+
let workspaceDetail = "";
|
|
39
|
+
try {
|
|
40
|
+
const st = statSync(projectAbs);
|
|
41
|
+
workspaceOk = st.isDirectory();
|
|
42
|
+
workspaceDetail = workspaceOk
|
|
43
|
+
? `${projectAbs} exists`
|
|
44
|
+
: `${projectAbs} exists but is not a directory`;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
workspaceDetail = `${projectAbs} does not exist`;
|
|
48
|
+
}
|
|
49
|
+
checks.push({
|
|
50
|
+
name: "workspace_exists",
|
|
51
|
+
passed: workspaceOk,
|
|
52
|
+
detail: workspaceDetail,
|
|
53
|
+
fix: workspaceOk
|
|
54
|
+
? undefined
|
|
55
|
+
: "Pass an existing directory as project_dir / workspace_root, or set CODELOOP_PROJECT_DIR in your MCP config",
|
|
56
|
+
});
|
|
57
|
+
// 2. CodeLoop config present (init has been run)
|
|
58
|
+
const configPath = join(projectAbs, ".codeloop", "config.json");
|
|
59
|
+
const configOk = existsSync(configPath);
|
|
60
|
+
checks.push({
|
|
61
|
+
name: "init_complete",
|
|
62
|
+
passed: configOk,
|
|
63
|
+
detail: configOk
|
|
64
|
+
? `Found .codeloop/config.json`
|
|
65
|
+
: "No .codeloop/config.json — init has not been run for this workspace",
|
|
66
|
+
fix: configOk ? undefined : "Run codeloop_init_project before any other tool",
|
|
67
|
+
});
|
|
68
|
+
// 3. Platform detection
|
|
69
|
+
let platform = "unknown";
|
|
70
|
+
try {
|
|
71
|
+
platform = detectPlatform(projectAbs);
|
|
72
|
+
}
|
|
73
|
+
catch { /* keep unknown */ }
|
|
74
|
+
checks.push({
|
|
75
|
+
name: "platform_detected",
|
|
76
|
+
passed: platform !== "unknown",
|
|
77
|
+
detail: `detectPlatform → ${platform}`,
|
|
78
|
+
fix: platform === "unknown"
|
|
79
|
+
? "CodeLoop could not infer a platform from this workspace. Set platforms: [...] in .codeloop/config.json (e.g. ['dotnet'], ['flutter'], ['web'])."
|
|
80
|
+
: undefined,
|
|
81
|
+
});
|
|
82
|
+
// 4. Desktop-app gate alignment
|
|
83
|
+
const desktopApp = isDesktopAppProject(projectAbs);
|
|
84
|
+
let frameworkSummary = "";
|
|
85
|
+
if (platform === "dotnet") {
|
|
86
|
+
const ui = detectDesktopUI(projectAbs);
|
|
87
|
+
frameworkSummary = ui.frameworks.join(", ") || "<none>";
|
|
88
|
+
}
|
|
89
|
+
else if (platform === "node") {
|
|
90
|
+
const node = detectNodeUI(projectAbs);
|
|
91
|
+
frameworkSummary = node.frameworks.join(", ") || "<none>";
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
frameworkSummary = platform;
|
|
95
|
+
}
|
|
96
|
+
checks.push({
|
|
97
|
+
name: "desktop_app_gate",
|
|
98
|
+
passed: true, // diagnostic, never fails
|
|
99
|
+
detail: desktopApp
|
|
100
|
+
? `Desktop-app honesty mode ON (${frameworkSummary}) — captureScreenshot will refuse silent fullscreen fallback`
|
|
101
|
+
: `Desktop-app mode OFF (${frameworkSummary}) — fullscreen capture is acceptable evidence for this project type`,
|
|
102
|
+
});
|
|
103
|
+
// 5. evidence.target_app — only required when desktop-app mode is ON
|
|
104
|
+
let targetAppOk = true;
|
|
105
|
+
let targetAppDetail = "";
|
|
106
|
+
let targetAppFix;
|
|
107
|
+
if (desktopApp) {
|
|
108
|
+
try {
|
|
109
|
+
const cfg = loadConfig(projectAbs);
|
|
110
|
+
const target = cfg.evidence?.target_app;
|
|
111
|
+
if (target) {
|
|
112
|
+
targetAppOk = true;
|
|
113
|
+
targetAppDetail = `evidence.target_app = "${target}"`;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
targetAppOk = false;
|
|
117
|
+
targetAppDetail = "evidence.target_app is missing — captureScreenshot can't resolve a window";
|
|
118
|
+
targetAppFix =
|
|
119
|
+
"Re-run codeloop_init_project to auto-extract target_app from .csproj AssemblyName / Xcode PRODUCT_NAME / AndroidManifest android:label, or set evidence.target_app manually in .codeloop/config.json";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
targetAppOk = false;
|
|
124
|
+
targetAppDetail = `Failed to load .codeloop/config.json: ${e.message}`;
|
|
125
|
+
targetAppFix = "Run codeloop_init_project to recreate the config";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
targetAppDetail = "Not a desktop-app project — target_app not required";
|
|
130
|
+
}
|
|
131
|
+
checks.push({
|
|
132
|
+
name: "target_app_resolves",
|
|
133
|
+
passed: targetAppOk,
|
|
134
|
+
detail: targetAppDetail,
|
|
135
|
+
fix: targetAppFix,
|
|
136
|
+
});
|
|
137
|
+
// 6. PNG decoder skip path is wired
|
|
138
|
+
const pngOk = (() => {
|
|
139
|
+
try {
|
|
140
|
+
const e = new PngDecodeError("/synth", new Error("invalid IHDR"));
|
|
141
|
+
return isPngDecodeError(e.message);
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
})();
|
|
147
|
+
checks.push({
|
|
148
|
+
name: "png_decoder_skip",
|
|
149
|
+
passed: pngOk,
|
|
150
|
+
detail: pngOk
|
|
151
|
+
? "PngDecodeError → isPngDecodeError → skip path is wired"
|
|
152
|
+
: "PngDecodeError is NOT routed through isPngDecodeError — design_compare may report 0% on corrupt PNGs",
|
|
153
|
+
fix: pngOk ? undefined : "Upgrade to codeloop-mcp-server >= 0.1.49",
|
|
154
|
+
});
|
|
155
|
+
// 7. coords/DPI translation round-trips on a synthetic fixture
|
|
156
|
+
// We import the same logic as the live runner — keep this in
|
|
157
|
+
// sync with translateXY in src/index.ts.
|
|
158
|
+
const dpiOk = (() => {
|
|
159
|
+
const origin = { dx: 286, dy: 286, width: 1600, height: 900, dpiX: 2, dpiY: 2 };
|
|
160
|
+
// window-mode click at logical (110, 460) under 200% scaling
|
|
161
|
+
// → physical (220, 920) + origin (286, 286) = (506, 1206).
|
|
162
|
+
const expected = { x: 506, y: 1206 };
|
|
163
|
+
const dpi = { x: 110 * origin.dpiX, y: 460 * origin.dpiY };
|
|
164
|
+
const actual = { x: dpi.x + origin.dx, y: dpi.y + origin.dy };
|
|
165
|
+
return actual.x === expected.x && actual.y === expected.y;
|
|
166
|
+
})();
|
|
167
|
+
checks.push({
|
|
168
|
+
name: "coord_dpi_round_trip",
|
|
169
|
+
passed: dpiOk,
|
|
170
|
+
detail: dpiOk
|
|
171
|
+
? "coords:'window' + dpi=2 → expected screen-physical pixels"
|
|
172
|
+
: "DPI translation is NOT producing the expected output — coordinate-driven clicks may miss on high-DPI displays",
|
|
173
|
+
fix: dpiOk ? undefined : "Upgrade to codeloop-mcp-server >= 0.1.49",
|
|
174
|
+
});
|
|
175
|
+
const allPassed = checks.every((c) => c.passed);
|
|
176
|
+
const isUI = desktopApp ||
|
|
177
|
+
["flutter", "web", "xcode", "android"].includes(platform);
|
|
178
|
+
let nextStep;
|
|
179
|
+
if (!configOk) {
|
|
180
|
+
nextStep =
|
|
181
|
+
"Call codeloop_init_project on this workspace, then re-run codeloop_self_test to confirm the rest of the chain.";
|
|
182
|
+
}
|
|
183
|
+
else if (!targetAppOk) {
|
|
184
|
+
nextStep =
|
|
185
|
+
"Set evidence.target_app in .codeloop/config.json (or re-run codeloop_init_project to auto-detect it), then call codeloop_self_test again.";
|
|
186
|
+
}
|
|
187
|
+
else if (allPassed) {
|
|
188
|
+
nextStep =
|
|
189
|
+
"Self-test passed. Proceed with codeloop_verify → codeloop_capture_screenshot → codeloop_start_recording → … → codeloop_gate_check as usual.";
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
nextStep =
|
|
193
|
+
"One or more checks failed. Address the `fix` suggestions below in order, then call codeloop_self_test again before continuing.";
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
project_dir: projectAbs,
|
|
197
|
+
platform,
|
|
198
|
+
is_desktop_app_project: desktopApp,
|
|
199
|
+
is_ui_project: isUI,
|
|
200
|
+
passed: allPassed,
|
|
201
|
+
checks,
|
|
202
|
+
next_step: nextStep,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=self_test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self_test.js","sourceRoot":"","sources":["../../src/tools/self_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/tools/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYtF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqDlD;AA0GD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,EACtB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/tools/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYtF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqDlD;AA0GD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,cAAc,EACtB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAkUvB;AAuMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoCzC"}
|
package/dist/tools/verify.js
CHANGED
|
@@ -263,14 +263,13 @@ export async function runVerify(input, config, cwd = process.cwd()) {
|
|
|
263
263
|
// and design_compare's "missing screenshot" reason then
|
|
264
264
|
// correctly tells the agent the gap is "app wasn't running
|
|
265
265
|
// / wasn't configured" rather than "fix the visual diff".
|
|
266
|
-
const isDesktopAppProject =
|
|
267
|
-
|
|
268
|
-
platform === "android";
|
|
266
|
+
const { isDesktopAppProject } = await import("./desktop_app_mode.js");
|
|
267
|
+
const desktopApp = isDesktopAppProject(cwd);
|
|
269
268
|
const targetApp = config.evidence?.target_app;
|
|
270
269
|
const screens = config.evidence?.screens;
|
|
271
270
|
if (screens && screens.length > 0) {
|
|
272
271
|
for (const screen of screens) {
|
|
273
|
-
const capture = await captureScreenshot(screenshotsDir, screen.name, targetApp, undefined, { desktopAppMode:
|
|
272
|
+
const capture = await captureScreenshot(screenshotsDir, screen.name, targetApp, undefined, { desktopAppMode: desktopApp });
|
|
274
273
|
if (capture.captured) {
|
|
275
274
|
screenshotPaths.push(...capture.paths);
|
|
276
275
|
}
|
|
@@ -280,7 +279,7 @@ export async function runVerify(input, config, cwd = process.cwd()) {
|
|
|
280
279
|
}
|
|
281
280
|
}
|
|
282
281
|
else {
|
|
283
|
-
const capture = await captureScreenshot(screenshotsDir, "verify", targetApp, undefined, { desktopAppMode:
|
|
282
|
+
const capture = await captureScreenshot(screenshotsDir, "verify", targetApp, undefined, { desktopAppMode: desktopApp });
|
|
284
283
|
if (capture.captured) {
|
|
285
284
|
screenshotPaths.push(...capture.paths);
|
|
286
285
|
}
|