cbrowser 18.63.0 → 18.63.1
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/package.json +1 -1
- package/docs/ASSESSMENT.md +0 -132
- package/docs/AUTH0-SETUP.md +0 -207
- package/docs/COGNITIVE-OPTIMAL-TRANSPORT-RESEARCH.md +0 -238
- package/docs/DEMO-DEPLOYMENT.md +0 -177
- package/docs/ENTERPRISE-INTEGRATION.md +0 -250
- package/docs/GETTING-STARTED.md +0 -232
- package/docs/INSTALL.md +0 -274
- package/docs/MCP-INTEGRATION.md +0 -301
- package/docs/METHODOLOGY.md +0 -276
- package/docs/PERSONA-QUESTIONNAIRE.md +0 -328
- package/docs/README.md +0 -45
- package/docs/REMOTE-MCP-SERVER.md +0 -569
- package/docs/SECURITY_WHITEPAPER.md +0 -475
- package/docs/STRESS-TEST-v16.14.4.md +0 -241
- package/docs/Tool-Cognitive-Journey-Autonomous.md +0 -270
- package/docs/Tool-Competitive-Benchmark.md +0 -293
- package/docs/Tool-Empathy-Audit.md +0 -331
- package/docs/Tool-Hunt-Bugs.md +0 -305
- package/docs/Tool-Marketing-Campaign.md +0 -298
- package/docs/Tool-Persona-Create.md +0 -274
- package/docs/Tools-Accessibility.md +0 -208
- package/docs/Tools-Browser-Automation.md +0 -311
- package/docs/Tools-Cognitive-Journeys.md +0 -233
- package/docs/Tools-Marketing-Intelligence.md +0 -271
- package/docs/Tools-Overview.md +0 -162
- package/docs/Tools-Persona-System.md +0 -300
- package/docs/Tools-Session-State.md +0 -278
- package/docs/Tools-Testing-Quality.md +0 -257
- package/docs/Tools-Utilities.md +0 -182
- package/docs/Tools-Visual-Performance.md +0 -278
- package/docs/hunt-bugs-coverage.md +0 -103
- package/docs/personas/Persona-ADHD.md +0 -141
- package/docs/personas/Persona-ElderlyUser.md +0 -137
- package/docs/personas/Persona-FirstTimer.md +0 -137
- package/docs/personas/Persona-ImpatientUser.md +0 -138
- package/docs/personas/Persona-Index.md +0 -302
- package/docs/personas/Persona-LowVision.md +0 -139
- package/docs/personas/Persona-MobileUser.md +0 -139
- package/docs/personas/Persona-MotorTremor.md +0 -139
- package/docs/personas/Persona-PowerUser.md +0 -135
- package/docs/personas/Persona-ScreenReaderUser.md +0 -139
- package/docs/research/Bibliography.md +0 -275
- package/docs/research/Research-Methodology.md +0 -244
- package/docs/research/Values-Research.md +0 -432
- package/docs/traits/Trait-AnchoringBias.md +0 -227
- package/docs/traits/Trait-AttributionStyle.md +0 -280
- package/docs/traits/Trait-AuthoritySensitivity.md +0 -141
- package/docs/traits/Trait-ChangeBlindness.md +0 -171
- package/docs/traits/Trait-Comprehension.md +0 -180
- package/docs/traits/Trait-Curiosity.md +0 -189
- package/docs/traits/Trait-EmotionalContagion.md +0 -144
- package/docs/traits/Trait-FOMO.md +0 -150
- package/docs/traits/Trait-Index.md +0 -166
- package/docs/traits/Trait-InformationForaging.md +0 -217
- package/docs/traits/Trait-InterruptRecovery.md +0 -249
- package/docs/traits/Trait-MentalModelRigidity.md +0 -228
- package/docs/traits/Trait-MetacognitivePlanning.md +0 -164
- package/docs/traits/Trait-Patience.md +0 -137
- package/docs/traits/Trait-Persistence.md +0 -165
- package/docs/traits/Trait-ProceduralFluency.md +0 -205
- package/docs/traits/Trait-ReadingTendency.md +0 -216
- package/docs/traits/Trait-Resilience.md +0 -162
- package/docs/traits/Trait-RiskTolerance.md +0 -162
- package/docs/traits/Trait-Satisficing.md +0 -181
- package/docs/traits/Trait-SelfEfficacy.md +0 -199
- package/docs/traits/Trait-SocialProofSensitivity.md +0 -155
- package/docs/traits/Trait-TimeHorizon.md +0 -267
- package/docs/traits/Trait-TransferLearning.md +0 -249
- package/docs/traits/Trait-TrustCalibration.md +0 -227
- package/docs/traits/Trait-WorkingMemory.md +0 -192
package/docs/DEMO-DEPLOYMENT.md
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
> **This documentation is no longer maintained here.**
|
|
2
|
-
>
|
|
3
|
-
> For the latest version, please visit: **[CBrowser MCP Demo Server Deployment](https://cbrowser.ai/docs/DEMO-DEPLOYMENT)**
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CBrowser MCP Demo Server Deployment
|
|
8
|
-
|
|
9
|
-
Deploy a rate-limited, resource-constrained MCP demo server.
|
|
10
|
-
|
|
11
|
-
## Resource Limits
|
|
12
|
-
|
|
13
|
-
The demo container is limited to protect your host:
|
|
14
|
-
|
|
15
|
-
| Resource | Limit | Why |
|
|
16
|
-
|----------|-------|-----|
|
|
17
|
-
| CPU | 1 core | Prevents CPU exhaustion |
|
|
18
|
-
| Memory | 2GB | Playwright needs ~1GB, buffer for operations |
|
|
19
|
-
| PIDs | 100 | Prevents fork bombs |
|
|
20
|
-
| Tmp storage | 500MB | Limits disk usage |
|
|
21
|
-
| Logs | 3 x 10MB | Prevents log explosion |
|
|
22
|
-
|
|
23
|
-
## Rate Limits (Built-in)
|
|
24
|
-
|
|
25
|
-
The demo server has application-level rate limiting:
|
|
26
|
-
- **5 requests per minute** per IP
|
|
27
|
-
- **Burst of 10** requests allowed
|
|
28
|
-
- Returns 429 Too Many Requests when exceeded
|
|
29
|
-
|
|
30
|
-
## Quick Start
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
# Clone the repo
|
|
34
|
-
git clone https://github.com/alexandriashai/cbrowser.git
|
|
35
|
-
cd cbrowser
|
|
36
|
-
|
|
37
|
-
# Build and run demo container
|
|
38
|
-
docker-compose -f docker-compose.demo.yml up -d
|
|
39
|
-
|
|
40
|
-
# Check status
|
|
41
|
-
docker ps
|
|
42
|
-
docker logs cbrowser-mcp-demo
|
|
43
|
-
|
|
44
|
-
# Monitor resources
|
|
45
|
-
docker stats cbrowser-mcp-demo
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Verify It's Running
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
# Health check
|
|
52
|
-
curl http://localhost:3000/health
|
|
53
|
-
|
|
54
|
-
# Server info
|
|
55
|
-
curl http://localhost:3000/info
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Production Deployment (with nginx)
|
|
59
|
-
|
|
60
|
-
### 1. Run the container
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
docker-compose -f docker-compose.demo.yml up -d
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### 2. Configure nginx reverse proxy
|
|
67
|
-
|
|
68
|
-
```nginx
|
|
69
|
-
server {
|
|
70
|
-
listen 443 ssl http2;
|
|
71
|
-
server_name cbrowser-mcp-demo.yourdomain.com;
|
|
72
|
-
|
|
73
|
-
ssl_certificate /path/to/cert.pem;
|
|
74
|
-
ssl_certificate_key /path/to/key.pem;
|
|
75
|
-
|
|
76
|
-
# Rate limiting at nginx level (additional protection)
|
|
77
|
-
limit_req_zone $binary_remote_addr zone=mcp_demo:10m rate=10r/m;
|
|
78
|
-
|
|
79
|
-
location / {
|
|
80
|
-
limit_req zone=mcp_demo burst=5 nodelay;
|
|
81
|
-
|
|
82
|
-
proxy_pass http://127.0.0.1:3000;
|
|
83
|
-
proxy_http_version 1.1;
|
|
84
|
-
proxy_set_header Host $host;
|
|
85
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
86
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
87
|
-
proxy_set_header X-Forwarded-Proto $scheme;
|
|
88
|
-
|
|
89
|
-
# SSE support for MCP
|
|
90
|
-
proxy_set_header Connection '';
|
|
91
|
-
proxy_buffering off;
|
|
92
|
-
proxy_cache off;
|
|
93
|
-
proxy_read_timeout 86400;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### 3. Reload nginx
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
sudo nginx -t && sudo systemctl reload nginx
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## Monitoring
|
|
105
|
-
|
|
106
|
-
### Check container health
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
# Status
|
|
110
|
-
docker inspect --format='{{.State.Health.Status}}' cbrowser-mcp-demo
|
|
111
|
-
|
|
112
|
-
# Logs (last 100 lines)
|
|
113
|
-
docker logs --tail 100 cbrowser-mcp-demo
|
|
114
|
-
|
|
115
|
-
# Resource usage
|
|
116
|
-
docker stats cbrowser-mcp-demo --no-stream
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Set up alerts (optional)
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# Simple health check cron (add to crontab)
|
|
123
|
-
*/5 * * * * curl -sf http://localhost:3000/health || echo "MCP Demo Down" | mail -s "Alert" you@email.com
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## Troubleshooting
|
|
127
|
-
|
|
128
|
-
### Container keeps restarting
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
# Check logs
|
|
132
|
-
docker logs cbrowser-mcp-demo
|
|
133
|
-
|
|
134
|
-
# Common issues:
|
|
135
|
-
# - Port 3000 already in use
|
|
136
|
-
# - Not enough memory (needs 2GB)
|
|
137
|
-
# - Playwright browser install failed
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Out of memory
|
|
141
|
-
|
|
142
|
-
If you see OOM kills, the 2GB limit may not be enough for your workload. Edit `docker-compose.demo.yml`:
|
|
143
|
-
|
|
144
|
-
```yaml
|
|
145
|
-
mem_limit: 3g # Increase to 3GB
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Rate limit too strict
|
|
149
|
-
|
|
150
|
-
The built-in rate limit is 5 req/min. For a private demo, you can disable it:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
# In docker-compose.demo.yml, add:
|
|
154
|
-
environment:
|
|
155
|
-
- MCP_DISABLE_RATE_LIMIT=true # Only for private demos!
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
## Updating
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
# Pull latest
|
|
162
|
-
docker-compose -f docker-compose.demo.yml pull
|
|
163
|
-
|
|
164
|
-
# Recreate container
|
|
165
|
-
docker-compose -f docker-compose.demo.yml up -d --force-recreate
|
|
166
|
-
|
|
167
|
-
# Clean old images
|
|
168
|
-
docker image prune -f
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## Security Considerations
|
|
172
|
-
|
|
173
|
-
1. **Don't expose without HTTPS** — Use nginx/Caddy with TLS
|
|
174
|
-
2. **Keep rate limits on** — The demo is public
|
|
175
|
-
3. **Monitor resource usage** — Set up alerts for high CPU/memory
|
|
176
|
-
4. **Update regularly** — Keep the container image updated
|
|
177
|
-
5. **Consider IP allowlisting** — If demo is for specific users only
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
> **This documentation is no longer maintained here.**
|
|
2
|
-
>
|
|
3
|
-
> For the latest version, please visit: **[CBrowser Enterprise Integration Guide](https://cbrowser.ai/docs/ENTERPRISE-INTEGRATION)**
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CBrowser Enterprise Integration Guide
|
|
8
|
-
|
|
9
|
-
This document explains how to integrate the private `cbrowser-enterprise` package with the public `cbrowser` package.
|
|
10
|
-
|
|
11
|
-
## Architecture Overview
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
15
|
-
│ cbrowser (public npm) │
|
|
16
|
-
│ ├── IConstitutionalEnforcer (interface) │
|
|
17
|
-
│ ├── BaseConstitutionalEnforcer (abstract base class) │
|
|
18
|
-
│ ├── NoOpConstitutionalEnforcer (fallback) │
|
|
19
|
-
│ └── getEnforcer() → dynamic loader │
|
|
20
|
-
└─────────────────────────────────────────────────────────────┘
|
|
21
|
-
│
|
|
22
|
-
│ dynamic import (optional)
|
|
23
|
-
▼
|
|
24
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
25
|
-
│ cbrowser-enterprise (private npm/GitHub Packages) │
|
|
26
|
-
│ ├── EnterpriseConstitutionalEnforcer │
|
|
27
|
-
│ │ ├── applyStealthMeasures() — real implementation │
|
|
28
|
-
│ │ ├── persistAuditEntry() — database logging │
|
|
29
|
-
│ │ └── Full fingerprint evasion suite │
|
|
30
|
-
│ └── exports { EnterpriseConstitutionalEnforcer, version } │
|
|
31
|
-
└─────────────────────────────────────────────────────────────┘
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Enterprise Package Structure
|
|
35
|
-
|
|
36
|
-
Create a private repository `cbrowser-enterprise`:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
cbrowser-enterprise/
|
|
40
|
-
├── package.json
|
|
41
|
-
├── tsconfig.json
|
|
42
|
-
├── src/
|
|
43
|
-
│ ├── index.ts # Main exports
|
|
44
|
-
│ ├── enforcer.ts # EnterpriseConstitutionalEnforcer
|
|
45
|
-
│ ├── stealth/
|
|
46
|
-
│ │ ├── fingerprint.ts # Browser fingerprint normalization
|
|
47
|
-
│ │ ├── webdriver.ts # WebDriver flag patching
|
|
48
|
-
│ │ ├── timing.ts # Human-like timing injection
|
|
49
|
-
│ │ └── canvas.ts # Canvas/WebGL normalization
|
|
50
|
-
│ └── audit/
|
|
51
|
-
│ └── persistence.ts # Audit log database
|
|
52
|
-
└── dist/ # Compiled output
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### package.json (Enterprise)
|
|
56
|
-
|
|
57
|
-
```json
|
|
58
|
-
{
|
|
59
|
-
"name": "cbrowser-enterprise",
|
|
60
|
-
"version": "1.0.0",
|
|
61
|
-
"type": "module",
|
|
62
|
-
"main": "dist/index.js",
|
|
63
|
-
"types": "dist/index.d.ts",
|
|
64
|
-
"private": true,
|
|
65
|
-
"peerDependencies": {
|
|
66
|
-
"cbrowser": ">=15.0.0"
|
|
67
|
-
},
|
|
68
|
-
"publishConfig": {
|
|
69
|
-
"registry": "https://npm.pkg.github.com"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### src/index.ts (Enterprise)
|
|
75
|
-
|
|
76
|
-
```typescript
|
|
77
|
-
export { EnterpriseConstitutionalEnforcer } from "./enforcer.js";
|
|
78
|
-
export const version = "1.0.0";
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### src/enforcer.ts (Enterprise Template)
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
import {
|
|
85
|
-
BaseConstitutionalEnforcer,
|
|
86
|
-
type StealthConfig,
|
|
87
|
-
type StealthAuditEntry,
|
|
88
|
-
} from "cbrowser";
|
|
89
|
-
import type { Page } from "playwright";
|
|
90
|
-
|
|
91
|
-
export class EnterpriseConstitutionalEnforcer extends BaseConstitutionalEnforcer {
|
|
92
|
-
constructor(config?: Partial<StealthConfig>) {
|
|
93
|
-
super(config);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Persist audit entries to database
|
|
98
|
-
*/
|
|
99
|
-
protected async persistAuditEntry(entry: StealthAuditEntry): Promise<void> {
|
|
100
|
-
// TODO: Implement database persistence
|
|
101
|
-
// - SQLite for local
|
|
102
|
-
// - PostgreSQL for production
|
|
103
|
-
console.log("[Enterprise] Audit:", JSON.stringify(entry));
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Apply stealth measures to page
|
|
108
|
-
*/
|
|
109
|
-
async applyStealthMeasures(page: Page): Promise<void> {
|
|
110
|
-
// 1. Patch navigator.webdriver
|
|
111
|
-
await page.addInitScript(() => {
|
|
112
|
-
Object.defineProperty(navigator, "webdriver", {
|
|
113
|
-
get: () => undefined,
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// 2. Inject realistic plugins
|
|
118
|
-
await page.addInitScript(() => {
|
|
119
|
-
Object.defineProperty(navigator, "plugins", {
|
|
120
|
-
get: () => [
|
|
121
|
-
{ name: "Chrome PDF Plugin" },
|
|
122
|
-
{ name: "Chrome PDF Viewer" },
|
|
123
|
-
{ name: "Native Client" },
|
|
124
|
-
],
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
// 3. Patch chrome object
|
|
129
|
-
await page.addInitScript(() => {
|
|
130
|
-
(window as any).chrome = {
|
|
131
|
-
runtime: {},
|
|
132
|
-
loadTimes: () => {},
|
|
133
|
-
csi: () => {},
|
|
134
|
-
};
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
// 4. Normalize WebGL fingerprint
|
|
138
|
-
await this.normalizeWebGL(page);
|
|
139
|
-
|
|
140
|
-
// 5. Add human-like mouse movement patterns
|
|
141
|
-
// (Injected via persona's humanBehavior traits)
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
private async normalizeWebGL(page: Page): Promise<void> {
|
|
145
|
-
await page.addInitScript(() => {
|
|
146
|
-
const getParameterProxy = new Proxy(
|
|
147
|
-
WebGLRenderingContext.prototype.getParameter,
|
|
148
|
-
{
|
|
149
|
-
apply(target, thisArg, args) {
|
|
150
|
-
const param = args[0];
|
|
151
|
-
// Normalize common fingerprint vectors
|
|
152
|
-
if (param === 37445) return "Intel Inc."; // UNMASKED_VENDOR
|
|
153
|
-
if (param === 37446) return "Intel Iris OpenGL Engine"; // UNMASKED_RENDERER
|
|
154
|
-
return Reflect.apply(target, thisArg, args);
|
|
155
|
-
},
|
|
156
|
-
}
|
|
157
|
-
);
|
|
158
|
-
WebGLRenderingContext.prototype.getParameter = getParameterProxy;
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Publishing Enterprise Package
|
|
165
|
-
|
|
166
|
-
### Option 1: GitHub Packages (Recommended)
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
# In cbrowser-enterprise repo
|
|
170
|
-
npm login --registry=https://npm.pkg.github.com --scope=@yourorg
|
|
171
|
-
npm publish
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Option 2: Private npm Registry
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
# Using Verdaccio or npm Enterprise
|
|
178
|
-
npm publish --registry https://your-private-registry.com
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Option 3: Git Dependency
|
|
182
|
-
|
|
183
|
-
```json
|
|
184
|
-
{
|
|
185
|
-
"dependencies": {
|
|
186
|
-
"cbrowser-enterprise": "git+ssh://git@github.com:yourorg/cbrowser-enterprise.git"
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Installing Enterprise for MCP Server
|
|
192
|
-
|
|
193
|
-
On your MCP server host:
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
# Install public package
|
|
197
|
-
npm install cbrowser
|
|
198
|
-
|
|
199
|
-
# Install enterprise (with auth)
|
|
200
|
-
npm install cbrowser-enterprise --registry https://npm.pkg.github.com
|
|
201
|
-
|
|
202
|
-
# Or with .npmrc
|
|
203
|
-
echo "@yourorg:registry=https://npm.pkg.github.com" >> .npmrc
|
|
204
|
-
echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" >> .npmrc
|
|
205
|
-
npm install @yourorg/cbrowser-enterprise
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Usage in MCP Server
|
|
209
|
-
|
|
210
|
-
The MCP server automatically detects enterprise:
|
|
211
|
-
|
|
212
|
-
```typescript
|
|
213
|
-
import { getEnforcer, printEnterpriseStatus } from "cbrowser";
|
|
214
|
-
|
|
215
|
-
// On startup
|
|
216
|
-
await printEnterpriseStatus();
|
|
217
|
-
|
|
218
|
-
// When creating browser with stealth
|
|
219
|
-
const enforcer = await getEnforcer({
|
|
220
|
-
enabled: true,
|
|
221
|
-
authorization: {
|
|
222
|
-
authorizedDomains: ["*.yourdomain.com"],
|
|
223
|
-
},
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
// Use enforcer with browser
|
|
227
|
-
const browser = new CBrowser({ enforcer });
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Verification
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
# Check if enterprise is detected
|
|
234
|
-
npx cbrowser status
|
|
235
|
-
|
|
236
|
-
# Output with enterprise:
|
|
237
|
-
# ╔══════════════════════════════════════════════════════════╗
|
|
238
|
-
# ║ CBrowser Enterprise: ACTIVE ║
|
|
239
|
-
# ║ Version: 1.0.0 ║
|
|
240
|
-
# ║ Stealth capabilities: ENABLED ║
|
|
241
|
-
# ╚══════════════════════════════════════════════════════════╝
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Security Notes
|
|
245
|
-
|
|
246
|
-
1. **Never commit enterprise to public repo** - It's a separate private package
|
|
247
|
-
2. **Use GitHub Packages or private npm** - Not public npm registry
|
|
248
|
-
3. **Rotate access tokens** - Use short-lived tokens for CI/CD
|
|
249
|
-
4. **Audit logs are immutable** - Cannot be disabled or cleared
|
|
250
|
-
5. **Rate limits enforced** - Minimum limits cannot be lowered
|
package/docs/GETTING-STARTED.md
DELETED
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
> **This documentation is no longer maintained here.**
|
|
2
|
-
>
|
|
3
|
-
> For the latest version, please visit: **[Getting Started with CBrowser](https://cbrowser.ai/docs/GETTING-STARTED)**
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Getting Started with CBrowser
|
|
8
|
-
|
|
9
|
-
CBrowser (Cognitive Browser) is the browser automation that thinks like your users. This guide will get you up and running quickly.
|
|
10
|
-
|
|
11
|
-
## Installation
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install cbrowser
|
|
15
|
-
npx playwright install chromium
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Your First Commands
|
|
19
|
-
|
|
20
|
-
### Navigate to a Page
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npx cbrowser navigate "https://example.com"
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### Click with Self-Healing Selectors
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npx cbrowser smart-click "Add to Cart"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
CBrowser uses AI to find elements by description, not brittle CSS selectors. If the DOM changes, the self-healing system adapts automatically.
|
|
33
|
-
|
|
34
|
-
### Natural Language Assertions
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx cbrowser assert "page contains 'Order Confirmed'"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### Take a Screenshot
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npx cbrowser screenshot --path order-confirmation.png
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Cognitive User Simulation
|
|
47
|
-
|
|
48
|
-
This is what makes CBrowser unique. Instead of just clicking buttons, it simulates how real users think:
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
npx cbrowser cognitive-journey \
|
|
52
|
-
--persona first-timer \
|
|
53
|
-
--start "https://example.com" \
|
|
54
|
-
--goal "complete checkout"
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
The simulation tracks:
|
|
58
|
-
- **Patience** - Will they wait for slow pages?
|
|
59
|
-
- **Confusion** - Are they getting lost?
|
|
60
|
-
- **Frustration** - Are errors piling up?
|
|
61
|
-
- **Abandonment** - When will they give up?
|
|
62
|
-
|
|
63
|
-
### Output Example
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
=== Cognitive Journey: first-timer ===
|
|
67
|
-
Goal: complete checkout
|
|
68
|
-
Start: https://example.com
|
|
69
|
-
|
|
70
|
-
Step 1: Looking for product catalog
|
|
71
|
-
Action: click "Shop Now"
|
|
72
|
-
Patience: 95% | Confusion: 5%
|
|
73
|
-
|
|
74
|
-
Step 2: Found products, browsing
|
|
75
|
-
Action: click first product
|
|
76
|
-
Patience: 90% | Confusion: 10%
|
|
77
|
-
|
|
78
|
-
...
|
|
79
|
-
|
|
80
|
-
Step 8: ABANDONED
|
|
81
|
-
Reason: Patience depleted (8%)
|
|
82
|
-
Thought: "This password form is too confusing..."
|
|
83
|
-
Friction points:
|
|
84
|
-
- Password requirements unclear (step 6)
|
|
85
|
-
- Form validation error not visible (step 7)
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Built-in Personas
|
|
89
|
-
|
|
90
|
-
| Persona | Description |
|
|
91
|
-
|---------|-------------|
|
|
92
|
-
| `power-user` | Tech-savvy, expects efficiency |
|
|
93
|
-
| `first-timer` | New user, explores carefully |
|
|
94
|
-
| `mobile-user` | Smartphone, touch interface |
|
|
95
|
-
| `elderly-user` | Patient, careful, vision/motor considerations |
|
|
96
|
-
| `impatient-user` | Quick to abandon on friction |
|
|
97
|
-
| `screen-reader-user` | Uses assistive technology |
|
|
98
|
-
|
|
99
|
-
## Create Custom Personas
|
|
100
|
-
|
|
101
|
-
Use the questionnaire system to create research-backed custom personas:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Interactive questionnaire
|
|
105
|
-
npx cbrowser persona-questionnaire start --name "anxious-newbie"
|
|
106
|
-
|
|
107
|
-
# The system asks behavioral questions and derives trait values
|
|
108
|
-
# with proper research-backed correlations
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## Natural Language Tests
|
|
112
|
-
|
|
113
|
-
Write tests in plain English:
|
|
114
|
-
|
|
115
|
-
```txt
|
|
116
|
-
# checkout-test.txt
|
|
117
|
-
go to https://example.com/products
|
|
118
|
-
click "Add to Cart" button
|
|
119
|
-
verify page contains "1 item in cart"
|
|
120
|
-
click checkout
|
|
121
|
-
fill email with "test@example.com"
|
|
122
|
-
click "Place Order"
|
|
123
|
-
verify url contains "/confirmation"
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Run them:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
npx cbrowser test-suite checkout-test.txt --html
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## Visual Testing
|
|
133
|
-
|
|
134
|
-
### Capture Baseline
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
npx cbrowser ai-visual capture "https://example.com" --name homepage
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Test Against Baseline
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
npx cbrowser ai-visual test "https://staging.example.com" homepage --html
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### Cross-Browser Comparison
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
npx cbrowser cross-browser "https://example.com" --html
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Responsive Testing
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
npx cbrowser responsive "https://example.com" --html
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
## Constitutional AI Safety
|
|
159
|
-
|
|
160
|
-
CBrowser classifies every action by risk level:
|
|
161
|
-
|
|
162
|
-
| Zone | Examples | Behavior |
|
|
163
|
-
|------|----------|----------|
|
|
164
|
-
| Green | Navigate, read, screenshot | Auto-execute |
|
|
165
|
-
| Yellow | Click buttons, fill forms | Log and proceed |
|
|
166
|
-
| Red | Submit, delete, purchase | Requires verification |
|
|
167
|
-
| Black | Bypass auth, inject scripts | Never executes |
|
|
168
|
-
|
|
169
|
-
This prevents AI agents from accidentally submitting forms, deleting data, or making purchases.
|
|
170
|
-
|
|
171
|
-
## API Key for Cognitive Features
|
|
172
|
-
|
|
173
|
-
Some features require an Anthropic API key:
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
npx cbrowser config set-api-key
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## MCP Integration
|
|
180
|
-
|
|
181
|
-
### Claude Desktop
|
|
182
|
-
|
|
183
|
-
Add to `claude_desktop_config.json`:
|
|
184
|
-
|
|
185
|
-
```json
|
|
186
|
-
{
|
|
187
|
-
"mcpServers": {
|
|
188
|
-
"cbrowser": {
|
|
189
|
-
"command": "npx",
|
|
190
|
-
"args": ["cbrowser", "mcp-server"]
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### claude.ai (Remote)
|
|
197
|
-
|
|
198
|
-
Use the public demo server:
|
|
199
|
-
```
|
|
200
|
-
https://demo.cbrowser.ai/mcp
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
Or deploy your own: see [MCP Integration](./MCP-INTEGRATION.md).
|
|
204
|
-
|
|
205
|
-
## Next Steps
|
|
206
|
-
|
|
207
|
-
- [Cognitive Simulation](./COGNITIVE-SIMULATION.md) - Deep dive into user simulation
|
|
208
|
-
- [Persona Questionnaire](./PERSONA-QUESTIONNAIRE.md) - Create custom personas
|
|
209
|
-
- [Natural Language Tests](./NATURAL-LANGUAGE-TESTS.md) - Write tests in English
|
|
210
|
-
- [Visual Testing](./VISUAL-TESTING.md) - Screenshot-based regression testing
|
|
211
|
-
- [MCP Integration](./MCP-INTEGRATION.md) - Full Claude integration guide
|
|
212
|
-
|
|
213
|
-
## Quick Reference
|
|
214
|
-
|
|
215
|
-
| Command | Description |
|
|
216
|
-
|---------|-------------|
|
|
217
|
-
| `npx cbrowser navigate <url>` | Navigate to URL |
|
|
218
|
-
| `npx cbrowser click <selector>` | Click element |
|
|
219
|
-
| `npx cbrowser smart-click <text>` | AI-powered click |
|
|
220
|
-
| `npx cbrowser fill <selector> <value>` | Fill input |
|
|
221
|
-
| `npx cbrowser screenshot` | Capture screenshot |
|
|
222
|
-
| `npx cbrowser assert <assertion>` | Verify condition |
|
|
223
|
-
| `npx cbrowser cognitive-journey` | Run user simulation |
|
|
224
|
-
| `npx cbrowser test-suite <file>` | Run NL tests |
|
|
225
|
-
| `npx cbrowser ai-visual capture` | Capture baseline |
|
|
226
|
-
| `npx cbrowser ai-visual test` | Run visual test |
|
|
227
|
-
| `npx cbrowser cross-browser` | Cross-browser test |
|
|
228
|
-
| `npx cbrowser responsive` | Responsive test |
|
|
229
|
-
| `npx cbrowser agent-ready-audit` | Audit for AI agents |
|
|
230
|
-
| `npx cbrowser empathy-audit` | Disability simulation |
|
|
231
|
-
| `npx cbrowser persona-questionnaire` | Create custom persona |
|
|
232
|
-
| `npx cbrowser status` | Check environment |
|