cbrowser 19.1.4 → 19.1.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/dist/analysis/accessibility-empathy.d.ts.map +1 -1
- package/dist/analysis/accessibility-empathy.js +17 -2
- package/dist/analysis/accessibility-empathy.js.map +1 -1
- package/dist/analysis/agent-ready-audit.d.ts.map +1 -1
- package/dist/analysis/agent-ready-audit.js +318 -68
- package/dist/analysis/agent-ready-audit.js.map +1 -1
- package/dist/browser.d.ts +72 -8
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +146 -120
- package/dist/browser.js.map +1 -1
- package/dist/charge-scope.d.ts +20 -0
- package/dist/charge-scope.d.ts.map +1 -0
- package/dist/charge-scope.js +46 -0
- package/dist/charge-scope.js.map +1 -0
- package/dist/mcp-server-remote.d.ts.map +1 -1
- package/dist/mcp-server-remote.js +110 -7
- package/dist/mcp-server-remote.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +33 -44
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools/base/audit-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/audit-tools.js +6 -1
- package/dist/mcp-tools/base/audit-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.d.ts +11 -0
- package/dist/mcp-tools/base/browser-management-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/browser-management-tools.js +27 -6
- package/dist/mcp-tools/base/browser-management-tools.js.map +1 -1
- package/dist/mcp-tools/base/browser-state-tools.js +3 -3
- package/dist/mcp-tools/base/browser-state-tools.js.map +1 -1
- package/dist/mcp-tools/base/capture-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/capture-tools.js +3 -1
- package/dist/mcp-tools/base/capture-tools.js.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/cognitive-tools.js +6 -37
- package/dist/mcp-tools/base/cognitive-tools.js.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/extraction-tools.js +6 -5
- package/dist/mcp-tools/base/extraction-tools.js.map +1 -1
- package/dist/mcp-tools/base/gif-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/gif-tools.js +2 -0
- package/dist/mcp-tools/base/gif-tools.js.map +1 -1
- package/dist/mcp-tools/base/interaction-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/interaction-tools.js +1 -0
- package/dist/mcp-tools/base/interaction-tools.js.map +1 -1
- package/dist/mcp-tools/base/llms-txt-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/llms-txt-tools.js +1 -0
- package/dist/mcp-tools/base/llms-txt-tools.js.map +1 -1
- package/dist/mcp-tools/base/marketing-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/marketing-tools.js +4 -0
- package/dist/mcp-tools/base/marketing-tools.js.map +1 -1
- package/dist/mcp-tools/base/navigation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/navigation-tools.js +2 -1
- package/dist/mcp-tools/base/navigation-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 +2 -0
- package/dist/mcp-tools/base/persona-comparison-tools.js.map +1 -1
- package/dist/mcp-tools/base/security-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/security-tools.js +2 -0
- package/dist/mcp-tools/base/security-tools.js.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/site-knowledge-tools.js +9 -1
- package/dist/mcp-tools/base/site-knowledge-tools.js.map +1 -1
- package/dist/mcp-tools/base/testing-tools.js +1 -1
- package/dist/mcp-tools/base/testing-tools.js.map +1 -1
- package/dist/mcp-tools/base/values-tools.d.ts.map +1 -1
- package/dist/mcp-tools/base/values-tools.js +2 -0
- package/dist/mcp-tools/base/values-tools.js.map +1 -1
- package/dist/mcp-tools/credit-refund.d.ts +20 -0
- package/dist/mcp-tools/credit-refund.d.ts.map +1 -0
- package/dist/mcp-tools/credit-refund.js +37 -0
- package/dist/mcp-tools/credit-refund.js.map +1 -0
- package/dist/mcp-tools/persona-creation-tools.d.ts.map +1 -1
- package/dist/mcp-tools/persona-creation-tools.js +2 -0
- package/dist/mcp-tools/persona-creation-tools.js.map +1 -1
- package/dist/mcp-tools/persona-lifecycle-tools.js +6 -6
- package/dist/mcp-tools/persona-lifecycle-tools.js.map +1 -1
- package/dist/mcp-tools/screenshot-utils.d.ts +15 -0
- package/dist/mcp-tools/screenshot-utils.d.ts.map +1 -1
- package/dist/mcp-tools/screenshot-utils.js +18 -0
- package/dist/mcp-tools/screenshot-utils.js.map +1 -1
- package/dist/mcp-tools/tier-gate.d.ts.map +1 -1
- package/dist/mcp-tools/tier-gate.js +25 -2
- package/dist/mcp-tools/tier-gate.js.map +1 -1
- package/dist/personas.d.ts +19 -0
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +79 -0
- package/dist/personas.js.map +1 -1
- package/dist/recording/engine.d.ts +29 -0
- package/dist/recording/engine.d.ts.map +1 -1
- package/dist/recording/engine.js +67 -7
- package/dist/recording/engine.js.map +1 -1
- package/dist/remediation/patch-generator.d.ts.map +1 -1
- package/dist/remediation/patch-generator.js +15 -18
- package/dist/remediation/patch-generator.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/visual/perceptual-transport.d.ts.map +1 -1
- package/dist/visual/perceptual-transport.js +10 -2
- package/dist/visual/perceptual-transport.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp-server.js
CHANGED
|
@@ -24,6 +24,7 @@ import { registerPersonaComparisonTools } from "./mcp-tools/base/persona-compari
|
|
|
24
24
|
import { registerPersonaCreationTools } from "./mcp-tools/persona-creation-tools.js";
|
|
25
25
|
import { registerPersonaLifecycleTools } from "./mcp-tools/persona-lifecycle-tools.js";
|
|
26
26
|
import { registerUiResources } from "./mcp-tools/ui-resources.js";
|
|
27
|
+
import { countRegisteredTools } from "./mcp-tools/base/browser-management-tools.js";
|
|
27
28
|
import { applySecurityLayer } from "./mcp-tools/security-layer.js";
|
|
28
29
|
// Visual module imports
|
|
29
30
|
import { runVisualRegression, runCrossBrowserTest, runResponsiveTest, runABComparison, crossBrowserDiff, captureVisualBaseline, listVisualBaselines, } from "./visual/index.js";
|
|
@@ -31,7 +32,7 @@ import { runVisualRegression, runCrossBrowserTest, runResponsiveTest, runABCompa
|
|
|
31
32
|
import { runNLTestSuite, parseNLTestSuite, dryRunNLTestSuite, repairTest, detectFlakyTests, generateCoverageMap, } from "./testing/index.js";
|
|
32
33
|
// Analysis module imports
|
|
33
34
|
import { huntBugs, runChaosTest, findElementByIntent, runAgentReadyAudit, runCompetitiveBenchmark, } from "./analysis/index.js";
|
|
34
|
-
import { listAccessibilityPersonas, getAccessibilityPersona } from "./personas.js";
|
|
35
|
+
import { listAccessibilityPersonas, getAccessibilityPersona, describeAccessibilityPersona } from "./personas.js";
|
|
35
36
|
// Persona imports for cognitive journey
|
|
36
37
|
import { getPersona, getAnyPersona, listPersonas, getCognitiveProfile, createCognitivePersona, listEmotionalPersonas, getEmotionalPersona, isAgentPersonaObject, } from "./personas.js";
|
|
37
38
|
// Emotional state functions (v13.1.0)
|
|
@@ -665,6 +666,7 @@ async function registerCBrowserTools() {
|
|
|
665
666
|
}
|
|
666
667
|
catch (error) {
|
|
667
668
|
return {
|
|
669
|
+
isError: true,
|
|
668
670
|
content: [{
|
|
669
671
|
type: "text",
|
|
670
672
|
text: JSON.stringify({
|
|
@@ -743,6 +745,7 @@ async function registerCBrowserTools() {
|
|
|
743
745
|
}
|
|
744
746
|
catch (error) {
|
|
745
747
|
return {
|
|
748
|
+
isError: true,
|
|
746
749
|
content: [{
|
|
747
750
|
type: "text",
|
|
748
751
|
text: JSON.stringify({
|
|
@@ -762,6 +765,7 @@ async function registerCBrowserTools() {
|
|
|
762
765
|
}
|
|
763
766
|
catch (error) {
|
|
764
767
|
return {
|
|
768
|
+
isError: true,
|
|
765
769
|
content: [{
|
|
766
770
|
type: "text",
|
|
767
771
|
text: JSON.stringify({
|
|
@@ -1129,7 +1133,7 @@ async function registerCBrowserTools() {
|
|
|
1129
1133
|
}, async ({ filepath, dryRun, fuzzyMatch }) => {
|
|
1130
1134
|
const fs = await import("fs");
|
|
1131
1135
|
if (!fs.existsSync(filepath)) {
|
|
1132
|
-
return { content: [{ type: "text", text: JSON.stringify({ error: `Test file not found: ${filepath}` }) }] };
|
|
1136
|
+
return { isError: true, content: [{ type: "text", text: JSON.stringify({ error: `Test file not found: ${filepath}` }) }] };
|
|
1133
1137
|
}
|
|
1134
1138
|
const fileContent = fs.readFileSync(filepath, "utf-8");
|
|
1135
1139
|
const suiteName = filepath.split("/").pop()?.replace(/\.[^.]+$/, "") || "Test Suite";
|
|
@@ -1486,6 +1490,7 @@ async function registerCBrowserTools() {
|
|
|
1486
1490
|
// v17.0.0: Check for agent personas - cognitive journeys don't support them yet
|
|
1487
1491
|
if (existingPersona && isAgentPersonaObject(existingPersona)) {
|
|
1488
1492
|
return {
|
|
1493
|
+
isError: true,
|
|
1489
1494
|
content: [{
|
|
1490
1495
|
type: "text",
|
|
1491
1496
|
text: JSON.stringify({
|
|
@@ -1836,43 +1841,11 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
1836
1841
|
const p = getAccessibilityPersona(name);
|
|
1837
1842
|
if (!p)
|
|
1838
1843
|
return null;
|
|
1839
|
-
//
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
disabilityType = "Motor impairment (tremor)";
|
|
1845
|
-
barrierTypes.push("motor_precision", "touch_target");
|
|
1846
|
-
}
|
|
1847
|
-
if (traits?.visionLevel !== undefined && traits.visionLevel < 0.5) {
|
|
1848
|
-
disabilityType = "Low vision";
|
|
1849
|
-
barrierTypes.push("visual_clarity", "contrast");
|
|
1850
|
-
}
|
|
1851
|
-
if (traits?.colorBlindness) {
|
|
1852
|
-
disabilityType = `Color blindness (${traits.colorBlindness})`;
|
|
1853
|
-
barrierTypes.push("sensory");
|
|
1854
|
-
}
|
|
1855
|
-
if (traits?.processingSpeed !== undefined && traits.processingSpeed < 0.6) {
|
|
1856
|
-
disabilityType = "Cognitive (Processing)";
|
|
1857
|
-
barrierTypes.push("cognitive_load", "temporal");
|
|
1858
|
-
}
|
|
1859
|
-
if (traits?.attentionSpan !== undefined && traits.attentionSpan < 0.5) {
|
|
1860
|
-
if (!disabilityType.includes("Cognitive")) {
|
|
1861
|
-
disabilityType = "Cognitive (ADHD/Attention)";
|
|
1862
|
-
}
|
|
1863
|
-
barrierTypes.push("cognitive_load");
|
|
1864
|
-
}
|
|
1865
|
-
// Name-based fallback
|
|
1866
|
-
if (disabilityType === "General accessibility") {
|
|
1867
|
-
if (p.name.includes("deaf") || p.name.includes("hearing"))
|
|
1868
|
-
disabilityType = "Hearing impairment";
|
|
1869
|
-
else if (p.name.includes("motor"))
|
|
1870
|
-
disabilityType = "Motor impairment";
|
|
1871
|
-
else if (p.name.includes("vision") || p.name.includes("blind"))
|
|
1872
|
-
disabilityType = "Vision impairment";
|
|
1873
|
-
else if (p.name.includes("cognitive") || p.name.includes("adhd"))
|
|
1874
|
-
disabilityType = "Cognitive";
|
|
1875
|
-
}
|
|
1844
|
+
// Shared with the remote roster (personas.ts); a declared label wins
|
|
1845
|
+
// over inference. This copy and that one were identical inference
|
|
1846
|
+
// blocks, so a fix to one could only ever reach half the users.
|
|
1847
|
+
// (2026-10-07)
|
|
1848
|
+
const { disabilityType, barrierTypes } = describeAccessibilityPersona(p);
|
|
1876
1849
|
// v16.12.0: Include Schwartz values for accessibility personas
|
|
1877
1850
|
const values = resolveValuesForPersona(p.name);
|
|
1878
1851
|
return {
|
|
@@ -1882,7 +1855,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
1882
1855
|
disabilityType,
|
|
1883
1856
|
demographics: p.demographics,
|
|
1884
1857
|
cognitiveTraits: p.cognitiveTraits || {},
|
|
1885
|
-
barrierTypes
|
|
1858
|
+
barrierTypes,
|
|
1886
1859
|
values: values ? {
|
|
1887
1860
|
schwartz: {
|
|
1888
1861
|
selfDirection: values.selfDirection,
|
|
@@ -1966,6 +1939,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
1966
1939
|
const session = comparisonSessions.get(sessionId);
|
|
1967
1940
|
if (!session) {
|
|
1968
1941
|
return {
|
|
1942
|
+
isError: true,
|
|
1969
1943
|
content: [{ type: "text", text: JSON.stringify({ error: "Session not found", sessionId }) }],
|
|
1970
1944
|
};
|
|
1971
1945
|
}
|
|
@@ -2016,11 +1990,13 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2016
1990
|
const session = comparisonSessions.get(sessionId);
|
|
2017
1991
|
if (!session) {
|
|
2018
1992
|
return {
|
|
1993
|
+
isError: true,
|
|
2019
1994
|
content: [{ type: "text", text: JSON.stringify({ error: "Session not found", sessionId }) }],
|
|
2020
1995
|
};
|
|
2021
1996
|
}
|
|
2022
1997
|
if (session.results.length === 0) {
|
|
2023
1998
|
return {
|
|
1999
|
+
isError: true,
|
|
2024
2000
|
content: [{ type: "text", text: JSON.stringify({ error: "No results recorded yet", sessionId }) }],
|
|
2025
2001
|
};
|
|
2026
2002
|
}
|
|
@@ -2137,8 +2113,11 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2137
2113
|
accessibilityTraits: persona.accessibilityTraits,
|
|
2138
2114
|
cognitiveTraits: persona.cognitiveTraits,
|
|
2139
2115
|
};
|
|
2140
|
-
//
|
|
2141
|
-
|
|
2116
|
+
// A declared label wins; traits are inferred only for personas that
|
|
2117
|
+
// declare none. Inferring here gave dyslexic-user "Cognitive
|
|
2118
|
+
// (ADHD/Memory)" in this session and "Cognitive (Processing)" in the
|
|
2119
|
+
// roster. (2026-10-07)
|
|
2120
|
+
sessionPersona.disabilityType = persona.disabilityType ?? getDisabilityTypeFromPersona(sessionPersona);
|
|
2142
2121
|
return sessionPersona;
|
|
2143
2122
|
});
|
|
2144
2123
|
// Store session
|
|
@@ -2198,6 +2177,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2198
2177
|
const session = empathyAuditSessions.get(sessionId);
|
|
2199
2178
|
if (!session) {
|
|
2200
2179
|
return {
|
|
2180
|
+
isError: true,
|
|
2201
2181
|
content: [{ type: "text", text: JSON.stringify({ error: "Session not found. Call empathy_audit_init first." }) }],
|
|
2202
2182
|
};
|
|
2203
2183
|
}
|
|
@@ -2247,6 +2227,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2247
2227
|
const session = empathyAuditSessions.get(sessionId);
|
|
2248
2228
|
if (!session) {
|
|
2249
2229
|
return {
|
|
2230
|
+
isError: true,
|
|
2250
2231
|
content: [{ type: "text", text: JSON.stringify({ error: "Session not found." }) }],
|
|
2251
2232
|
};
|
|
2252
2233
|
}
|
|
@@ -2301,11 +2282,13 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2301
2282
|
const session = empathyAuditSessions.get(sessionId);
|
|
2302
2283
|
if (!session) {
|
|
2303
2284
|
return {
|
|
2285
|
+
isError: true,
|
|
2304
2286
|
content: [{ type: "text", text: JSON.stringify({ error: "Session not found." }) }],
|
|
2305
2287
|
};
|
|
2306
2288
|
}
|
|
2307
2289
|
if (session.personaResults.length === 0) {
|
|
2308
2290
|
return {
|
|
2291
|
+
isError: true,
|
|
2309
2292
|
content: [{ type: "text", text: JSON.stringify({ error: "No persona results recorded. Complete at least one persona journey first." }) }],
|
|
2310
2293
|
};
|
|
2311
2294
|
}
|
|
@@ -2562,8 +2545,12 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2562
2545
|
// Diagnostics Tools
|
|
2563
2546
|
// =========================================================================
|
|
2564
2547
|
server.tool("status", "Get CBrowser environment status and diagnostics including data directories, installed browsers, configuration, self-healing cache statistics, and MCP tool count", {}, async () => {
|
|
2565
|
-
// v18.22.0: Include tool count for self-diagnosis of tool discrepancies
|
|
2566
|
-
|
|
2548
|
+
// v18.22.0: Include tool count for self-diagnosis of tool discrepancies.
|
|
2549
|
+
// collectedTools sees only server.tool(...) calls, so every family this
|
|
2550
|
+
// server registers through registerTool (empathy_audit, values, persona
|
|
2551
|
+
// comparison/creation/lifecycle) was missing: 55 reported, 82 listed.
|
|
2552
|
+
// Count what tools/list actually serves. (2026-10-07)
|
|
2553
|
+
const info = await getStatusInfo(VERSION, countRegisteredTools(server) ?? collectedTools.length);
|
|
2567
2554
|
return {
|
|
2568
2555
|
content: [
|
|
2569
2556
|
{
|
|
@@ -2630,6 +2617,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2630
2617
|
const personaData = getPersona(persona);
|
|
2631
2618
|
if (!personaData) {
|
|
2632
2619
|
return {
|
|
2620
|
+
isError: true,
|
|
2633
2621
|
content: [{ type: "text", text: JSON.stringify({ error: `Persona not found: ${persona}` }) }],
|
|
2634
2622
|
};
|
|
2635
2623
|
}
|
|
@@ -2663,6 +2651,7 @@ Begin the simulation now. Narrate your thoughts as this persona.
|
|
|
2663
2651
|
const personaData = getPersona(persona);
|
|
2664
2652
|
if (!personaData) {
|
|
2665
2653
|
return {
|
|
2654
|
+
isError: true,
|
|
2666
2655
|
content: [{ type: "text", text: JSON.stringify({ error: `Persona not found: ${persona}` }) }],
|
|
2667
2656
|
};
|
|
2668
2657
|
}
|