cbrowser 18.42.4 → 18.42.6
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/README.md +129 -26
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +6 -1
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -1
- package/dist/geo-proxy.d.ts +39 -0
- package/dist/geo-proxy.d.ts.map +1 -0
- package/dist/geo-proxy.js +109 -0
- package/dist/geo-proxy.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server-remote.d.ts.map +1 -1
- package/dist/mcp-server-remote.js +29 -1
- package/dist/mcp-server-remote.js.map +1 -1
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +519 -0
- package/dist/mcp-tools/base/audit-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 +66 -7
- package/dist/mcp-tools/base/persona-comparison-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 +141 -50
- package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
- package/dist/mcp-tools/tool-categories.d.ts +28 -0
- package/dist/mcp-tools/tool-categories.d.ts.map +1 -0
- package/dist/mcp-tools/tool-categories.js +284 -0
- package/dist/mcp-tools/tool-categories.js.map +1 -0
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -1
- package/dist/visual/attention-quality.d.ts +79 -0
- package/dist/visual/attention-quality.d.ts.map +1 -0
- package/dist/visual/attention-quality.js +199 -0
- package/dist/visual/attention-quality.js.map +1 -0
- package/dist/visual/attention-transport.d.ts.map +1 -1
- package/dist/visual/attention-transport.js +16 -5
- package/dist/visual/attention-transport.js.map +1 -1
- package/dist/visual/heatmap-overlay.d.ts +31 -0
- package/dist/visual/heatmap-overlay.d.ts.map +1 -0
- package/dist/visual/heatmap-overlay.js +139 -0
- package/dist/visual/heatmap-overlay.js.map +1 -0
- package/dist/visual/index.d.ts +3 -0
- package/dist/visual/index.d.ts.map +1 -1
- package/dist/visual/index.js +3 -0
- package/dist/visual/index.js.map +1 -1
- package/dist/visual/perceptual-transport.d.ts.map +1 -1
- package/dist/visual/perceptual-transport.js +28 -17
- package/dist/visual/perceptual-transport.js.map +1 -1
- package/dist/visual/visual-overlays.d.ts +73 -0
- package/dist/visual/visual-overlays.d.ts.map +1 -0
- package/dist/visual/visual-overlays.js +348 -0
- package/dist/visual/visual-overlays.js.map +1 -0
- package/docs/Tools-Overview.md +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attention Quality — bridges cognitive effort and visual saliency.
|
|
3
|
+
*
|
|
4
|
+
* Measures not just WHERE a persona looks, but whether they see
|
|
5
|
+
* the things that matter: CTAs, value props, and primary actions.
|
|
6
|
+
*
|
|
7
|
+
* Three components:
|
|
8
|
+
* 1. CTA Capture Rate — do top saliency zones overlap with CTAs?
|
|
9
|
+
* 2. Value Prop Salience — is the headline/message in top attention?
|
|
10
|
+
* 3. Distractor Ratio — how much attention goes to non-actionable elements?
|
|
11
|
+
*
|
|
12
|
+
* @since v18.39.0
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Compute attention quality by cross-referencing saliency hotspots
|
|
16
|
+
* with page structure (CTAs, headings, navigation, content).
|
|
17
|
+
*
|
|
18
|
+
* @param hotspots - Top saliency hotspots from attention_analysis
|
|
19
|
+
* @param pageElements - Interactive elements with bounding boxes from the page
|
|
20
|
+
* @param pageUnderstanding - Page structure from page_understand
|
|
21
|
+
* @param cellSize - Saliency grid cell size
|
|
22
|
+
*/
|
|
23
|
+
export function computeAttentionQuality(hotspots, pageElements, cellSize = 4) {
|
|
24
|
+
const topN = Math.min(20, hotspots.length);
|
|
25
|
+
const topHotspots = hotspots.slice(0, topN);
|
|
26
|
+
if (topHotspots.length === 0) {
|
|
27
|
+
return {
|
|
28
|
+
ctaCaptureRate: 0,
|
|
29
|
+
valuePropSalience: 0,
|
|
30
|
+
distractorRatio: 1,
|
|
31
|
+
qualityScore: 0,
|
|
32
|
+
topAttentionTargets: [],
|
|
33
|
+
interpretation: "No saliency data available.",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const totalTopSaliency = topHotspots.reduce((s, h) => s + h.saliency, 0) || 1;
|
|
37
|
+
let ctaSaliency = 0;
|
|
38
|
+
let headingSaliency = 0;
|
|
39
|
+
let navSaliency = 0;
|
|
40
|
+
let contentSaliency = 0;
|
|
41
|
+
let decorativeSaliency = 0;
|
|
42
|
+
let unknownSaliency = 0;
|
|
43
|
+
const targets = [];
|
|
44
|
+
for (const hotspot of topHotspots) {
|
|
45
|
+
const hx = hotspot.x;
|
|
46
|
+
const hy = hotspot.y;
|
|
47
|
+
const halfCell = cellSize;
|
|
48
|
+
// Find which element this hotspot overlaps with
|
|
49
|
+
let matched = false;
|
|
50
|
+
for (const el of pageElements) {
|
|
51
|
+
// Check if hotspot center is within element bounds (with padding)
|
|
52
|
+
const pad = 20; // pixels of tolerance
|
|
53
|
+
if (hx >= el.x - pad && hx <= el.x + el.width + pad &&
|
|
54
|
+
hy >= el.y - pad && hy <= el.y + el.height + pad) {
|
|
55
|
+
let type = "content";
|
|
56
|
+
if (el.isCTA) {
|
|
57
|
+
type = "cta";
|
|
58
|
+
ctaSaliency += hotspot.saliency;
|
|
59
|
+
}
|
|
60
|
+
else if (el.isHeading) {
|
|
61
|
+
type = "heading";
|
|
62
|
+
headingSaliency += hotspot.saliency;
|
|
63
|
+
}
|
|
64
|
+
else if (el.isNav) {
|
|
65
|
+
type = "navigation";
|
|
66
|
+
navSaliency += hotspot.saliency;
|
|
67
|
+
}
|
|
68
|
+
else if (el.isDecorative) {
|
|
69
|
+
type = "decorative";
|
|
70
|
+
decorativeSaliency += hotspot.saliency;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
contentSaliency += hotspot.saliency;
|
|
74
|
+
}
|
|
75
|
+
targets.push({
|
|
76
|
+
type,
|
|
77
|
+
element: el.text?.slice(0, 50) || el.selector,
|
|
78
|
+
saliency: Math.round(hotspot.saliency * 1000) / 1000,
|
|
79
|
+
});
|
|
80
|
+
matched = true;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!matched) {
|
|
85
|
+
unknownSaliency += hotspot.saliency;
|
|
86
|
+
targets.push({
|
|
87
|
+
type: "unknown",
|
|
88
|
+
element: `(${hx}, ${hy})`,
|
|
89
|
+
saliency: Math.round(hotspot.saliency * 1000) / 1000,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Compute rates
|
|
94
|
+
const ctaCaptureRate = ctaSaliency / totalTopSaliency;
|
|
95
|
+
const valuePropSalience = (headingSaliency + ctaSaliency) / totalTopSaliency;
|
|
96
|
+
const distractorRatio = (decorativeSaliency + unknownSaliency + navSaliency) / totalTopSaliency;
|
|
97
|
+
// Quality score: rewards CTA capture and value prop, penalizes distractors
|
|
98
|
+
// Target: 100 = all top attention on CTAs and value prop, 0 = all on distractors
|
|
99
|
+
const qualityScore = Math.max(0, Math.min(100, Math.round(ctaCaptureRate * 40 + // 40 points for CTA capture
|
|
100
|
+
valuePropSalience * 30 + // 30 points for value prop visibility
|
|
101
|
+
(1 - distractorRatio) * 30 // 30 points for low distraction
|
|
102
|
+
)));
|
|
103
|
+
// Interpretation
|
|
104
|
+
let interpretation;
|
|
105
|
+
if (ctaCaptureRate > 0.3 && valuePropSalience > 0.5) {
|
|
106
|
+
interpretation = "Strong attention quality — the persona sees the value prop and CTAs. Design intent is working.";
|
|
107
|
+
}
|
|
108
|
+
else if (ctaCaptureRate > 0.1 && valuePropSalience > 0.3) {
|
|
109
|
+
interpretation = "Moderate attention quality — the persona partially sees key elements but attention is split with other content.";
|
|
110
|
+
}
|
|
111
|
+
else if (distractorRatio > 0.5) {
|
|
112
|
+
interpretation = "Poor attention quality — more than half of top attention goes to non-actionable elements. CTAs and value prop are not capturing attention.";
|
|
113
|
+
}
|
|
114
|
+
else if (ctaCaptureRate < 0.05) {
|
|
115
|
+
interpretation = "CTAs are invisible to this persona — none of the top saliency zones overlap with calls to action. Consider making CTAs larger, higher-contrast, or more prominently positioned.";
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
interpretation = "Mixed attention quality — attention is distributed across the page without strong focus on conversion elements.";
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
ctaCaptureRate: Math.round(ctaCaptureRate * 1000) / 1000,
|
|
122
|
+
valuePropSalience: Math.round(valuePropSalience * 1000) / 1000,
|
|
123
|
+
distractorRatio: Math.round(distractorRatio * 1000) / 1000,
|
|
124
|
+
qualityScore,
|
|
125
|
+
topAttentionTargets: targets.slice(0, 10),
|
|
126
|
+
interpretation,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Extract element metadata from a Playwright page for attention quality analysis.
|
|
131
|
+
* Returns elements with bounding boxes and type classifications.
|
|
132
|
+
*/
|
|
133
|
+
export async function extractPageElementsForAttention(page) {
|
|
134
|
+
const p = page;
|
|
135
|
+
return p.evaluate(() => {
|
|
136
|
+
const elements = [];
|
|
137
|
+
// CTAs: buttons with action text, prominent links
|
|
138
|
+
const ctaPatterns = /apply|sign.?up|register|get.?started|buy|order|subscribe|enroll|join|donate|download|try|start|begin|contact|request|book/i;
|
|
139
|
+
// Headings
|
|
140
|
+
document.querySelectorAll("h1, h2, h3").forEach(el => {
|
|
141
|
+
const rect = el.getBoundingClientRect();
|
|
142
|
+
if (rect.width === 0 || rect.height === 0)
|
|
143
|
+
return;
|
|
144
|
+
const text = el.innerText?.trim() || "";
|
|
145
|
+
elements.push({
|
|
146
|
+
selector: el.tagName.toLowerCase(),
|
|
147
|
+
text,
|
|
148
|
+
type: "heading",
|
|
149
|
+
x: rect.x, y: rect.y, width: rect.width, height: rect.height,
|
|
150
|
+
isHeading: true,
|
|
151
|
+
isCTA: false,
|
|
152
|
+
isNav: false,
|
|
153
|
+
isDecorative: false,
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
// Buttons and links
|
|
157
|
+
document.querySelectorAll('a, button, [role="button"], input[type="submit"]').forEach(el => {
|
|
158
|
+
const rect = el.getBoundingClientRect();
|
|
159
|
+
if (rect.width === 0 || rect.height === 0)
|
|
160
|
+
return;
|
|
161
|
+
const text = el.innerText?.trim() || el.value || "";
|
|
162
|
+
const isNav = !!(el.closest("nav") || el.closest('[role="navigation"]'));
|
|
163
|
+
const isCTA = !isNav && (ctaPatterns.test(text) ||
|
|
164
|
+
el.classList.toString().match(/cta|primary|action|hero/i) !== null ||
|
|
165
|
+
(rect.width > 120 && rect.height > 36 && !isNav) // large standalone button
|
|
166
|
+
);
|
|
167
|
+
elements.push({
|
|
168
|
+
selector: el.tagName.toLowerCase() + (text ? `[${text.slice(0, 20)}]` : ""),
|
|
169
|
+
text,
|
|
170
|
+
type: isCTA ? "cta" : isNav ? "navigation" : "link",
|
|
171
|
+
x: rect.x, y: rect.y, width: rect.width, height: rect.height,
|
|
172
|
+
isHeading: false,
|
|
173
|
+
isCTA: !!isCTA,
|
|
174
|
+
isNav,
|
|
175
|
+
isDecorative: false,
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
// Images (decorative)
|
|
179
|
+
document.querySelectorAll("img, svg, video").forEach(el => {
|
|
180
|
+
const rect = el.getBoundingClientRect();
|
|
181
|
+
if (rect.width < 50 || rect.height < 50)
|
|
182
|
+
return; // skip tiny icons
|
|
183
|
+
const alt = el.alt || "";
|
|
184
|
+
const isDecorative = !alt || alt === "" || el.getAttribute("role") === "presentation";
|
|
185
|
+
elements.push({
|
|
186
|
+
selector: el.tagName.toLowerCase(),
|
|
187
|
+
text: alt.slice(0, 50),
|
|
188
|
+
type: "image",
|
|
189
|
+
x: rect.x, y: rect.y, width: rect.width, height: rect.height,
|
|
190
|
+
isHeading: false,
|
|
191
|
+
isCTA: false,
|
|
192
|
+
isNav: false,
|
|
193
|
+
isDecorative,
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
return elements;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=attention-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attention-quality.js","sourceRoot":"","sources":["../../src/visual/attention-quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attention-transport.d.ts","sourceRoot":"","sources":["../../src/visual/attention-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,YAAY,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,QAAQ,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,8FAA8F;IAC9F,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,oBAAoB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,gBAAgB,EAAE,KAAK,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"attention-transport.d.ts","sourceRoot":"","sources":["../../src/visual/attention-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,YAAY,CAAC;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,QAAQ,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,iBAAiB;IAChC,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,8FAA8F;IAC9F,cAAc,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,oBAAoB,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,gBAAgB,EAAE,KAAK,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AA0PD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAwF5B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,yBAAyB,CAAC,CA2CpC"}
|
|
@@ -152,11 +152,22 @@ async function computeLabSaliency(imagePath, cellSize = 16, surroundRadius = 3)
|
|
|
152
152
|
sVarA /= sCount;
|
|
153
153
|
sVarB /= sCount;
|
|
154
154
|
// Bures-Wasserstein distance for 3D Gaussians (diagonal covariance)
|
|
155
|
-
// BW² =
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
// BW² = w_L||ΔL||² + w_a||Δa||² + w_b||Δb||² + variance terms
|
|
156
|
+
//
|
|
157
|
+
// Chrominance boost: a/b channels weighted 3x relative to L.
|
|
158
|
+
// This captures the preattentive "pop-out effect" where a uniquely-colored
|
|
159
|
+
// item captures attention even when its luminance is similar to surroundings.
|
|
160
|
+
// Without this, teal text on white scores LOWER than black text on white
|
|
161
|
+
// because teal has less luminance contrast — the opposite of perceptual reality.
|
|
162
|
+
const wL = 1.0; // luminance weight
|
|
163
|
+
const wA = 3.0; // chrominance a* weight (red-green axis)
|
|
164
|
+
const wB = 3.0; // chrominance b* weight (blue-yellow axis)
|
|
165
|
+
const meanDist = wL * (center.meanL - sMeanL) ** 2 +
|
|
166
|
+
wA * (center.meanA - sMeanA) ** 2 +
|
|
167
|
+
wB * (center.meanB - sMeanB) ** 2;
|
|
168
|
+
const varDist = wL * (Math.sqrt(center.varL) - Math.sqrt(sVarL)) ** 2 +
|
|
169
|
+
wA * (Math.sqrt(center.varA) - Math.sqrt(sVarA)) ** 2 +
|
|
170
|
+
wB * (Math.sqrt(center.varB) - Math.sqrt(sVarB)) ** 2;
|
|
160
171
|
saliency[idx] = Math.sqrt(meanDist + varDist);
|
|
161
172
|
}
|
|
162
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attention-transport.js","sourceRoot":"","sources":["../../src/visual/attention-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attention-transport.js","sourceRoot":"","sources":["../../src/visual/attention-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heatmap Overlay Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates heatmap PNG overlays from saliency/attention data.
|
|
5
|
+
* Returns base64-encoded images for inline display in MCP responses.
|
|
6
|
+
*
|
|
7
|
+
* @since v18.39.0
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Generate a heatmap overlay on top of a screenshot.
|
|
11
|
+
*
|
|
12
|
+
* @param screenshotPath - Path to the base screenshot
|
|
13
|
+
* @param cells - Saliency/attention values (0-1), row-major
|
|
14
|
+
* @param gridRows - Grid rows
|
|
15
|
+
* @param gridCols - Grid columns
|
|
16
|
+
* @param label - Label text for the heatmap (e.g., "ADHD Attention")
|
|
17
|
+
* @returns Base64-encoded PNG
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateHeatmapOverlay(screenshotPath: string, cells: Float64Array | number[], gridRows: number, gridCols: number, label?: string): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a simple heatmap image (no screenshot overlay).
|
|
22
|
+
*
|
|
23
|
+
* @param cells - Values (0-1), row-major
|
|
24
|
+
* @param gridRows - Grid rows
|
|
25
|
+
* @param gridCols - Grid columns
|
|
26
|
+
* @param width - Output width
|
|
27
|
+
* @param height - Output height
|
|
28
|
+
* @returns Base64-encoded PNG
|
|
29
|
+
*/
|
|
30
|
+
export declare function generateHeatmapImage(cells: Float64Array | number[], gridRows: number, gridCols: number, width?: number, height?: number): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=heatmap-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap-overlay.d.ts","sourceRoot":"","sources":["../../src/visual/heatmap-overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmFH;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAY,EACnB,MAAM,GAAE,MAAY,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heatmap Overlay Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates heatmap PNG overlays from saliency/attention data.
|
|
5
|
+
* Returns base64-encoded images for inline display in MCP responses.
|
|
6
|
+
*
|
|
7
|
+
* @since v18.39.0
|
|
8
|
+
*/
|
|
9
|
+
import sharp from "sharp";
|
|
10
|
+
// Heatmap color palette — blue (low) → green → yellow → red (high)
|
|
11
|
+
const HEATMAP_COLORS = [
|
|
12
|
+
[0, 0, 128], // 0.0 — dark blue
|
|
13
|
+
[0, 0, 255], // 0.1 — blue
|
|
14
|
+
[0, 128, 255], // 0.2 — light blue
|
|
15
|
+
[0, 255, 255], // 0.3 — cyan
|
|
16
|
+
[0, 255, 128], // 0.4 — green-cyan
|
|
17
|
+
[0, 255, 0], // 0.5 — green
|
|
18
|
+
[128, 255, 0], // 0.6 — yellow-green
|
|
19
|
+
[255, 255, 0], // 0.7 — yellow
|
|
20
|
+
[255, 128, 0], // 0.8 — orange
|
|
21
|
+
[255, 0, 0], // 0.9 — red
|
|
22
|
+
[128, 0, 0], // 1.0 — dark red
|
|
23
|
+
];
|
|
24
|
+
function getHeatColor(value) {
|
|
25
|
+
const v = Math.max(0, Math.min(1, value));
|
|
26
|
+
const idx = v * (HEATMAP_COLORS.length - 1);
|
|
27
|
+
const lo = Math.floor(idx);
|
|
28
|
+
const hi = Math.min(lo + 1, HEATMAP_COLORS.length - 1);
|
|
29
|
+
const t = idx - lo;
|
|
30
|
+
const r = Math.round(HEATMAP_COLORS[lo][0] * (1 - t) + HEATMAP_COLORS[hi][0] * t);
|
|
31
|
+
const g = Math.round(HEATMAP_COLORS[lo][1] * (1 - t) + HEATMAP_COLORS[hi][1] * t);
|
|
32
|
+
const b = Math.round(HEATMAP_COLORS[lo][2] * (1 - t) + HEATMAP_COLORS[hi][2] * t);
|
|
33
|
+
// Alpha: transparent for low values, opaque for high
|
|
34
|
+
const a = Math.round(v * 180 + 20); // 20-200 range
|
|
35
|
+
return [r, g, b, a];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate a heatmap overlay from a grid of values.
|
|
39
|
+
*
|
|
40
|
+
* @param cells - 1D array of values (0-1), row-major order
|
|
41
|
+
* @param gridRows - number of rows in the grid
|
|
42
|
+
* @param gridCols - number of columns in the grid
|
|
43
|
+
* @param targetWidth - output image width
|
|
44
|
+
* @param targetHeight - output image height
|
|
45
|
+
* @returns Raw RGBA buffer at target dimensions
|
|
46
|
+
*/
|
|
47
|
+
function generateHeatmapBuffer(cells, gridRows, gridCols, targetWidth, targetHeight) {
|
|
48
|
+
// Normalize cells to 0-1
|
|
49
|
+
let maxVal = 0;
|
|
50
|
+
for (let i = 0; i < cells.length; i++) {
|
|
51
|
+
if (cells[i] > maxVal)
|
|
52
|
+
maxVal = cells[i];
|
|
53
|
+
}
|
|
54
|
+
if (maxVal === 0)
|
|
55
|
+
maxVal = 1;
|
|
56
|
+
const buf = Buffer.alloc(targetWidth * targetHeight * 4);
|
|
57
|
+
const cellW = targetWidth / gridCols;
|
|
58
|
+
const cellH = targetHeight / gridRows;
|
|
59
|
+
for (let y = 0; y < targetHeight; y++) {
|
|
60
|
+
for (let x = 0; x < targetWidth; x++) {
|
|
61
|
+
const gridRow = Math.min(Math.floor(y / cellH), gridRows - 1);
|
|
62
|
+
const gridCol = Math.min(Math.floor(x / cellW), gridCols - 1);
|
|
63
|
+
const cellIdx = gridRow * gridCols + gridCol;
|
|
64
|
+
const value = cells[cellIdx] / maxVal;
|
|
65
|
+
const [r, g, b, a] = getHeatColor(value);
|
|
66
|
+
const px = (y * targetWidth + x) * 4;
|
|
67
|
+
buf[px] = r;
|
|
68
|
+
buf[px + 1] = g;
|
|
69
|
+
buf[px + 2] = b;
|
|
70
|
+
buf[px + 3] = a;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return buf;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate a heatmap overlay on top of a screenshot.
|
|
77
|
+
*
|
|
78
|
+
* @param screenshotPath - Path to the base screenshot
|
|
79
|
+
* @param cells - Saliency/attention values (0-1), row-major
|
|
80
|
+
* @param gridRows - Grid rows
|
|
81
|
+
* @param gridCols - Grid columns
|
|
82
|
+
* @param label - Label text for the heatmap (e.g., "ADHD Attention")
|
|
83
|
+
* @returns Base64-encoded PNG
|
|
84
|
+
*/
|
|
85
|
+
export async function generateHeatmapOverlay(screenshotPath, cells, gridRows, gridCols, label) {
|
|
86
|
+
// Get screenshot dimensions
|
|
87
|
+
const metadata = await sharp(screenshotPath).metadata();
|
|
88
|
+
const width = metadata.width || 1920;
|
|
89
|
+
const height = metadata.height || 1080;
|
|
90
|
+
// Generate heatmap RGBA buffer
|
|
91
|
+
const heatBuf = generateHeatmapBuffer(cells, gridRows, gridCols, width, height);
|
|
92
|
+
// Convert heatmap buffer to PNG with Gaussian blur for smooth appearance
|
|
93
|
+
// Blur radius scales with cell size — larger cells get more blur to eliminate blockiness
|
|
94
|
+
const cellW = width / gridCols;
|
|
95
|
+
const blurSigma = Math.max(1, Math.round(cellW * 0.6));
|
|
96
|
+
const heatmapPng = await sharp(heatBuf, {
|
|
97
|
+
raw: { width, height, channels: 4 },
|
|
98
|
+
}).blur(blurSigma).png().toBuffer();
|
|
99
|
+
// Build composite layers
|
|
100
|
+
const layers = [
|
|
101
|
+
{ input: heatmapPng, blend: "over" },
|
|
102
|
+
];
|
|
103
|
+
// Add label if provided
|
|
104
|
+
if (label) {
|
|
105
|
+
const escapedLabel = label.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
106
|
+
const labelWidth = escapedLabel.length * 11 + 24;
|
|
107
|
+
const labelSvg = Buffer.from(`<svg width="${labelWidth}" height="36">
|
|
108
|
+
<rect x="0" y="0" width="${labelWidth}" height="36" rx="6" fill="rgba(0,0,0,0.75)"/>
|
|
109
|
+
<text x="12" y="24" font-family="sans-serif" font-size="16" fill="white" font-weight="bold">${escapedLabel}</text>
|
|
110
|
+
</svg>`);
|
|
111
|
+
layers.push({ input: labelSvg, top: 10, left: 10, blend: "over" });
|
|
112
|
+
}
|
|
113
|
+
// Grayscale + darken base so heatmap colors pop
|
|
114
|
+
const outputBuffer = await sharp(screenshotPath)
|
|
115
|
+
.grayscale()
|
|
116
|
+
.modulate({ brightness: 0.7 })
|
|
117
|
+
.composite(layers)
|
|
118
|
+
.png()
|
|
119
|
+
.toBuffer();
|
|
120
|
+
return outputBuffer.toString("base64");
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate a simple heatmap image (no screenshot overlay).
|
|
124
|
+
*
|
|
125
|
+
* @param cells - Values (0-1), row-major
|
|
126
|
+
* @param gridRows - Grid rows
|
|
127
|
+
* @param gridCols - Grid columns
|
|
128
|
+
* @param width - Output width
|
|
129
|
+
* @param height - Output height
|
|
130
|
+
* @returns Base64-encoded PNG
|
|
131
|
+
*/
|
|
132
|
+
export async function generateHeatmapImage(cells, gridRows, gridCols, width = 960, height = 540) {
|
|
133
|
+
const heatBuf = generateHeatmapBuffer(cells, gridRows, gridCols, width, height);
|
|
134
|
+
const outputBuffer = await sharp(heatBuf, {
|
|
135
|
+
raw: { width, height, channels: 4 },
|
|
136
|
+
}).png().toBuffer();
|
|
137
|
+
return outputBuffer.toString("base64");
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=heatmap-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heatmap-overlay.js","sourceRoot":"","sources":["../../src/visual/heatmap-overlay.ts"],"names":[],"mappings":"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"}
|
package/dist/visual/index.d.ts
CHANGED
|
@@ -18,4 +18,7 @@ export * from "./cognitive-transport.js";
|
|
|
18
18
|
export * from "./cognitive-transport-chain.js";
|
|
19
19
|
export * from "./cognitive-models.js";
|
|
20
20
|
export * from "./attention-transport.js";
|
|
21
|
+
export * from "./heatmap-overlay.js";
|
|
22
|
+
export * from "./attention-quality.js";
|
|
23
|
+
export * from "./visual-overlays.js";
|
|
21
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visual/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visual/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
package/dist/visual/index.js
CHANGED
|
@@ -18,4 +18,7 @@ export * from "./cognitive-transport.js";
|
|
|
18
18
|
export * from "./cognitive-transport-chain.js";
|
|
19
19
|
export * from "./cognitive-models.js";
|
|
20
20
|
export * from "./attention-transport.js";
|
|
21
|
+
export * from "./heatmap-overlay.js";
|
|
22
|
+
export * from "./attention-quality.js";
|
|
23
|
+
export * from "./visual-overlays.js";
|
|
21
24
|
//# sourceMappingURL=index.js.map
|
package/dist/visual/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visual/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visual/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perceptual-transport.d.ts","sourceRoot":"","sources":["../../src/visual/perceptual-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IACnE,4FAA4F;IAC5F,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,2CAA2C;IAC3C,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,aAAa,EAAE,SAAS,GAAG,cAAc,GAAG,kBAAkB,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACnG,oFAAoF;IACpF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,eAAe,EAAE,MAAM,CAAC;IACxB,gHAAgH;IAChH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAwMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAE3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,cAAc,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACzC,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,MAAM,GAClB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CA6FA;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"perceptual-transport.d.ts","sourceRoot":"","sources":["../../src/visual/perceptual-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IACnE,4FAA4F;IAC5F,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,2CAA2C;IAC3C,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,aAAa,EAAE,SAAS,GAAG,cAAc,GAAG,kBAAkB,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACnG,oFAAoF;IACpF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,eAAe,EAAE,MAAM,CAAC;IACxB,gHAAgH;IAChH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,SAAS,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAwMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAE3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrE,cAAc,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACzC,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,MAAM,GAClB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CA6FA;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,kBAAkB,CAAC,CAwI7B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD"}
|
|
@@ -390,35 +390,46 @@ export async function analyzePerceptualTransport(screenshotPath, personaName, at
|
|
|
390
390
|
const attnEntropy = attentionData?.entropy ?? 0.5;
|
|
391
391
|
const attnConcentration = attentionData?.concentration ?? 0.5;
|
|
392
392
|
const attnTransportCost = attentionData?.transportCost ?? 0;
|
|
393
|
-
|
|
393
|
+
console.log(`[perceptual] attentionData=${attentionData ? 'YES' : 'NO'} entropy=${attnEntropy.toFixed(3)} concentration=${attnConcentration.toFixed(3)} transportCost=${attnTransportCost.toFixed(3)}`);
|
|
394
|
+
// Concentration scatter: the most discriminating page metric (63% range in testing)
|
|
395
|
+
const scatterCost = (1 - attnConcentration); // 0.44 for cbrowser, 0.66 for UCDenver
|
|
396
|
+
// attentionMismatch: 50% page-driven (scatter + transport), 50% persona
|
|
397
|
+
let personaAttentionBase = 0;
|
|
394
398
|
switch (filter.attentionMode) {
|
|
395
399
|
case 'motion-attracted':
|
|
396
|
-
|
|
397
|
-
break;
|
|
400
|
+
personaAttentionBase = 0.3;
|
|
401
|
+
break;
|
|
398
402
|
case 'center-heavy':
|
|
399
|
-
|
|
400
|
-
break;
|
|
403
|
+
personaAttentionBase = 0.1;
|
|
404
|
+
break;
|
|
401
405
|
case 'large-elements':
|
|
402
|
-
|
|
403
|
-
break;
|
|
406
|
+
personaAttentionBase = 0.2;
|
|
407
|
+
break;
|
|
404
408
|
case 'text-focused':
|
|
405
|
-
|
|
406
|
-
break;
|
|
409
|
+
personaAttentionBase = 0.1;
|
|
410
|
+
break;
|
|
407
411
|
case 'uniform':
|
|
408
|
-
|
|
409
|
-
break;
|
|
412
|
+
personaAttentionBase = 0.05;
|
|
413
|
+
break;
|
|
410
414
|
}
|
|
411
|
-
const attentionMismatch = Math.min(1,
|
|
415
|
+
const attentionMismatch = Math.min(1, personaAttentionBase * 0.3 + processingFactor * 0.1 + // 40% persona
|
|
416
|
+
scatterCost * 0.35 + attnTransportCost * 0.25 // 60% page
|
|
417
|
+
);
|
|
412
418
|
// Motor cost: persona motor multiplier × page spatial complexity
|
|
413
419
|
const motorCost = Math.min(1, ((filter.motorCostMultiplier - 1) / 2) * (0.3 + spatialComplexity * 0.7));
|
|
414
|
-
//
|
|
415
|
-
const cognitiveLoad = Math.min(1, (1 - filter.noiseTolerance) * 0.
|
|
420
|
+
// cognitiveLoad: 60% page-driven (scatter + information + entropy), 40% persona
|
|
421
|
+
const cognitiveLoad = Math.min(1, (1 - filter.noiseTolerance) * 0.15 + processingFactor * 0.05 + // 20% persona
|
|
422
|
+
scatterCost * 0.4 + informationLoss * 0.2 + attnEntropy * 0.2 // 80% page
|
|
423
|
+
);
|
|
416
424
|
// Composite perceptual score
|
|
425
|
+
// Direct concentration term ensures the most discriminating signal drives the score
|
|
426
|
+
const concentrationBonus = (attnConcentration - 0.45) * 20; // ±11 points
|
|
417
427
|
const perceptualScore = Math.max(0, Math.min(100, Math.round(100
|
|
418
|
-
- informationLoss *
|
|
428
|
+
- informationLoss * 25
|
|
419
429
|
- attentionMismatch * 20
|
|
420
|
-
-
|
|
421
|
-
-
|
|
430
|
+
- cognitiveLoad * 20
|
|
431
|
+
- motorCost * 10
|
|
432
|
+
+ concentrationBonus)));
|
|
422
433
|
return {
|
|
423
434
|
persona: personaName,
|
|
424
435
|
category: profile.category,
|