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
|
@@ -16,6 +16,7 @@ export function registerAuditTools(server) {
|
|
|
16
16
|
description: "Audit a website for AI-agent friendliness. Analyzes findability, stability, accessibility, and semantics. Returns score (0-100), grade (A-F), issues, and remediation recommendations.",
|
|
17
17
|
inputSchema: {
|
|
18
18
|
url: z.string().url().describe("URL to audit"),
|
|
19
|
+
userLanguage: z.string().optional().describe("User's expected language (e.g., 'en-US') — for content language validation"),
|
|
19
20
|
},
|
|
20
21
|
annotations: {
|
|
21
22
|
title: "Agent-Ready Audit",
|
|
@@ -95,6 +96,8 @@ export function registerAuditTools(server) {
|
|
|
95
96
|
wcagLevel: z.enum(["A", "AA", "AAA"]).optional().default("AA").describe("WCAG conformance level"),
|
|
96
97
|
maxSteps: z.number().optional().default(5).describe("Max cognitive journey steps (keep low for MCP)"),
|
|
97
98
|
maxTime: z.number().optional().default(20).describe("Max time per persona in seconds"),
|
|
99
|
+
userLocation: z.string().optional().describe("User's approximate location (e.g., 'Denver, Colorado, US')"),
|
|
100
|
+
userLanguage: z.string().optional().describe("User's expected language (e.g., 'en-US') — affects readability scoring"),
|
|
98
101
|
},
|
|
99
102
|
annotations: {
|
|
100
103
|
title: "Empathy Accessibility Audit",
|
|
@@ -270,5 +273,521 @@ export function registerAuditTools(server) {
|
|
|
270
273
|
],
|
|
271
274
|
};
|
|
272
275
|
});
|
|
276
|
+
// ── Site Cognitive Assessment (Composite Pipeline) ──
|
|
277
|
+
server.registerTool("site_cognitive_assessment", {
|
|
278
|
+
title: "Site Cognitive Assessment",
|
|
279
|
+
description: "Three-gate pipeline: (1) bot-detection probe, (2) agent-ready qualification, (3) per-persona cognitive effort analysis. Prevents misleading scores on blocked or broken pages. Returns unified report with gate results, per-persona transport costs, and recommendations.",
|
|
280
|
+
inputSchema: {
|
|
281
|
+
url: z.string().url().describe("URL to assess"),
|
|
282
|
+
personas: z.string().optional().default("first-timer,cognitive-adhd").describe("Comma-separated persona names (default: first-timer,cognitive-adhd)"),
|
|
283
|
+
threshold: z.number().optional().default(60).describe("Minimum agent-ready score to proceed to persona analysis (default: 60)"),
|
|
284
|
+
userLocation: z.string().optional().describe("User's approximate location (e.g., 'Denver, Colorado, US') — for geo-aware content expectations"),
|
|
285
|
+
userTimezone: z.string().optional().describe("User's timezone (e.g., 'America/Denver') — for time-sensitive content evaluation"),
|
|
286
|
+
userLanguage: z.string().optional().describe("User's expected language (e.g., 'en-US') — for readability calibration"),
|
|
287
|
+
proxy: z.string().optional().describe("Proxy server URL for geo-accurate testing (e.g., 'http://user:pass@proxy.example.com:12321'). Routes browser through the proxy so sites see the proxy's IP/location instead of the server's."),
|
|
288
|
+
geoRegion: z.string().optional().describe("Route through a residential proxy in this region. Available: us-west, us-east, us-central, uk, germany, japan. Overrides proxy parameter."),
|
|
289
|
+
device: z.string().optional().describe("Device emulation: 'mobile', 'tablet', 'desktop', or specific device like 'iPhone 15'. Default: desktop."),
|
|
290
|
+
},
|
|
291
|
+
annotations: {
|
|
292
|
+
title: "Site Cognitive Assessment",
|
|
293
|
+
readOnlyHint: true,
|
|
294
|
+
destructiveHint: false,
|
|
295
|
+
idempotentHint: false,
|
|
296
|
+
openWorldHint: true,
|
|
297
|
+
},
|
|
298
|
+
}, async ({ url, personas, threshold, userLocation, userTimezone, userLanguage, proxy, geoRegion }) => {
|
|
299
|
+
const startTime = Date.now();
|
|
300
|
+
const personaList = (personas || "first-timer,cognitive-adhd").split(",").map(s => s.trim()).filter(Boolean);
|
|
301
|
+
// Derive locale from userLanguage (e.g., "en-US" → locale "en-US", language "en")
|
|
302
|
+
const expectedLocale = userLanguage || "en-US";
|
|
303
|
+
const expectedLang = expectedLocale.split("-")[0] || "en";
|
|
304
|
+
const response = {
|
|
305
|
+
url,
|
|
306
|
+
personas: personaList,
|
|
307
|
+
threshold,
|
|
308
|
+
userContext: {
|
|
309
|
+
location: userLocation || null,
|
|
310
|
+
timezone: userTimezone || null,
|
|
311
|
+
language: expectedLocale,
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
// ── Gate 1: Bot Detection Probe ──
|
|
315
|
+
try {
|
|
316
|
+
const { CBrowser: BrowserClass } = await import("../../browser.js");
|
|
317
|
+
// Set browser locale to match user's expected language
|
|
318
|
+
// Resolve geoRegion to proxy config (overrides raw proxy)
|
|
319
|
+
if (geoRegion && !proxy) {
|
|
320
|
+
const { getGeoProxy } = await import("../../geo-proxy.js");
|
|
321
|
+
const geoProxy = getGeoProxy(geoRegion);
|
|
322
|
+
if (geoProxy) {
|
|
323
|
+
proxy = `http://${encodeURIComponent(geoProxy.username)}:${encodeURIComponent(geoProxy.password)}@${geoProxy.server.replace('http://', '')}`;
|
|
324
|
+
response.geoRegion = geoRegion;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Parse proxy URL if provided (format: socks5://user:pass@host:port or http://host:port)
|
|
328
|
+
const proxyConfig = proxy ? (() => {
|
|
329
|
+
try {
|
|
330
|
+
const u = new URL(proxy);
|
|
331
|
+
return {
|
|
332
|
+
server: `${u.protocol}//${u.hostname}:${u.port}`,
|
|
333
|
+
...(u.username ? { username: decodeURIComponent(u.username) } : {}),
|
|
334
|
+
...(u.password ? { password: decodeURIComponent(u.password) } : {}),
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
return { server: proxy };
|
|
339
|
+
}
|
|
340
|
+
})() : undefined;
|
|
341
|
+
const browser = new BrowserClass({
|
|
342
|
+
headless: true,
|
|
343
|
+
locale: expectedLocale,
|
|
344
|
+
...(userTimezone ? { timezone: userTimezone } : {}),
|
|
345
|
+
...(proxyConfig ? { proxy: proxyConfig, timeout: 60000 } : {}),
|
|
346
|
+
});
|
|
347
|
+
await browser.launch();
|
|
348
|
+
try {
|
|
349
|
+
const navResult = await browser.navigate(url);
|
|
350
|
+
const page = await browser.getPage();
|
|
351
|
+
const pageTitle = await page.title().catch(() => "");
|
|
352
|
+
const bodyText = await page.evaluate(() => document.body?.innerText?.slice(0, 500) || "").catch(() => "");
|
|
353
|
+
const elementCount = await page.evaluate(() => document.querySelectorAll("a, button, input, select, textarea").length).catch(() => 0);
|
|
354
|
+
const BLOCK_SIGNATURES = [
|
|
355
|
+
"access denied", "403 forbidden", "just a moment", "press & hold",
|
|
356
|
+
"verify you are human", "captcha", "blocked", "robot check",
|
|
357
|
+
"cloudflare", "please wait", "checking your browser",
|
|
358
|
+
];
|
|
359
|
+
const lowerTitle = pageTitle.toLowerCase();
|
|
360
|
+
const lowerBody = bodyText.toLowerCase();
|
|
361
|
+
const blockSignature = BLOCK_SIGNATURES.find(sig => lowerTitle.includes(sig) || lowerBody.includes(sig));
|
|
362
|
+
const isEmpty = elementCount < 5 && bodyText.length < 100;
|
|
363
|
+
// Language mismatch detection
|
|
364
|
+
const pageLang = await page.evaluate(() => document.documentElement.lang || "").catch(() => "");
|
|
365
|
+
const pageLangShort = pageLang.split("-")[0].toLowerCase();
|
|
366
|
+
const languageMismatch = pageLangShort && pageLangShort !== expectedLang && pageLangShort !== "";
|
|
367
|
+
if (languageMismatch) {
|
|
368
|
+
response.languageWarning = {
|
|
369
|
+
expected: expectedLocale,
|
|
370
|
+
detected: pageLang,
|
|
371
|
+
message: `Page language "${pageLang}" does not match expected "${expectedLocale}". The site may be geo-detecting the server's IP rather than the user's locale. Content scoring may not reflect the user's actual experience.`,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
if (blockSignature || isEmpty) {
|
|
375
|
+
response.gate1 = {
|
|
376
|
+
status: "blocked",
|
|
377
|
+
signature: blockSignature || "empty page",
|
|
378
|
+
pageTitle,
|
|
379
|
+
elementCount,
|
|
380
|
+
bodyLength: bodyText.length,
|
|
381
|
+
};
|
|
382
|
+
response.result = "BLOCKED";
|
|
383
|
+
response.message = `Site is bot-blocked (${blockSignature || "empty DOM"}). Cannot assess cognitive experience. Try with stealth mode enabled or use a staging URL.`;
|
|
384
|
+
response.duration = `${Date.now() - startTime}ms`;
|
|
385
|
+
await browser.close();
|
|
386
|
+
return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }] };
|
|
387
|
+
}
|
|
388
|
+
response.gate1 = { status: "accessible", pageTitle, elementCount };
|
|
389
|
+
// ── Gate 2: Agent-Ready Audit ──
|
|
390
|
+
try {
|
|
391
|
+
const auditResult = await runAgentReadyAudit(url, {
|
|
392
|
+
headless: true,
|
|
393
|
+
...(proxyConfig ? { proxy: proxyConfig } : {}),
|
|
394
|
+
locale: expectedLocale,
|
|
395
|
+
// Increase timeouts when proxied — residential proxies add 5-15s latency
|
|
396
|
+
...(proxyConfig ? { timeout: 120000, navigationTimeout: 60000 } : {}),
|
|
397
|
+
});
|
|
398
|
+
const score = auditResult.score.overall;
|
|
399
|
+
const grade = auditResult.grade;
|
|
400
|
+
response.gate2 = {
|
|
401
|
+
status: score >= threshold ? "qualified" : "unqualified",
|
|
402
|
+
score,
|
|
403
|
+
grade,
|
|
404
|
+
threshold,
|
|
405
|
+
topIssues: auditResult.issues?.slice(0, 5).map((issue) => ({
|
|
406
|
+
description: issue.description,
|
|
407
|
+
severity: issue.severity,
|
|
408
|
+
category: issue.category,
|
|
409
|
+
})) || [],
|
|
410
|
+
};
|
|
411
|
+
if (score < threshold) {
|
|
412
|
+
response.result = "UNQUALIFIED";
|
|
413
|
+
response.message = `Site scored ${score}/100 (grade ${grade}), below the ${threshold} threshold. Fix structural issues before persona testing adds value.`;
|
|
414
|
+
response.duration = `${Date.now() - startTime}ms`;
|
|
415
|
+
await browser.close();
|
|
416
|
+
return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }] };
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
catch (auditErr) {
|
|
420
|
+
response.gate2 = { status: "error", error: auditErr instanceof Error ? auditErr.message : String(auditErr) };
|
|
421
|
+
// Continue to Gate 3 even if audit fails — don't block on optional qualification
|
|
422
|
+
}
|
|
423
|
+
// ── Gate 3: Per-Persona Cognitive Effort ──
|
|
424
|
+
const personaResults = {};
|
|
425
|
+
const { buildOTCognitiveProfile } = await import("../../visual/cognitive-transport.js");
|
|
426
|
+
const { computeDemandDistribution, computeSequentialCTC } = await import("../../visual/cognitive-transport-chain.js");
|
|
427
|
+
const { extractPageMetrics } = await import("../../visual/cognitive-transport.js");
|
|
428
|
+
const { getAnyPersona, createCognitivePersona } = await import("../../personas.js");
|
|
429
|
+
// Navigate in our browser for page metrics
|
|
430
|
+
await browser.navigate(url);
|
|
431
|
+
const metricsPage = await browser.getPage();
|
|
432
|
+
const pageMetrics = await extractPageMetrics(metricsPage);
|
|
433
|
+
const demand = computeDemandDistribution(pageMetrics);
|
|
434
|
+
// Page understanding
|
|
435
|
+
let pageUnderstanding = null;
|
|
436
|
+
try {
|
|
437
|
+
const { PageUnderstandingEngine } = await import("../../analysis/page-understanding.js");
|
|
438
|
+
const engine = new PageUnderstandingEngine();
|
|
439
|
+
const pu = await engine.analyze(metricsPage);
|
|
440
|
+
pageUnderstanding = {
|
|
441
|
+
type: pu.type,
|
|
442
|
+
affordanceCount: pu.affordances.length,
|
|
443
|
+
formCount: pu.structure.forms.length,
|
|
444
|
+
ctaCount: pu.structure.ctas.length,
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
catch { }
|
|
448
|
+
for (const personaName of personaList) {
|
|
449
|
+
try {
|
|
450
|
+
const existingPersona = getAnyPersona(personaName);
|
|
451
|
+
const personaObj = existingPersona || createCognitivePersona(personaName, personaName, {});
|
|
452
|
+
const traits = (personaObj.cognitiveTraits || {});
|
|
453
|
+
const otProfile = buildOTCognitiveProfile(personaName, traits);
|
|
454
|
+
const result = computeSequentialCTC(otProfile, demand, { asymmetric: true, interactions: true });
|
|
455
|
+
personaResults[personaName] = {
|
|
456
|
+
totalCTC: Math.round(result.totalCTC * 1000) / 1000,
|
|
457
|
+
bottleneck: result.bottleneckLayer,
|
|
458
|
+
abandonmentRisk: Math.round(result.abandonmentRisk * 100) + "%",
|
|
459
|
+
deficit: Math.round(result.deficitCost * 1000) / 1000,
|
|
460
|
+
surplus: Math.round(result.surplusCost * 1000) / 1000,
|
|
461
|
+
layers: result.layers.map(l => ({
|
|
462
|
+
name: l.name,
|
|
463
|
+
cost: Math.round(l.transportCost * 1000) / 1000,
|
|
464
|
+
})),
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
catch (personaErr) {
|
|
468
|
+
personaResults[personaName] = { error: personaErr instanceof Error ? personaErr.message : String(personaErr) };
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
response.gate3 = { status: "complete", personas: personaResults };
|
|
472
|
+
response.pageMetrics = {
|
|
473
|
+
informationDensity: Math.round(pageMetrics.informationDensity * 1000) / 1000,
|
|
474
|
+
visualComplexity: Math.round(pageMetrics.visualComplexity * 1000) / 1000,
|
|
475
|
+
interactiveElements: pageMetrics.interactiveElementCount,
|
|
476
|
+
choiceCount: pageMetrics.choiceCount,
|
|
477
|
+
};
|
|
478
|
+
if (pageUnderstanding)
|
|
479
|
+
response.pageUnderstanding = pageUnderstanding;
|
|
480
|
+
// Generate recommendations
|
|
481
|
+
const recommendations = [];
|
|
482
|
+
for (const [name, data] of Object.entries(personaResults)) {
|
|
483
|
+
const d = data;
|
|
484
|
+
if (d.bottleneck) {
|
|
485
|
+
recommendations.push(`${name}: Reduce ${d.bottleneck} complexity (primary bottleneck, CTC=${d.totalCTC})`);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
response.recommendations = recommendations.slice(0, 5);
|
|
489
|
+
response.result = "COMPLETE";
|
|
490
|
+
response.duration = `${Date.now() - startTime}ms`;
|
|
491
|
+
await browser.close();
|
|
492
|
+
}
|
|
493
|
+
catch (navErr) {
|
|
494
|
+
response.gate1 = { status: "error", error: navErr instanceof Error ? navErr.message : String(navErr) };
|
|
495
|
+
response.result = "ERROR";
|
|
496
|
+
response.duration = `${Date.now() - startTime}ms`;
|
|
497
|
+
await browser.close();
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
catch (browserErr) {
|
|
501
|
+
response.gate1 = { status: "error", error: browserErr instanceof Error ? browserErr.message : String(browserErr) };
|
|
502
|
+
response.result = "ERROR";
|
|
503
|
+
response.duration = `${Date.now() - startTime}ms`;
|
|
504
|
+
}
|
|
505
|
+
return { content: [{ type: "text", text: JSON.stringify(response, null, 2) }] };
|
|
506
|
+
});
|
|
507
|
+
// ── Visual Cognitive Story ──
|
|
508
|
+
server.registerTool("visual_cognitive_story", {
|
|
509
|
+
title: "Visual Cognitive Story",
|
|
510
|
+
description: "Generate a complete visual narrative of how a persona experiences a page. Produces multiple annotated screenshots: attention heatmap (where they look), motor overlay (what they can click), attention quality (do they see the CTAs), and a written narrative connecting effort, attention, and conversion. Returns all images as public URLs.",
|
|
511
|
+
inputSchema: {
|
|
512
|
+
url: z.string().url().describe("URL to analyze"),
|
|
513
|
+
persona: z.string().optional().default("cognitive-adhd").describe("Persona name"),
|
|
514
|
+
device: z.string().optional().describe("Device to emulate: 'mobile', 'tablet', 'desktop', or a specific device like 'iPhone 15', 'Pixel 7', 'iPad Pro'. Default: desktop (1920x1080)."),
|
|
515
|
+
},
|
|
516
|
+
annotations: {
|
|
517
|
+
title: "Visual Cognitive Story",
|
|
518
|
+
readOnlyHint: true,
|
|
519
|
+
destructiveHint: false,
|
|
520
|
+
idempotentHint: false,
|
|
521
|
+
openWorldHint: true,
|
|
522
|
+
},
|
|
523
|
+
}, async ({ url, persona, device }) => {
|
|
524
|
+
const startTime = Date.now();
|
|
525
|
+
const { join } = await import("path");
|
|
526
|
+
const { tmpdir } = await import("os");
|
|
527
|
+
const { writeFileSync, mkdirSync, existsSync, unlinkSync } = await import("fs");
|
|
528
|
+
try {
|
|
529
|
+
const { CBrowser: BrowserClass } = await import("../../browser.js");
|
|
530
|
+
const browser = new BrowserClass({
|
|
531
|
+
headless: true,
|
|
532
|
+
...(device ? { device: device.toLowerCase() } : { viewportWidth: 1920, viewportHeight: 1080 }),
|
|
533
|
+
});
|
|
534
|
+
await browser.launch();
|
|
535
|
+
try {
|
|
536
|
+
await browser.navigate(url);
|
|
537
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
538
|
+
const page = await browser.getPage();
|
|
539
|
+
const ssPath = join(tmpdir(), `story-${Date.now()}.png`);
|
|
540
|
+
await page.screenshot({ path: ssPath, fullPage: false });
|
|
541
|
+
const webDir = "/home/wyld-web/static/cbrowser-web/out/heatmaps";
|
|
542
|
+
if (!existsSync(webDir))
|
|
543
|
+
mkdirSync(webDir, { recursive: true });
|
|
544
|
+
const ts = Date.now();
|
|
545
|
+
const images = [];
|
|
546
|
+
const urls = {};
|
|
547
|
+
// ── 1. Attention Heatmap ──
|
|
548
|
+
let attentionData = null;
|
|
549
|
+
try {
|
|
550
|
+
const { analyzeAttention } = await import("../../visual/attention-transport.js");
|
|
551
|
+
const attnResult = await analyzeAttention(ssPath, persona, 4);
|
|
552
|
+
attentionData = {
|
|
553
|
+
entropy: attnResult.entropy,
|
|
554
|
+
concentration: attnResult.concentration,
|
|
555
|
+
hotspots: attnResult.saliencyMap?.hotspots || [],
|
|
556
|
+
saliencyMap: attnResult.saliencyMap,
|
|
557
|
+
};
|
|
558
|
+
if (attnResult.saliencyMap) {
|
|
559
|
+
const { generateHeatmapOverlay } = await import("../../visual/heatmap-overlay.js");
|
|
560
|
+
const heatB64 = await generateHeatmapOverlay(ssPath, attnResult.saliencyMap.cells, attnResult.saliencyMap.rows, attnResult.saliencyMap.cols, `${persona} Attention`);
|
|
561
|
+
const heatId = `story-attn-${persona}-${ts}`;
|
|
562
|
+
writeFileSync(join(webDir, `${heatId}.png`), Buffer.from(heatB64, "base64"));
|
|
563
|
+
urls.attention = `https://cbrowser.ai/heatmaps/${heatId}.png`;
|
|
564
|
+
images.push({ type: "image", data: heatB64, mimeType: "image/png" });
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
catch (e) {
|
|
568
|
+
console.debug(`[story] Attention failed: ${e.message}`);
|
|
569
|
+
}
|
|
570
|
+
// ── 2. Motor Accessibility Overlay ──
|
|
571
|
+
try {
|
|
572
|
+
const { motorAccessibility } = await import("../../visual/cognitive-models.js");
|
|
573
|
+
const { buildOTCognitiveProfile } = await import("../../visual/cognitive-transport.js");
|
|
574
|
+
const { getAnyPersona, createCognitivePersona } = await import("../../personas.js");
|
|
575
|
+
const personaObj = getAnyPersona(persona) || createCognitivePersona(persona, persona, {});
|
|
576
|
+
const traits = (personaObj.cognitiveTraits || {});
|
|
577
|
+
const otProfile = buildOTCognitiveProfile(persona, traits);
|
|
578
|
+
const elements = await page.evaluate(() => {
|
|
579
|
+
return Array.from(document.querySelectorAll('a, button, input, select, textarea, [role="button"]')).slice(0, 30).map(el => {
|
|
580
|
+
const rect = el.getBoundingClientRect();
|
|
581
|
+
const vw = window.innerWidth / 2;
|
|
582
|
+
const vh = window.innerHeight / 2;
|
|
583
|
+
return {
|
|
584
|
+
selector: el.tagName.toLowerCase() + (el.innerText?.trim().slice(0, 15) ? `[${el.innerText.trim().slice(0, 15)}]` : ''),
|
|
585
|
+
width: rect.width, height: rect.height,
|
|
586
|
+
distance: Math.sqrt((rect.x + rect.width / 2 - vw) ** 2 + (rect.y + rect.height / 2 - vh) ** 2),
|
|
587
|
+
x: rect.x, y: rect.y,
|
|
588
|
+
};
|
|
589
|
+
}).filter((e) => e.width > 0 && e.height > 0);
|
|
590
|
+
});
|
|
591
|
+
const motorResult = motorAccessibility(elements, otProfile);
|
|
592
|
+
const { generateMotorOverlay } = await import("../../visual/visual-overlays.js");
|
|
593
|
+
const motorElements = elements.map((el, i) => ({
|
|
594
|
+
...el,
|
|
595
|
+
hitProbability: motorResult.elements[i]?.hitProbability ?? 0.9,
|
|
596
|
+
isBarrier: motorResult.elements[i]?.isBarrier ?? false,
|
|
597
|
+
}));
|
|
598
|
+
// Pass CSS viewport width for coordinate scaling (getBoundingClientRect returns CSS px)
|
|
599
|
+
const cssVW = await page.evaluate(() => window.innerWidth).catch(() => 1920);
|
|
600
|
+
const motorB64 = await generateMotorOverlay(ssPath, motorElements, persona, cssVW);
|
|
601
|
+
const motorId = `story-motor-${persona}-${ts}`;
|
|
602
|
+
writeFileSync(join(webDir, `${motorId}.png`), Buffer.from(motorB64, "base64"));
|
|
603
|
+
urls.motor = `https://cbrowser.ai/heatmaps/${motorId}.png`;
|
|
604
|
+
images.push({ type: "image", data: motorB64, mimeType: "image/png" });
|
|
605
|
+
}
|
|
606
|
+
catch (e) {
|
|
607
|
+
console.debug(`[story] Motor failed: ${e.message}`);
|
|
608
|
+
}
|
|
609
|
+
// ── 3. Attention Quality Overlay ──
|
|
610
|
+
try {
|
|
611
|
+
if (attentionData?.hotspots) {
|
|
612
|
+
const { computeAttentionQuality, extractPageElementsForAttention } = await import("../../visual/attention-quality.js");
|
|
613
|
+
const { generateAttentionQualityOverlay } = await import("../../visual/visual-overlays.js");
|
|
614
|
+
const pageElements = await extractPageElementsForAttention(page);
|
|
615
|
+
const quality = computeAttentionQuality(attentionData.hotspots, pageElements, 4);
|
|
616
|
+
// Build overlay targets from page elements that matched hotspots
|
|
617
|
+
const overlayTargets = quality.topAttentionTargets.map(t => {
|
|
618
|
+
const el = pageElements.find(e => e.text?.includes(t.element.slice(0, 20)) || e.selector === t.element);
|
|
619
|
+
return {
|
|
620
|
+
type: t.type,
|
|
621
|
+
x: el?.x ?? 0, y: el?.y ?? 0,
|
|
622
|
+
width: el?.width ?? 100, height: el?.height ?? 30,
|
|
623
|
+
saliency: t.saliency,
|
|
624
|
+
label: t.element,
|
|
625
|
+
};
|
|
626
|
+
}).filter(t => t.x > 0 || t.y > 0);
|
|
627
|
+
if (overlayTargets.length > 0) {
|
|
628
|
+
const cssVW2 = await page.evaluate(() => window.innerWidth).catch(() => 1920);
|
|
629
|
+
const qualB64 = await generateAttentionQualityOverlay(ssPath, overlayTargets, persona, cssVW2);
|
|
630
|
+
const qualId = `story-quality-${persona}-${ts}`;
|
|
631
|
+
writeFileSync(join(webDir, `${qualId}.png`), Buffer.from(qualB64, "base64"));
|
|
632
|
+
urls.quality = `https://cbrowser.ai/heatmaps/${qualId}.png`;
|
|
633
|
+
images.push({ type: "image", data: qualB64, mimeType: "image/png" });
|
|
634
|
+
}
|
|
635
|
+
urls.qualityData = quality;
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
catch (e) {
|
|
639
|
+
console.debug(`[story] Quality failed: ${e.message}`);
|
|
640
|
+
}
|
|
641
|
+
// ── 4. Cognitive Effort Summary ──
|
|
642
|
+
let effortData = null;
|
|
643
|
+
try {
|
|
644
|
+
const { buildOTCognitiveProfile } = await import("../../visual/cognitive-transport.js");
|
|
645
|
+
const { computeDemandDistribution, computeSequentialCTC } = await import("../../visual/cognitive-transport-chain.js");
|
|
646
|
+
const { extractPageMetrics } = await import("../../visual/cognitive-transport.js");
|
|
647
|
+
const { getAnyPersona, createCognitivePersona } = await import("../../personas.js");
|
|
648
|
+
const personaObj = getAnyPersona(persona) || createCognitivePersona(persona, persona, {});
|
|
649
|
+
const traits = (personaObj.cognitiveTraits || {});
|
|
650
|
+
const otProfile = buildOTCognitiveProfile(persona, traits);
|
|
651
|
+
const pageMetrics = await extractPageMetrics(page);
|
|
652
|
+
const demand = computeDemandDistribution(pageMetrics);
|
|
653
|
+
const ctcResult = computeSequentialCTC(otProfile, demand, { asymmetric: true, interactions: true });
|
|
654
|
+
effortData = {
|
|
655
|
+
totalCTC: Math.round(ctcResult.totalCTC * 1000) / 1000,
|
|
656
|
+
bottleneck: ctcResult.bottleneckLayer,
|
|
657
|
+
abandonmentRisk: Math.round(ctcResult.abandonmentRisk * 100),
|
|
658
|
+
layers: ctcResult.layers.map(l => ({ name: l.name, cost: Math.round(l.transportCost * 1000) / 1000 })),
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
catch (e) {
|
|
662
|
+
console.debug(`[story] Effort failed: ${e.message}`);
|
|
663
|
+
}
|
|
664
|
+
// ── 5. Combined overlay — all layers on one grayscale image ──
|
|
665
|
+
try {
|
|
666
|
+
const { generateCombinedStoryOverlay } = await import("../../visual/visual-overlays.js");
|
|
667
|
+
const motorEls = [];
|
|
668
|
+
try {
|
|
669
|
+
const motorElements = await page.evaluate(() => {
|
|
670
|
+
return Array.from(document.querySelectorAll('a, button, input, select, [role="button"]')).slice(0, 20).map(el => {
|
|
671
|
+
const rect = el.getBoundingClientRect();
|
|
672
|
+
return { selector: el.tagName.toLowerCase(), x: rect.x, y: rect.y, width: rect.width, height: rect.height };
|
|
673
|
+
}).filter((e) => e.width > 0 && e.height > 0);
|
|
674
|
+
});
|
|
675
|
+
for (const el of motorElements) {
|
|
676
|
+
motorEls.push({ ...el, hitProbability: 0.85, isBarrier: el.width < 30 || el.height < 30 });
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
catch { }
|
|
680
|
+
const qualTargets = [];
|
|
681
|
+
try {
|
|
682
|
+
const { extractPageElementsForAttention } = await import("../../visual/attention-quality.js");
|
|
683
|
+
const pageEls = await extractPageElementsForAttention(page);
|
|
684
|
+
for (const el of pageEls.filter(e => e.isCTA || e.isHeading || e.isDecorative).slice(0, 15)) {
|
|
685
|
+
qualTargets.push({
|
|
686
|
+
type: el.isCTA ? "cta" : el.isHeading ? "heading" : "decorative",
|
|
687
|
+
x: el.x, y: el.y, width: el.width, height: el.height,
|
|
688
|
+
saliency: 0.5, label: el.text?.slice(0, 25) || el.selector,
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
catch { }
|
|
693
|
+
const cssVW3 = await page.evaluate(() => window.innerWidth).catch(() => 1920);
|
|
694
|
+
const combinedB64 = await generateCombinedStoryOverlay(ssPath, attentionData?.saliencyMap?.cells ?? null, attentionData?.saliencyMap?.rows ?? 0, attentionData?.saliencyMap?.cols ?? 0, motorEls, qualTargets, persona, cssVW3);
|
|
695
|
+
const combId = `story-combined-${persona}-${ts}`;
|
|
696
|
+
writeFileSync(join(webDir, `${combId}.png`), Buffer.from(combinedB64, "base64"));
|
|
697
|
+
urls.combined = `https://cbrowser.ai/heatmaps/${combId}.png`;
|
|
698
|
+
images.push({ type: "image", data: combinedB64, mimeType: "image/png" });
|
|
699
|
+
}
|
|
700
|
+
catch (e) {
|
|
701
|
+
console.debug(`[story] Combined overlay failed: ${e.message}`);
|
|
702
|
+
}
|
|
703
|
+
// ── Build narrative ──
|
|
704
|
+
const concentration = attentionData?.concentration ?? 0;
|
|
705
|
+
const entropy = attentionData?.entropy ?? 0;
|
|
706
|
+
const ctc = effortData?.totalCTC ?? 0;
|
|
707
|
+
const bottleneck = effortData?.bottleneck ?? "unknown";
|
|
708
|
+
const risk = effortData?.abandonmentRisk ?? 0;
|
|
709
|
+
const qualityData = urls.qualityData;
|
|
710
|
+
let narrative = `## ${persona} on ${new URL(url).hostname}\n\n`;
|
|
711
|
+
narrative += `### The Eye: Where Attention Goes\n`;
|
|
712
|
+
narrative += concentration > 0.5
|
|
713
|
+
? `Attention is focused (concentration: ${(concentration * 100).toFixed(0)}%). This persona quickly identifies a visual anchor and locks onto it.\n`
|
|
714
|
+
: `Attention is scattered (concentration: ${(concentration * 100).toFixed(0)}%). This persona's eye wanders across the page without finding a clear focal point.\n`;
|
|
715
|
+
narrative += entropy > 0.8
|
|
716
|
+
? `High visual entropy means too many competing elements fight for attention.\n\n`
|
|
717
|
+
: `Visual hierarchy is working — the page guides the eye effectively.\n\n`;
|
|
718
|
+
narrative += `### The Effort: How Hard It Is\n`;
|
|
719
|
+
narrative += `Total cognitive transport cost: ${ctc.toFixed(2)}. `;
|
|
720
|
+
narrative += ctc < 0.5 ? `This page is comfortable for ${persona}. ` : ctc < 1.0 ? `Moderate effort required. ` : `Significant cognitive burden. `;
|
|
721
|
+
narrative += `The bottleneck is **${bottleneck}** — this is where the design creates the most friction.\n`;
|
|
722
|
+
narrative += `Abandonment risk: **${risk}%**.\n\n`;
|
|
723
|
+
narrative += `### The Question: Do They See What Matters?\n`;
|
|
724
|
+
if (qualityData) {
|
|
725
|
+
const cta = qualityData.ctaCaptureRate ?? 0;
|
|
726
|
+
const distract = qualityData.distractorRatio ?? 0;
|
|
727
|
+
narrative += cta > 0.2
|
|
728
|
+
? `CTAs capture ${(cta * 100).toFixed(0)}% of top attention — the conversion path is visible.\n`
|
|
729
|
+
: `CTAs capture only ${(cta * 100).toFixed(0)}% of top attention — the conversion path is nearly invisible to this persona.\n`;
|
|
730
|
+
narrative += distract > 0.4
|
|
731
|
+
? `${(distract * 100).toFixed(0)}% of attention goes to non-actionable elements (decorative images, nav chrome). Design is leaking attention.\n`
|
|
732
|
+
: `Low distractor ratio (${(distract * 100).toFixed(0)}%) — most attention goes to actionable content.\n`;
|
|
733
|
+
narrative += `\nAttention quality score: **${qualityData.qualityScore ?? 0}/100**\n`;
|
|
734
|
+
}
|
|
735
|
+
else {
|
|
736
|
+
narrative += `Attention quality data unavailable.\n`;
|
|
737
|
+
}
|
|
738
|
+
narrative += `\n### The Verdict\n`;
|
|
739
|
+
if (ctc < 0.5 && (qualityData?.ctaCaptureRate ?? 0) > 0.2) {
|
|
740
|
+
narrative += `**Strong.** Easy to use AND attention lands on CTAs. This page works for ${persona}.`;
|
|
741
|
+
}
|
|
742
|
+
else if (ctc < 0.5 && (qualityData?.ctaCaptureRate ?? 0) < 0.1) {
|
|
743
|
+
narrative += `**Easy but unfocused.** Low cognitive effort, but attention misses the CTAs. The page needs stronger visual hierarchy to guide ${persona} toward conversion.`;
|
|
744
|
+
}
|
|
745
|
+
else if (ctc > 1.0 && (qualityData?.ctaCaptureRate ?? 0) > 0.2) {
|
|
746
|
+
narrative += `**Hard but focused.** High cognitive effort, but when ${persona} pushes through, they see the CTAs. Reduce complexity to lower the abandonment risk without losing the visual focus.`;
|
|
747
|
+
}
|
|
748
|
+
else {
|
|
749
|
+
narrative += `**Needs work.** High effort AND low CTA visibility. ${persona} is both struggling to process the page AND not seeing the conversion path. Prioritize: simplify the ${bottleneck} layer, then make CTAs more prominent.`;
|
|
750
|
+
}
|
|
751
|
+
// ── Assemble response ──
|
|
752
|
+
const storyResponse = {
|
|
753
|
+
url,
|
|
754
|
+
persona,
|
|
755
|
+
narrative,
|
|
756
|
+
images: urls,
|
|
757
|
+
effort: effortData,
|
|
758
|
+
attention: {
|
|
759
|
+
entropy: Math.round(entropy * 1000) / 1000,
|
|
760
|
+
concentration: Math.round(concentration * 1000) / 1000,
|
|
761
|
+
},
|
|
762
|
+
quality: qualityData ? {
|
|
763
|
+
ctaCaptureRate: qualityData.ctaCaptureRate,
|
|
764
|
+
distractorRatio: qualityData.distractorRatio,
|
|
765
|
+
score: qualityData.qualityScore,
|
|
766
|
+
} : null,
|
|
767
|
+
duration: `${Date.now() - startTime}ms`,
|
|
768
|
+
};
|
|
769
|
+
const content = [
|
|
770
|
+
{ type: "text", text: JSON.stringify(storyResponse, null, 2) },
|
|
771
|
+
...images,
|
|
772
|
+
];
|
|
773
|
+
try {
|
|
774
|
+
unlinkSync(ssPath);
|
|
775
|
+
}
|
|
776
|
+
catch { }
|
|
777
|
+
return { content };
|
|
778
|
+
}
|
|
779
|
+
finally {
|
|
780
|
+
await browser.close();
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
catch (err) {
|
|
784
|
+
return {
|
|
785
|
+
content: [{
|
|
786
|
+
type: "text",
|
|
787
|
+
text: JSON.stringify({ error: err instanceof Error ? err.message : String(err), url, persona }, null, 2),
|
|
788
|
+
}],
|
|
789
|
+
};
|
|
790
|
+
}
|
|
791
|
+
});
|
|
273
792
|
}
|
|
274
793
|
//# sourceMappingURL=audit-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/base/audit-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/base/audit-tools.ts"],"names":[],"mappings":"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"}
|