cbrowser 18.73.2 → 18.74.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/analysis/accessibility-empathy.d.ts.map +1 -1
- package/dist/analysis/accessibility-empathy.js +113 -8
- package/dist/analysis/accessibility-empathy.js.map +1 -1
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +66 -5
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/analysis/natural-language.d.ts.map +1 -1
- package/dist/analysis/natural-language.js +9 -8
- package/dist/analysis/natural-language.js.map +1 -1
- package/dist/analysis/page-understanding.d.ts.map +1 -1
- package/dist/analysis/page-understanding.js +115 -14
- package/dist/analysis/page-understanding.js.map +1 -1
- package/dist/analysis/webmcp-readiness.d.ts.map +1 -1
- package/dist/analysis/webmcp-readiness.js +18 -7
- package/dist/analysis/webmcp-readiness.js.map +1 -1
- package/dist/artifact-store.d.ts +55 -0
- package/dist/artifact-store.d.ts.map +1 -0
- package/dist/artifact-store.js +63 -0
- package/dist/artifact-store.js.map +1 -0
- package/dist/browser.d.ts +8 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +157 -41
- package/dist/browser.js.map +1 -1
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -1
- package/dist/config.js.map +1 -1
- package/dist/mcp-server-remote.d.ts +17 -1
- package/dist/mcp-server-remote.d.ts.map +1 -1
- package/dist/mcp-server-remote.js +22 -3
- package/dist/mcp-server-remote.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +20 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/base/analysis-tools.d.ts +1 -1
- package/dist/mcp-tools/base/analysis-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/analysis-tools.js +83 -10
- package/dist/mcp-tools/base/analysis-tools.js.map +1 -1
- package/dist/mcp-tools/base/assertion-tools.d.ts +1 -1
- package/dist/mcp-tools/base/assertion-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/assertion-tools.js +26 -3
- package/dist/mcp-tools/base/assertion-tools.js.map +1 -1
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +189 -28
- package/dist/mcp-tools/base/audit-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.d.ts +1 -1
- package/dist/mcp-tools/base/browser-management-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.js +66 -15
- package/dist/mcp-tools/base/browser-management-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-state-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/browser-state-tools.js +6 -1
- package/dist/mcp-tools/base/browser-state-tools.js.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.js +103 -30
- package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.js +6 -0
- package/dist/mcp-tools/base/extraction-tools.js.map +1 -1
- package/dist/mcp-tools/base/gif-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/gif-tools.js +7 -7
- package/dist/mcp-tools/base/gif-tools.js.map +1 -1
- package/dist/mcp-tools/base/interaction-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/interaction-tools.js +76 -11
- package/dist/mcp-tools/base/interaction-tools.js.map +1 -1
- package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/persona-comparison-tools.js +78 -10
- package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
- package/dist/mcp-tools/base/session-tools.d.ts +1 -1
- package/dist/mcp-tools/base/session-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/session-tools.js +64 -7
- package/dist/mcp-tools/base/session-tools.js.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.js +47 -1
- package/dist/mcp-tools/base/site-knowledge-tools.js.map +1 -1
- package/dist/mcp-tools/base/testing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/testing-tools.js +20 -0
- package/dist/mcp-tools/base/testing-tools.js.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/visual-testing-tools.js +71 -46
- package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.js +40 -10
- package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
- package/dist/mcp-tools/session-policy.d.ts +43 -0
- package/dist/mcp-tools/session-policy.d.ts.map +1 -0
- package/dist/mcp-tools/session-policy.js +54 -0
- package/dist/mcp-tools/session-policy.js.map +1 -0
- package/dist/mcp-ui-resources.d.ts +83 -0
- package/dist/mcp-ui-resources.d.ts.map +1 -0
- package/dist/mcp-ui-resources.js +128 -0
- package/dist/mcp-ui-resources.js.map +1 -0
- package/dist/performance/metrics.d.ts +0 -3
- package/dist/performance/metrics.d.ts.map +1 -1
- package/dist/performance/metrics.js +45 -1
- package/dist/performance/metrics.js.map +1 -1
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +38 -4
- package/dist/personas.js.map +1 -1
- package/dist/remediation/patch-generator.d.ts.map +1 -1
- package/dist/remediation/patch-generator.js +36 -2
- package/dist/remediation/patch-generator.js.map +1 -1
- package/dist/selector-escape.d.ts +37 -0
- package/dist/selector-escape.d.ts.map +1 -0
- package/dist/selector-escape.js +83 -0
- package/dist/selector-escape.js.map +1 -0
- package/dist/testing/coverage.d.ts +8 -0
- package/dist/testing/coverage.d.ts.map +1 -1
- package/dist/testing/coverage.js +12 -0
- package/dist/testing/coverage.js.map +1 -1
- package/dist/types.d.ts +42 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/visual/attention-quality.d.ts +0 -9
- package/dist/visual/attention-quality.d.ts.map +1 -1
- package/dist/visual/attention-quality.js +28 -1
- package/dist/visual/attention-quality.js.map +1 -1
- package/dist/visual/barrier-overlay-html.d.ts +88 -0
- package/dist/visual/barrier-overlay-html.d.ts.map +1 -0
- package/dist/visual/barrier-overlay-html.js +142 -0
- package/dist/visual/barrier-overlay-html.js.map +1 -0
- package/dist/visual/cognitive-transport.d.ts +15 -8
- package/dist/visual/cognitive-transport.d.ts.map +1 -1
- package/dist/visual/cognitive-transport.js +113 -34
- package/dist/visual/cognitive-transport.js.map +1 -1
- package/dist/visual/cross-browser.d.ts +13 -0
- package/dist/visual/cross-browser.d.ts.map +1 -1
- package/dist/visual/cross-browser.js +29 -3
- package/dist/visual/cross-browser.js.map +1 -1
- package/dist/visual/perceptual-transport.d.ts +8 -0
- package/dist/visual/perceptual-transport.d.ts.map +1 -1
- package/dist/visual/perceptual-transport.js +19 -0
- package/dist/visual/perceptual-transport.js.map +1 -1
- package/dist/visual/regression.d.ts.map +1 -1
- package/dist/visual/regression.js +76 -3
- package/dist/visual/regression.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attention-quality.js","sourceRoot":"","sources":["../../src/visual/attention-quality.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attention-quality.js","sourceRoot":"","sources":["../../src/visual/attention-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrier overlay HTML.
|
|
3
|
+
*
|
|
4
|
+
* `empathy_audit` reports a barrier as a type, a severity, a WCAG criterion and
|
|
5
|
+
* a rectangle. That is everything needed to draw it, and drawing it is the point
|
|
6
|
+
* — an empathy score stated in prose has to be taken on faith, while the same
|
|
7
|
+
* score with the barriers marked on the page is something a reader can look at
|
|
8
|
+
* and disagree with. Falsifiable by eye.
|
|
9
|
+
*
|
|
10
|
+
* Two decisions worth stating, because both are places this is easy to get
|
|
11
|
+
* wrong:
|
|
12
|
+
*
|
|
13
|
+
* **Percentages, not pixels.** Rects arrive in document CSS pixels against a
|
|
14
|
+
* capture of known width and height. Positioning them in pixels would need the
|
|
15
|
+
* rendered image size, which depends on the host's iframe width and is not
|
|
16
|
+
* knowable here — so any fixed scale factor is wrong at every width but one.
|
|
17
|
+
* Expressing each rect as a percentage of the same capture box makes the image
|
|
18
|
+
* and its rects share one scale *by construction*: the browser rescales both
|
|
19
|
+
* together and there is no factor to compute, or to get wrong. That is what
|
|
20
|
+
* ISC-75 asks for, obtained structurally rather than arithmetically.
|
|
21
|
+
*
|
|
22
|
+
* **Out-of-bounds rects are listed, not drawn.** A `scope: "full_page"` audit
|
|
23
|
+
* scrolls, so a rect can legitimately fall outside the captured image. Clamping
|
|
24
|
+
* it would put a box on innocent content and assert something false about the
|
|
25
|
+
* page; dropping it silently would hide a real barrier. Both are worse than
|
|
26
|
+
* saying where it went.
|
|
27
|
+
*
|
|
28
|
+
* @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
|
|
29
|
+
* @license MIT
|
|
30
|
+
*/
|
|
31
|
+
/** Severity -> colour. Fixed, because the legend has to mean one thing. */
|
|
32
|
+
export declare const SEVERITY_COLORS: Record<string, string>;
|
|
33
|
+
export interface OverlayRect {
|
|
34
|
+
type?: string;
|
|
35
|
+
severity?: string;
|
|
36
|
+
element?: string;
|
|
37
|
+
description?: string;
|
|
38
|
+
wcag?: string[];
|
|
39
|
+
rect?: {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
width: number;
|
|
43
|
+
height: number;
|
|
44
|
+
};
|
|
45
|
+
outsideScreenshot?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface BarrierOverlayInput {
|
|
48
|
+
/** Publicly fetchable URL of the capture. Without it there is nothing to draw on. */
|
|
49
|
+
imageUrl: string;
|
|
50
|
+
/** Width of the capture in CSS px (viewportSize.width). */
|
|
51
|
+
imageWidth: number;
|
|
52
|
+
/** Height of the capture in CSS px — viewport height, or document height for full_page. */
|
|
53
|
+
captureHeight: number;
|
|
54
|
+
barrierRects: OverlayRect[];
|
|
55
|
+
persona: string;
|
|
56
|
+
pageUrl: string;
|
|
57
|
+
score?: number;
|
|
58
|
+
}
|
|
59
|
+
/** Escape for HTML text and double-quoted attribute contexts. */
|
|
60
|
+
export declare function esc(value: unknown): string;
|
|
61
|
+
/** A rect's box as percentages of the capture, so it scales with the image. */
|
|
62
|
+
export declare function rectToPercent(rect: {
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
width: number;
|
|
66
|
+
height: number;
|
|
67
|
+
}, imageWidth: number, captureHeight: number): {
|
|
68
|
+
left: number;
|
|
69
|
+
top: number;
|
|
70
|
+
width: number;
|
|
71
|
+
height: number;
|
|
72
|
+
};
|
|
73
|
+
/** True when the rect lies wholly or partly within the captured image. */
|
|
74
|
+
export declare function isInBounds(rect: {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
width: number;
|
|
78
|
+
height: number;
|
|
79
|
+
}, imageWidth: number, captureHeight: number): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Build a self-contained overlay document.
|
|
82
|
+
*
|
|
83
|
+
* Returns `null` when there is no image to draw on — a legend floating above
|
|
84
|
+
* nothing is not a report, and emitting one would be the "advertise what wasn't
|
|
85
|
+
* produced" failure the artifact store exists to prevent.
|
|
86
|
+
*/
|
|
87
|
+
export declare function buildBarrierOverlayHtml(input: BarrierOverlayInput): string | null;
|
|
88
|
+
//# sourceMappingURL=barrier-overlay-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barrier-overlay-html.d.ts","sourceRoot":"","sources":["../../src/visual/barrier-overlay-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKlD,CAAC;AAIF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iEAAiE;AACjE,wBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAO1C;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7D,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAS9D;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CACxB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7D,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAOT;AAMD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAmFjF"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrier overlay HTML.
|
|
3
|
+
*
|
|
4
|
+
* `empathy_audit` reports a barrier as a type, a severity, a WCAG criterion and
|
|
5
|
+
* a rectangle. That is everything needed to draw it, and drawing it is the point
|
|
6
|
+
* — an empathy score stated in prose has to be taken on faith, while the same
|
|
7
|
+
* score with the barriers marked on the page is something a reader can look at
|
|
8
|
+
* and disagree with. Falsifiable by eye.
|
|
9
|
+
*
|
|
10
|
+
* Two decisions worth stating, because both are places this is easy to get
|
|
11
|
+
* wrong:
|
|
12
|
+
*
|
|
13
|
+
* **Percentages, not pixels.** Rects arrive in document CSS pixels against a
|
|
14
|
+
* capture of known width and height. Positioning them in pixels would need the
|
|
15
|
+
* rendered image size, which depends on the host's iframe width and is not
|
|
16
|
+
* knowable here — so any fixed scale factor is wrong at every width but one.
|
|
17
|
+
* Expressing each rect as a percentage of the same capture box makes the image
|
|
18
|
+
* and its rects share one scale *by construction*: the browser rescales both
|
|
19
|
+
* together and there is no factor to compute, or to get wrong. That is what
|
|
20
|
+
* ISC-75 asks for, obtained structurally rather than arithmetically.
|
|
21
|
+
*
|
|
22
|
+
* **Out-of-bounds rects are listed, not drawn.** A `scope: "full_page"` audit
|
|
23
|
+
* scrolls, so a rect can legitimately fall outside the captured image. Clamping
|
|
24
|
+
* it would put a box on innocent content and assert something false about the
|
|
25
|
+
* page; dropping it silently would hide a real barrier. Both are worse than
|
|
26
|
+
* saying where it went.
|
|
27
|
+
*
|
|
28
|
+
* @copyright 2026 Alexandria Eden alexandria.shai.eden@gmail.com https://cbrowser.ai
|
|
29
|
+
* @license MIT
|
|
30
|
+
*/
|
|
31
|
+
/** Severity -> colour. Fixed, because the legend has to mean one thing. */
|
|
32
|
+
export const SEVERITY_COLORS = {
|
|
33
|
+
critical: "#ef4444",
|
|
34
|
+
major: "#f59e0b",
|
|
35
|
+
moderate: "#eab308",
|
|
36
|
+
minor: "#38bdf8",
|
|
37
|
+
};
|
|
38
|
+
const DEFAULT_COLOR = "#94a3b8";
|
|
39
|
+
/** Escape for HTML text and double-quoted attribute contexts. */
|
|
40
|
+
export function esc(value) {
|
|
41
|
+
return String(value ?? "")
|
|
42
|
+
.replace(/&/g, "&")
|
|
43
|
+
.replace(/</g, "<")
|
|
44
|
+
.replace(/>/g, ">")
|
|
45
|
+
.replace(/"/g, """)
|
|
46
|
+
.replace(/'/g, "'");
|
|
47
|
+
}
|
|
48
|
+
/** A rect's box as percentages of the capture, so it scales with the image. */
|
|
49
|
+
export function rectToPercent(rect, imageWidth, captureHeight) {
|
|
50
|
+
const w = imageWidth > 0 ? imageWidth : 1;
|
|
51
|
+
const h = captureHeight > 0 ? captureHeight : 1;
|
|
52
|
+
return {
|
|
53
|
+
left: (rect.x / w) * 100,
|
|
54
|
+
top: (rect.y / h) * 100,
|
|
55
|
+
width: (rect.width / w) * 100,
|
|
56
|
+
height: (rect.height / h) * 100,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** True when the rect lies wholly or partly within the captured image. */
|
|
60
|
+
export function isInBounds(rect, imageWidth, captureHeight) {
|
|
61
|
+
return (rect.x + rect.width > 0 &&
|
|
62
|
+
rect.y + rect.height > 0 &&
|
|
63
|
+
rect.x < imageWidth &&
|
|
64
|
+
rect.y < captureHeight);
|
|
65
|
+
}
|
|
66
|
+
function colorFor(severity) {
|
|
67
|
+
return SEVERITY_COLORS[String(severity ?? "").toLowerCase()] ?? DEFAULT_COLOR;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build a self-contained overlay document.
|
|
71
|
+
*
|
|
72
|
+
* Returns `null` when there is no image to draw on — a legend floating above
|
|
73
|
+
* nothing is not a report, and emitting one would be the "advertise what wasn't
|
|
74
|
+
* produced" failure the artifact store exists to prevent.
|
|
75
|
+
*/
|
|
76
|
+
export function buildBarrierOverlayHtml(input) {
|
|
77
|
+
const { imageUrl, imageWidth, captureHeight, barrierRects, persona, pageUrl, score } = input;
|
|
78
|
+
if (!imageUrl || !imageWidth || !captureHeight)
|
|
79
|
+
return null;
|
|
80
|
+
const withRects = (barrierRects ?? []).filter((b) => b.rect);
|
|
81
|
+
const drawn = withRects.filter((b) => !b.outsideScreenshot && isInBounds(b.rect, imageWidth, captureHeight));
|
|
82
|
+
const offscreen = withRects.filter((b) => b.outsideScreenshot || !isInBounds(b.rect, imageWidth, captureHeight));
|
|
83
|
+
const boxes = drawn
|
|
84
|
+
.map((b) => {
|
|
85
|
+
const p = rectToPercent(b.rect, imageWidth, captureHeight);
|
|
86
|
+
const color = colorFor(b.severity);
|
|
87
|
+
const wcag = (b.wcag ?? []).join(", ");
|
|
88
|
+
// The label is the accessible name: colour alone must never be the only
|
|
89
|
+
// carrier of meaning (WCAG 1.4.1), least of all in an accessibility tool.
|
|
90
|
+
const label = `${b.severity ?? "barrier"}: ${b.type ?? "issue"}${wcag ? ` (WCAG ${wcag})` : ""} — ${b.element ?? ""} ${b.description ?? ""}`.trim();
|
|
91
|
+
return (`<div class="bx" style="left:${p.left.toFixed(3)}%;top:${p.top.toFixed(3)}%;` +
|
|
92
|
+
`width:${p.width.toFixed(3)}%;height:${p.height.toFixed(3)}%;` +
|
|
93
|
+
`border-color:${color};box-shadow:0 0 0 1px ${color}55" ` +
|
|
94
|
+
`title="${esc(label)}" aria-label="${esc(label)}" role="img"></div>`);
|
|
95
|
+
})
|
|
96
|
+
.join("\n");
|
|
97
|
+
const severitiesPresent = Array.from(new Set(drawn.map((b) => String(b.severity ?? "").toLowerCase()).filter(Boolean)));
|
|
98
|
+
const legend = severitiesPresent
|
|
99
|
+
.map((sev) => `<li><span class="sw" style="background:${SEVERITY_COLORS[sev] ?? DEFAULT_COLOR}"></span>${esc(sev)} (${drawn.filter((b) => String(b.severity).toLowerCase() === sev).length})</li>`)
|
|
100
|
+
.join("");
|
|
101
|
+
const offscreenList = offscreen.length
|
|
102
|
+
? `<section class="off"><h2>Outside the capture (${offscreen.length})</h2><p>These barriers are real but fall outside the captured image, so they are listed rather than drawn.</p><ul>${offscreen
|
|
103
|
+
.map((b) => `<li><b>${esc(b.severity ?? "barrier")}</b> ${esc(b.type ?? "")} — ${esc(b.element ?? "")} <span class="at">at y=${esc(Math.round(b.rect.y))}</span></li>`)
|
|
104
|
+
.join("")}</ul></section>`
|
|
105
|
+
: "";
|
|
106
|
+
return `<!doctype html>
|
|
107
|
+
<html lang="en"><head><meta charset="utf-8">
|
|
108
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
109
|
+
<title>Barrier overlay — ${esc(persona)}</title>
|
|
110
|
+
<style>
|
|
111
|
+
:root{color-scheme:dark}
|
|
112
|
+
*{box-sizing:border-box}
|
|
113
|
+
body{margin:0;padding:16px;background:#0f172a;color:#e2e8f0;
|
|
114
|
+
font:14px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}
|
|
115
|
+
h1{font-size:18px;margin:0 0 4px}
|
|
116
|
+
.meta{color:#94a3b8;font-size:13px;margin-bottom:12px;word-break:break-word}
|
|
117
|
+
.wrap{position:relative;display:block;max-width:100%;margin:0 auto;
|
|
118
|
+
border:1px solid #1e293b;border-radius:8px;overflow:hidden;background:#1e293b}
|
|
119
|
+
.wrap img{display:block;width:100%;height:auto}
|
|
120
|
+
.bx{position:absolute;border:2px solid;border-radius:2px;pointer-events:auto}
|
|
121
|
+
ul.lg{list-style:none;display:flex;flex-wrap:wrap;gap:12px;padding:0;margin:12px 0 0;font-size:13px}
|
|
122
|
+
ul.lg li{display:flex;align-items:center;gap:6px}
|
|
123
|
+
.sw{width:12px;height:12px;border-radius:2px;display:inline-block}
|
|
124
|
+
.off{margin-top:16px;padding:12px;background:#1e293b;border-radius:8px}
|
|
125
|
+
.off h2{font-size:14px;margin:0 0 6px}
|
|
126
|
+
.off p{color:#94a3b8;font-size:12px;margin:0 0 8px}
|
|
127
|
+
.off ul{margin:0;padding-left:18px}
|
|
128
|
+
.at{color:#94a3b8}
|
|
129
|
+
.none{color:#94a3b8;font-style:italic;margin-top:12px}
|
|
130
|
+
</style></head>
|
|
131
|
+
<body>
|
|
132
|
+
<h1>Accessibility barriers — ${esc(persona)}</h1>
|
|
133
|
+
<div class="meta">${esc(pageUrl)}${score !== undefined ? ` · empathy score ${esc(score)}` : ""} · ${drawn.length} drawn${offscreen.length ? `, ${offscreen.length} outside capture` : ""}</div>
|
|
134
|
+
<div class="wrap">
|
|
135
|
+
<img src="${esc(imageUrl)}" alt="Screenshot of ${esc(pageUrl)} with detected accessibility barriers outlined">
|
|
136
|
+
${boxes}
|
|
137
|
+
</div>
|
|
138
|
+
${severitiesPresent.length ? `<ul class="lg">${legend}</ul>` : `<p class="none">No barriers fell within the captured image.</p>`}
|
|
139
|
+
${offscreenList}
|
|
140
|
+
</body></html>`;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=barrier-overlay-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barrier-overlay-html.js","sourceRoot":"","sources":["../../src/visual/barrier-overlay-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export interface AdversarialPersona {
|
|
|
77
77
|
delta: number;
|
|
78
78
|
}>;
|
|
79
79
|
}
|
|
80
|
-
export declare const COGNITIVE_TRAITS: readonly ["patience", "riskTolerance", "comprehension", "
|
|
80
|
+
export declare const COGNITIVE_TRAITS: readonly ["patience", "riskTolerance", "comprehension", "persistence", "resilience", "selfEfficacy", "emotionalContagion", "attributionStyle", "satisficing", "anchoringBias", "timeHorizon", "fearOfMissingOut", "interruptRecovery", "metacognitivePlanning", "proceduralFluency", "transferLearning", "informationForaging", "changeBlindness", "mentalModelRigidity", "trustCalibration", "socialProofSensitivity", "authoritySensitivity", "workingMemory", "readingTendency", "curiosity", "siteFamiliarity"];
|
|
81
81
|
export type CognitiveTrait = typeof COGNITIVE_TRAITS[number];
|
|
82
82
|
/**
|
|
83
83
|
* Normalize trait values to a probability measure (simplex).
|
|
@@ -92,12 +92,6 @@ export declare function distributionToTraits(dist: Float64Array): Record<string,
|
|
|
92
92
|
* Build a OTCognitiveProfile from raw trait values.
|
|
93
93
|
*/
|
|
94
94
|
export declare function buildOTCognitiveProfile(name: string, traits: Record<string, number>): OTCognitiveProfile;
|
|
95
|
-
/**
|
|
96
|
-
* Compute the Wasserstein-1 distance between two cognitive profiles.
|
|
97
|
-
* Uses the ground metric between traits to weight the transport.
|
|
98
|
-
*
|
|
99
|
-
* This is the "true cognitive distance" — how different two minds are.
|
|
100
|
-
*/
|
|
101
95
|
export declare function cognitiveDistance(profileA: OTCognitiveProfile, profileB: OTCognitiveProfile): CognitiveDistance;
|
|
102
96
|
/**
|
|
103
97
|
* Compute the Wasserstein barycenter of multiple cognitive profiles.
|
|
@@ -172,7 +166,20 @@ export declare function estimateCognitiveLoad(persona: OTCognitiveProfile, pageM
|
|
|
172
166
|
};
|
|
173
167
|
/**
|
|
174
168
|
* Given a set of personas, find the N most different ones for maximum
|
|
175
|
-
* test coverage. Uses greedy farthest-point sampling in Wasserstein space
|
|
169
|
+
* test coverage. Uses greedy farthest-point sampling in Wasserstein space,
|
|
170
|
+
* seeded with the two farthest-apart profiles.
|
|
171
|
+
*
|
|
172
|
+
* The seed used to be `profiles[0]` — whichever persona happened to be first in
|
|
173
|
+
* the caller's array. Farthest-point traversal is seed-sensitive, so the same
|
|
174
|
+
* persona set in a different order produced a different "maximum coverage"
|
|
175
|
+
* answer. Seeding with the diameter pair removes that order dependence and buys
|
|
176
|
+
* a property worth having: because the selected set contains the two most
|
|
177
|
+
* distant profiles, no unselected pair can be farther apart than the selected
|
|
178
|
+
* set's own maximum.
|
|
179
|
+
*
|
|
180
|
+
* Honest about what this is NOT: exact max-diversity selection is NP-hard, and
|
|
181
|
+
* greedy k-center remains a 2-approximation for the general objective. This
|
|
182
|
+
* fixes determinism and the diameter property, not optimality. (2026-07-28)
|
|
176
183
|
*/
|
|
177
184
|
export declare function selectMaxCoveragePersonas(profiles: OTCognitiveProfile[], n: number): OTCognitiveProfile[];
|
|
178
185
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cognitive-transport.d.ts","sourceRoot":"","sources":["../../src/visual/cognitive-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,sEAAsE;IACtE,YAAY,EAAE,YAAY,CAAC;IAC3B,yDAAyD;IACzD,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,6BAA6B;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,CAAC,EAAE,MAAM,CAAC;IACV,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gCAAgC;IAChC,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,0CAA0C;IAC1C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;
|
|
1
|
+
{"version":3,"file":"cognitive-transport.d.ts","sourceRoot":"","sources":["../../src/visual/cognitive-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,26 +22,38 @@
|
|
|
22
22
|
* @since v18.27.0
|
|
23
23
|
* @see https://github.com/alexandriashai/cbrowser/issues/159
|
|
24
24
|
*/
|
|
25
|
-
// ──
|
|
25
|
+
// ── The 26 Cognitive Traits ──
|
|
26
|
+
//
|
|
27
|
+
// These names MUST match the `CognitiveTraits` interface in ../types.ts, because
|
|
28
|
+
// `traitsToDistribution` reads them off the object produced by
|
|
29
|
+
// `getCognitiveProfile()`. A name absent from that schema silently resolves to
|
|
30
|
+
// the `?? 0.5` default on line ~168 and still takes a full share of the
|
|
31
|
+
// normalized distribution.
|
|
32
|
+
//
|
|
33
|
+
// The previous list was hand-written and had drifted badly: 17 of its 25 names
|
|
34
|
+
// (frustrationResponse, decisionStyle, impulsivity, motorPrecision,
|
|
35
|
+
// processingSpeed, contrastSensitivity, …) exist in no schema in either repo, so
|
|
36
|
+
// they were constant 0.5 for every persona — pure dilution carrying no signal —
|
|
37
|
+
// while 18 of the 26 real traits were never looked at at all. Two personas
|
|
38
|
+
// differing only in curiosity, selfEfficacy or siteFamiliarity measured as
|
|
39
|
+
// identical on those axes. Only 8 of 25 names were real. (2026-07-28)
|
|
26
40
|
export const COGNITIVE_TRAITS = [
|
|
27
|
-
// Core (
|
|
28
|
-
'patience', 'riskTolerance', 'comprehension',
|
|
29
|
-
// Emotional (
|
|
30
|
-
'
|
|
31
|
-
// Decision (
|
|
32
|
-
'
|
|
33
|
-
// Planning (
|
|
34
|
-
'
|
|
41
|
+
// Core (4) — the required traits in the schema
|
|
42
|
+
'patience', 'riskTolerance', 'comprehension', 'persistence',
|
|
43
|
+
// Emotional (4)
|
|
44
|
+
'resilience', 'selfEfficacy', 'emotionalContagion', 'attributionStyle',
|
|
45
|
+
// Decision (4)
|
|
46
|
+
'satisficing', 'anchoringBias', 'timeHorizon', 'fearOfMissingOut',
|
|
47
|
+
// Planning (4)
|
|
48
|
+
'interruptRecovery', 'metacognitivePlanning', 'proceduralFluency', 'transferLearning',
|
|
35
49
|
// Perception (3)
|
|
36
|
-
'
|
|
50
|
+
'informationForaging', 'changeBlindness', 'mentalModelRigidity',
|
|
37
51
|
// Social (3)
|
|
38
|
-
'trustCalibration', 'socialProofSensitivity', '
|
|
39
|
-
//
|
|
40
|
-
'
|
|
41
|
-
//
|
|
42
|
-
'
|
|
43
|
-
// Accessibility (3)
|
|
44
|
-
'contrastSensitivity', 'colorPerception', 'textProcessing',
|
|
52
|
+
'trustCalibration', 'socialProofSensitivity', 'authoritySensitivity',
|
|
53
|
+
// Cognitive (3)
|
|
54
|
+
'workingMemory', 'readingTendency', 'curiosity',
|
|
55
|
+
// Experience (1)
|
|
56
|
+
'siteFamiliarity',
|
|
45
57
|
];
|
|
46
58
|
// ── Ground Metric Between Traits ──
|
|
47
59
|
/**
|
|
@@ -58,27 +70,33 @@ export const COGNITIVE_TRAITS = [
|
|
|
58
70
|
function traitGroundDistance(a, b) {
|
|
59
71
|
if (a === b)
|
|
60
72
|
return 0;
|
|
73
|
+
// Partitions COGNITIVE_TRAITS above; every one of the 26 appears exactly once.
|
|
74
|
+
// The old map described the old phantom vocabulary, and its `motor` and
|
|
75
|
+
// `accessibility` domains named traits that exist in no schema. (2026-07-28)
|
|
61
76
|
const domains = {
|
|
62
|
-
core: ['patience', 'riskTolerance', 'comprehension'],
|
|
63
|
-
emotional: ['
|
|
64
|
-
decision: ['
|
|
65
|
-
planning: ['
|
|
66
|
-
perception: ['
|
|
67
|
-
social: ['trustCalibration', 'socialProofSensitivity', '
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
core: ['patience', 'riskTolerance', 'comprehension', 'persistence'],
|
|
78
|
+
emotional: ['resilience', 'selfEfficacy', 'emotionalContagion', 'attributionStyle'],
|
|
79
|
+
decision: ['satisficing', 'anchoringBias', 'timeHorizon', 'fearOfMissingOut'],
|
|
80
|
+
planning: ['interruptRecovery', 'metacognitivePlanning', 'proceduralFluency', 'transferLearning'],
|
|
81
|
+
perception: ['informationForaging', 'changeBlindness', 'mentalModelRigidity'],
|
|
82
|
+
social: ['trustCalibration', 'socialProofSensitivity', 'authoritySensitivity'],
|
|
83
|
+
cognitive: ['workingMemory', 'readingTendency', 'curiosity'],
|
|
84
|
+
// Deliberately a singleton: prior familiarity with a site is not a facet of
|
|
85
|
+
// any other trait group. It therefore never earns the 0.2 same-domain
|
|
86
|
+
// distance, which is correct rather than an oversight.
|
|
87
|
+
experience: ['siteFamiliarity'],
|
|
71
88
|
};
|
|
72
89
|
// Related domain pairs (closer than unrelated)
|
|
73
90
|
const related = new Set([
|
|
74
91
|
'core-emotional', 'emotional-core',
|
|
75
92
|
'core-decision', 'decision-core',
|
|
76
93
|
'emotional-decision', 'decision-emotional',
|
|
77
|
-
'perception-accessibility', 'accessibility-perception',
|
|
78
94
|
'perception-cognitive', 'cognitive-perception',
|
|
79
|
-
'motor-accessibility', 'accessibility-motor',
|
|
80
95
|
'planning-decision', 'decision-planning',
|
|
81
96
|
'cognitive-planning', 'planning-cognitive',
|
|
97
|
+
// Familiarity is built from memory and shapes how a page is foraged.
|
|
98
|
+
'experience-cognitive', 'cognitive-experience',
|
|
99
|
+
'experience-perception', 'perception-experience',
|
|
82
100
|
]);
|
|
83
101
|
let domainA = '', domainB = '';
|
|
84
102
|
for (const [domain, traits] of Object.entries(domains)) {
|
|
@@ -87,6 +105,13 @@ function traitGroundDistance(a, b) {
|
|
|
87
105
|
if (traits.includes(b))
|
|
88
106
|
domainB = domain;
|
|
89
107
|
}
|
|
108
|
+
// An unrecognized trait leaves its domain as "", and two unrecognized traits
|
|
109
|
+
// would then satisfy domainA === domainB and be scored 0.2, i.e. "same
|
|
110
|
+
// subdomain" — the closest possible relationship, awarded for being unknown.
|
|
111
|
+
// That is how the phantom vocabulary above stayed invisible for so long.
|
|
112
|
+
// Treat unknown as maximally distant instead. (2026-07-28)
|
|
113
|
+
if (!domainA || !domainB)
|
|
114
|
+
return 0.8;
|
|
90
115
|
if (domainA === domainB)
|
|
91
116
|
return 0.2; // Same subdomain
|
|
92
117
|
if (related.has(`${domainA}-${domainB}`))
|
|
@@ -138,6 +163,23 @@ export function buildOTCognitiveProfile(name, traits) {
|
|
|
138
163
|
*
|
|
139
164
|
* This is the "true cognitive distance" — how different two minds are.
|
|
140
165
|
*/
|
|
166
|
+
/**
|
|
167
|
+
* Fixed seed for the sliced-Wasserstein projection set. Any constant works; what
|
|
168
|
+
* matters is that it never changes, so the same pair of profiles always yields
|
|
169
|
+
* the same sliced distance across processes and releases.
|
|
170
|
+
*/
|
|
171
|
+
const SLICED_PROJECTION_SEED = 0x5f3759df;
|
|
172
|
+
/** mulberry32 — small, fast, well-distributed 32-bit PRNG. */
|
|
173
|
+
function seededRandom(seed) {
|
|
174
|
+
let a = seed >>> 0;
|
|
175
|
+
return () => {
|
|
176
|
+
a = (a + 0x6d2b79f5) >>> 0;
|
|
177
|
+
let t = a;
|
|
178
|
+
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
179
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
180
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
141
183
|
export function cognitiveDistance(profileA, profileB) {
|
|
142
184
|
const d = COGNITIVE_TRAITS.length;
|
|
143
185
|
const a = profileA.distribution;
|
|
@@ -171,15 +213,23 @@ export function cognitiveDistance(profileA, profileB) {
|
|
|
171
213
|
w2sq += meanDiff * meanDiff + (sigA - sigB) * (sigA - sigB);
|
|
172
214
|
}
|
|
173
215
|
const w2 = Math.sqrt(Math.max(0, w2sq));
|
|
174
|
-
// Sliced Wasserstein (fast approximation for validation)
|
|
216
|
+
// Sliced Wasserstein (fast approximation for validation).
|
|
217
|
+
//
|
|
218
|
+
// The projections are drawn from a SEEDED generator, not Math.random(). Two
|
|
219
|
+
// identical calls used to return different sliced values (measured: 0.031568
|
|
220
|
+
// vs 0.029943 for the same persona pair, a ~5% swing) while the MCP tool that
|
|
221
|
+
// exposes this declares idempotentHint: true. A metric a caller cannot
|
|
222
|
+
// reproduce is not a metric they can act on or diff against a baseline, so the
|
|
223
|
+
// projection set is now fixed. (2026-07-29)
|
|
175
224
|
const numProjections = 100;
|
|
176
225
|
let slicedSum = 0;
|
|
226
|
+
const rand = seededRandom(SLICED_PROJECTION_SEED);
|
|
177
227
|
for (let p = 0; p < numProjections; p++) {
|
|
178
|
-
//
|
|
228
|
+
// Deterministic pseudo-random projection
|
|
179
229
|
const dir = new Float64Array(d);
|
|
180
230
|
let norm = 0;
|
|
181
231
|
for (let i = 0; i < d; i++) {
|
|
182
|
-
dir[i] =
|
|
232
|
+
dir[i] = rand() * 2 - 1;
|
|
183
233
|
norm += dir[i] * dir[i];
|
|
184
234
|
}
|
|
185
235
|
norm = Math.sqrt(norm);
|
|
@@ -435,13 +485,42 @@ export function estimateCognitiveLoad(persona, pageMetrics) {
|
|
|
435
485
|
// ── Coverage Optimization ──
|
|
436
486
|
/**
|
|
437
487
|
* Given a set of personas, find the N most different ones for maximum
|
|
438
|
-
* test coverage. Uses greedy farthest-point sampling in Wasserstein space
|
|
488
|
+
* test coverage. Uses greedy farthest-point sampling in Wasserstein space,
|
|
489
|
+
* seeded with the two farthest-apart profiles.
|
|
490
|
+
*
|
|
491
|
+
* The seed used to be `profiles[0]` — whichever persona happened to be first in
|
|
492
|
+
* the caller's array. Farthest-point traversal is seed-sensitive, so the same
|
|
493
|
+
* persona set in a different order produced a different "maximum coverage"
|
|
494
|
+
* answer. Seeding with the diameter pair removes that order dependence and buys
|
|
495
|
+
* a property worth having: because the selected set contains the two most
|
|
496
|
+
* distant profiles, no unselected pair can be farther apart than the selected
|
|
497
|
+
* set's own maximum.
|
|
498
|
+
*
|
|
499
|
+
* Honest about what this is NOT: exact max-diversity selection is NP-hard, and
|
|
500
|
+
* greedy k-center remains a 2-approximation for the general objective. This
|
|
501
|
+
* fixes determinism and the diameter property, not optimality. (2026-07-28)
|
|
439
502
|
*/
|
|
440
503
|
export function selectMaxCoveragePersonas(profiles, n) {
|
|
441
504
|
if (profiles.length <= n)
|
|
442
505
|
return profiles;
|
|
443
|
-
|
|
444
|
-
|
|
506
|
+
if (n <= 0)
|
|
507
|
+
return [];
|
|
508
|
+
// Diameter pair: the two profiles with the greatest pairwise distance.
|
|
509
|
+
let seedA = 0, seedB = 1, diameter = -1;
|
|
510
|
+
for (let i = 0; i < profiles.length; i++) {
|
|
511
|
+
for (let j = i + 1; j < profiles.length; j++) {
|
|
512
|
+
const d = cognitiveDistance(profiles[i], profiles[j]).w1;
|
|
513
|
+
if (d > diameter) {
|
|
514
|
+
diameter = d;
|
|
515
|
+
seedA = i;
|
|
516
|
+
seedB = j;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
if (n === 1)
|
|
521
|
+
return [profiles[seedA]];
|
|
522
|
+
const selected = [profiles[seedA], profiles[seedB]];
|
|
523
|
+
const remaining = new Set(profiles.filter((_, i) => i !== seedA && i !== seedB));
|
|
445
524
|
while (selected.length < n && remaining.size > 0) {
|
|
446
525
|
// Find the remaining profile farthest from all selected
|
|
447
526
|
let farthest = null;
|