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
@@ -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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"}