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.
Files changed (59) hide show
  1. package/README.md +129 -26
  2. package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
  3. package/dist/analysis/agent-ready-audit.js +6 -1
  4. package/dist/analysis/agent-ready-audit.js.map +1 -1
  5. package/dist/browser.d.ts.map +1 -1
  6. package/dist/browser.js +2 -0
  7. package/dist/browser.js.map +1 -1
  8. package/dist/geo-proxy.d.ts +39 -0
  9. package/dist/geo-proxy.d.ts.map +1 -0
  10. package/dist/geo-proxy.js +109 -0
  11. package/dist/geo-proxy.js.map +1 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/mcp-server-remote.d.ts.map +1 -1
  17. package/dist/mcp-server-remote.js +29 -1
  18. package/dist/mcp-server-remote.js.map +1 -1
  19. package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
  20. package/dist/mcp-tools/base/audit-tools.js +519 -0
  21. package/dist/mcp-tools/base/audit-tools.js.map +1 -1
  22. package/dist/mcp-tools/base/persona-comparison-tools.d.ts.map +1 -1
  23. package/dist/mcp-tools/base/persona-comparison-tools.js +66 -7
  24. package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
  25. package/dist/mcp-tools/base/visual-testing-tools.d.ts.map +1 -1
  26. package/dist/mcp-tools/base/visual-testing-tools.js +141 -50
  27. package/dist/mcp-tools/base/visual-testing-tools.js.map +1 -1
  28. package/dist/mcp-tools/tool-categories.d.ts +28 -0
  29. package/dist/mcp-tools/tool-categories.d.ts.map +1 -0
  30. package/dist/mcp-tools/tool-categories.js +284 -0
  31. package/dist/mcp-tools/tool-categories.js.map +1 -0
  32. package/dist/types.d.ts +8 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/types.js +25 -0
  35. package/dist/types.js.map +1 -1
  36. package/dist/visual/attention-quality.d.ts +79 -0
  37. package/dist/visual/attention-quality.d.ts.map +1 -0
  38. package/dist/visual/attention-quality.js +199 -0
  39. package/dist/visual/attention-quality.js.map +1 -0
  40. package/dist/visual/attention-transport.d.ts.map +1 -1
  41. package/dist/visual/attention-transport.js +16 -5
  42. package/dist/visual/attention-transport.js.map +1 -1
  43. package/dist/visual/heatmap-overlay.d.ts +31 -0
  44. package/dist/visual/heatmap-overlay.d.ts.map +1 -0
  45. package/dist/visual/heatmap-overlay.js +139 -0
  46. package/dist/visual/heatmap-overlay.js.map +1 -0
  47. package/dist/visual/index.d.ts +3 -0
  48. package/dist/visual/index.d.ts.map +1 -1
  49. package/dist/visual/index.js +3 -0
  50. package/dist/visual/index.js.map +1 -1
  51. package/dist/visual/perceptual-transport.d.ts.map +1 -1
  52. package/dist/visual/perceptual-transport.js +28 -17
  53. package/dist/visual/perceptual-transport.js.map +1 -1
  54. package/dist/visual/visual-overlays.d.ts +73 -0
  55. package/dist/visual/visual-overlays.d.ts.map +1 -0
  56. package/dist/visual/visual-overlays.js +348 -0
  57. package/dist/visual/visual-overlays.js.map +1 -0
  58. package/docs/Tools-Overview.md +2 -2
  59. 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;AA8OD;;;;;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"}
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² = ||μ_center - μ_surround||² + Σ(√σ_center_i - √σ_surround_i)²
156
- const meanDist = (center.meanL - sMeanL) ** 2 + (center.meanA - sMeanA) ** 2 + (center.meanB - sMeanB) ** 2;
157
- const varDist = (Math.sqrt(center.varL) - Math.sqrt(sVarL)) ** 2 +
158
- (Math.sqrt(center.varA) - Math.sqrt(sVarA)) ** 2 +
159
- (Math.sqrt(center.varB) - Math.sqrt(sVarB)) ** 2;
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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
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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"}
@@ -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"}
@@ -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
@@ -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,CA8H7B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD"}
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
- let attentionBase = 0;
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
- attentionBase = 0.2 + attnEntropy * 0.2;
397
- break; // ADHD: high entropy = worse
400
+ personaAttentionBase = 0.3;
401
+ break;
398
402
  case 'center-heavy':
399
- attentionBase = 0.05 + (1 - attnConcentration) * 0.15;
400
- break; // Motor: scattered = worse
403
+ personaAttentionBase = 0.1;
404
+ break;
401
405
  case 'large-elements':
402
- attentionBase = 0.1 + attnEntropy * 0.15;
403
- break; // Low-vision
406
+ personaAttentionBase = 0.2;
407
+ break;
404
408
  case 'text-focused':
405
- attentionBase = 0.05 + attnEntropy * 0.1;
406
- break; // Dyslexia
409
+ personaAttentionBase = 0.1;
410
+ break;
407
411
  case 'uniform':
408
- attentionBase = 0.02 + attnEntropy * 0.05;
409
- break; // Default
412
+ personaAttentionBase = 0.05;
413
+ break;
410
414
  }
411
- const attentionMismatch = Math.min(1, attentionBase + processingFactor * 0.2 + pageVisualLoad * 0.3 + attnTransportCost * 0.2);
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
- // Cognitive load: persona tolerance × page density × attention scatter
415
- const cognitiveLoad = Math.min(1, (1 - filter.noiseTolerance) * 0.3 + processingFactor * 0.15 + informationLoss * 0.3 + attnEntropy * 0.25);
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 * 30
428
+ - informationLoss * 25
419
429
  - attentionMismatch * 20
420
- - motorCost * 25
421
- - cognitiveLoad * 25)));
430
+ - cognitiveLoad * 20
431
+ - motorCost * 10
432
+ + concentrationBonus)));
422
433
  return {
423
434
  persona: personaName,
424
435
  category: profile.category,