web-agent-bridge 1.2.0 → 2.0.0
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/LICENSE +21 -21
- package/README.ar.md +446 -446
- package/README.md +780 -933
- package/bin/cli.js +80 -80
- package/bin/wab.js +80 -80
- package/examples/bidi-agent.js +119 -119
- package/examples/mcp-agent.js +94 -94
- package/examples/next-app-router/README.md +44 -0
- package/examples/puppeteer-agent.js +108 -108
- package/examples/saas-dashboard/README.md +55 -0
- package/examples/shopify-hydrogen/README.md +74 -0
- package/examples/vision-agent.js +171 -171
- package/examples/wordpress-elementor/README.md +77 -0
- package/package.json +69 -78
- package/public/.well-known/ai-assets.json +59 -0
- package/public/admin/login.html +84 -84
- package/public/ai.html +196 -0
- package/public/cookies.html +208 -208
- package/public/css/premium.css +317 -0
- package/public/css/styles.css +1235 -1235
- package/public/dashboard.html +704 -704
- package/public/demo.html +259 -0
- package/public/docs.html +585 -585
- package/public/feed.xml +89 -0
- package/public/index.html +495 -332
- package/public/js/auth-nav.js +31 -31
- package/public/js/auth-redirect.js +12 -12
- package/public/js/cookie-consent.js +56 -56
- package/public/js/wab-demo-page.js +721 -0
- package/public/js/ws-client.js +74 -74
- package/public/llms-full.txt +309 -0
- package/public/llms.txt +85 -0
- package/public/login.html +83 -83
- package/public/openapi.json +580 -0
- package/public/premium-dashboard.html +2487 -0
- package/public/premium.html +791 -0
- package/public/privacy.html +295 -295
- package/public/register.html +103 -103
- package/public/robots.txt +87 -0
- package/public/script/wab-consent.d.ts +36 -0
- package/public/script/wab-consent.js +104 -0
- package/public/script/wab-schema.js +131 -0
- package/public/script/wab.d.ts +108 -0
- package/public/script/wab.min.js +234 -0
- package/public/sitemap.xml +93 -0
- package/public/terms.html +254 -254
- package/public/video/tutorial.mp4 +0 -0
- package/script/ai-agent-bridge.js +1558 -1513
- package/sdk/README.md +55 -55
- package/sdk/index.d.ts +118 -0
- package/sdk/index.js +257 -203
- package/sdk/package.json +14 -14
- package/sdk/schema-discovery.js +83 -0
- package/server/config/secrets.js +94 -92
- package/server/index.js +0 -9
- package/server/middleware/adminAuth.js +30 -30
- package/server/middleware/auth.js +41 -41
- package/server/middleware/rateLimits.js +24 -24
- package/server/migrations/001_add_analytics_indexes.sql +7 -7
- package/server/migrations/002_premium_features.sql +418 -0
- package/server/models/adapters/index.js +33 -33
- package/server/models/adapters/mysql.js +183 -183
- package/server/models/adapters/postgresql.js +172 -172
- package/server/models/adapters/sqlite.js +7 -7
- package/server/models/db.js +561 -561
- package/server/routes/admin-premium.js +671 -0
- package/server/routes/admin.js +247 -247
- package/server/routes/api.js +131 -138
- package/server/routes/auth.js +51 -51
- package/server/routes/billing.js +45 -45
- package/server/routes/discovery.js +406 -329
- package/server/routes/license.js +240 -240
- package/server/routes/noscript.js +543 -543
- package/server/routes/premium-v2.js +686 -0
- package/server/routes/premium.js +724 -0
- package/server/routes/wab-api.js +476 -476
- package/server/services/agent-memory.js +625 -0
- package/server/services/email.js +204 -204
- package/server/services/fairness.js +420 -420
- package/server/services/plugins.js +747 -0
- package/server/services/premium.js +1883 -0
- package/server/services/self-healing.js +843 -0
- package/server/services/stripe.js +192 -192
- package/server/services/swarm.js +788 -0
- package/server/services/vision.js +871 -0
- package/server/utils/cache.js +125 -125
- package/server/utils/migrate.js +81 -81
- package/server/utils/secureFields.js +50 -50
- package/server/ws.js +101 -101
- package/docs/DEPLOY.md +0 -118
- package/docs/SPEC.md +0 -1540
- package/wab-mcp-adapter/README.md +0 -136
- package/wab-mcp-adapter/index.js +0 -555
- package/wab-mcp-adapter/package.json +0 -17
package/public/js/ws-client.js
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WAB WebSocket Client with auto-reconnect and exponential backoff
|
|
3
|
-
* Usage:
|
|
4
|
-
* const ws = new WABWebSocket(token, siteId);
|
|
5
|
-
* ws.on('analytic', (data) => console.log(data));
|
|
6
|
-
* ws.connect();
|
|
7
|
-
*/
|
|
8
|
-
class WABWebSocket {
|
|
9
|
-
constructor(token, siteId, options = {}) {
|
|
10
|
-
this.token = token;
|
|
11
|
-
this.siteId = siteId;
|
|
12
|
-
this.maxRetries = options.maxRetries || 10;
|
|
13
|
-
this.baseDelay = options.baseDelay || 1000;
|
|
14
|
-
this.maxDelay = options.maxDelay || 30000;
|
|
15
|
-
this._retries = 0;
|
|
16
|
-
this._ws = null;
|
|
17
|
-
this._listeners = {};
|
|
18
|
-
this._closed = false;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
connect() {
|
|
22
|
-
if (this._closed) return;
|
|
23
|
-
const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
24
|
-
this._ws = new WebSocket(`${proto}//${location.host}/ws/analytics`);
|
|
25
|
-
|
|
26
|
-
this._ws.onopen = () => {
|
|
27
|
-
this._retries = 0;
|
|
28
|
-
this._ws.send(JSON.stringify({ type: 'auth', token: this.token, siteId: this.siteId }));
|
|
29
|
-
this._emit('connected');
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
this._ws.onmessage = (e) => {
|
|
33
|
-
try {
|
|
34
|
-
const msg = JSON.parse(e.data);
|
|
35
|
-
this._emit(msg.type, msg);
|
|
36
|
-
} catch { /* ignore malformed */ }
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
this._ws.onclose = () => {
|
|
40
|
-
this._emit('disconnected');
|
|
41
|
-
this._reconnect();
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
this._ws.onerror = () => {
|
|
45
|
-
this._ws.close();
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
_reconnect() {
|
|
50
|
-
if (this._closed || this._retries >= this.maxRetries) {
|
|
51
|
-
this._emit('max_retries');
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const delay = Math.min(this.baseDelay * Math.pow(2, this._retries), this.maxDelay);
|
|
55
|
-
const jitter = delay * (0.5 + Math.random() * 0.5);
|
|
56
|
-
this._retries++;
|
|
57
|
-
this._emit('reconnecting', { attempt: this._retries, delay: Math.round(jitter) });
|
|
58
|
-
setTimeout(() => this.connect(), jitter);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
on(event, cb) {
|
|
62
|
-
if (!this._listeners[event]) this._listeners[event] = [];
|
|
63
|
-
this._listeners[event].push(cb);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
_emit(event, data) {
|
|
67
|
-
(this._listeners[event] || []).forEach(cb => { try { cb(data); } catch {} });
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
close() {
|
|
71
|
-
this._closed = true;
|
|
72
|
-
if (this._ws) this._ws.close();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* WAB WebSocket Client with auto-reconnect and exponential backoff
|
|
3
|
+
* Usage:
|
|
4
|
+
* const ws = new WABWebSocket(token, siteId);
|
|
5
|
+
* ws.on('analytic', (data) => console.log(data));
|
|
6
|
+
* ws.connect();
|
|
7
|
+
*/
|
|
8
|
+
class WABWebSocket {
|
|
9
|
+
constructor(token, siteId, options = {}) {
|
|
10
|
+
this.token = token;
|
|
11
|
+
this.siteId = siteId;
|
|
12
|
+
this.maxRetries = options.maxRetries || 10;
|
|
13
|
+
this.baseDelay = options.baseDelay || 1000;
|
|
14
|
+
this.maxDelay = options.maxDelay || 30000;
|
|
15
|
+
this._retries = 0;
|
|
16
|
+
this._ws = null;
|
|
17
|
+
this._listeners = {};
|
|
18
|
+
this._closed = false;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
connect() {
|
|
22
|
+
if (this._closed) return;
|
|
23
|
+
const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
24
|
+
this._ws = new WebSocket(`${proto}//${location.host}/ws/analytics`);
|
|
25
|
+
|
|
26
|
+
this._ws.onopen = () => {
|
|
27
|
+
this._retries = 0;
|
|
28
|
+
this._ws.send(JSON.stringify({ type: 'auth', token: this.token, siteId: this.siteId }));
|
|
29
|
+
this._emit('connected');
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
this._ws.onmessage = (e) => {
|
|
33
|
+
try {
|
|
34
|
+
const msg = JSON.parse(e.data);
|
|
35
|
+
this._emit(msg.type, msg);
|
|
36
|
+
} catch { /* ignore malformed */ }
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
this._ws.onclose = () => {
|
|
40
|
+
this._emit('disconnected');
|
|
41
|
+
this._reconnect();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
this._ws.onerror = () => {
|
|
45
|
+
this._ws.close();
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
_reconnect() {
|
|
50
|
+
if (this._closed || this._retries >= this.maxRetries) {
|
|
51
|
+
this._emit('max_retries');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const delay = Math.min(this.baseDelay * Math.pow(2, this._retries), this.maxDelay);
|
|
55
|
+
const jitter = delay * (0.5 + Math.random() * 0.5);
|
|
56
|
+
this._retries++;
|
|
57
|
+
this._emit('reconnecting', { attempt: this._retries, delay: Math.round(jitter) });
|
|
58
|
+
setTimeout(() => this.connect(), jitter);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
on(event, cb) {
|
|
62
|
+
if (!this._listeners[event]) this._listeners[event] = [];
|
|
63
|
+
this._listeners[event].push(cb);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
_emit(event, data) {
|
|
67
|
+
(this._listeners[event] || []).forEach(cb => { try { cb(data); } catch {} });
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
close() {
|
|
71
|
+
this._closed = true;
|
|
72
|
+
if (this._ws) this._ws.close();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# Web Agent Bridge (WAB) — Complete Reference for AI Models
|
|
2
|
+
|
|
3
|
+
> This document provides comprehensive information about Web Agent Bridge for consumption by large language models, AI assistants, and automated systems.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Project Identity
|
|
8
|
+
|
|
9
|
+
- **Name**: Web Agent Bridge (WAB)
|
|
10
|
+
- **Tagline**: Open protocol for AI agent ↔ website interaction
|
|
11
|
+
- **Version**: 1.2.0
|
|
12
|
+
- **Protocol Version**: WAB Protocol 1.0
|
|
13
|
+
- **License**: MIT
|
|
14
|
+
- **Language**: JavaScript / Node.js
|
|
15
|
+
- **Created**: 2026
|
|
16
|
+
- **Website**: https://webagentbridge.com
|
|
17
|
+
- **npm Package**: web-agent-bridge (https://www.npmjs.com/package/web-agent-bridge)
|
|
18
|
+
- **GitHub**: https://github.com/abokenan444/web-agent-bridge
|
|
19
|
+
- **Security**: https://socket.dev/npm/package/web-agent-bridge
|
|
20
|
+
- **YouTube**: https://youtube.com/@abokenan4
|
|
21
|
+
- **Specification**: https://webagentbridge.com/docs (also at docs/SPEC.md in repository)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Problem Statement
|
|
26
|
+
|
|
27
|
+
The current web was designed for humans browsing with screens. AI agents attempting to interact with websites face:
|
|
28
|
+
|
|
29
|
+
- **Fragile selectors**: CSS/XPath selectors break when UI changes
|
|
30
|
+
- **No permission model**: Agents scrape without consent or boundaries
|
|
31
|
+
- **Bias toward large platforms**: AI models recommend known brands over small businesses
|
|
32
|
+
- **No standard protocol**: Each automation tool invents its own approach
|
|
33
|
+
- **JavaScript dependency**: Many agents cannot execute JavaScript
|
|
34
|
+
|
|
35
|
+
WAB solves all of these by providing a standardized, fair, permission-aware protocol for AI-website interaction.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. Architecture
|
|
40
|
+
|
|
41
|
+
WAB consists of three decoupled layers:
|
|
42
|
+
|
|
43
|
+
### 3.1 WAB Protocol (Specification)
|
|
44
|
+
The protocol defines:
|
|
45
|
+
- **Discovery Protocol**: How sites declare capabilities via `agent-bridge.json`
|
|
46
|
+
- **Command Protocol**: Standardized JSON format for actions
|
|
47
|
+
- **Lifecycle Protocol**: Five-phase interaction model
|
|
48
|
+
- **Security Model**: Permission-based access control
|
|
49
|
+
- **Fairness Protocol**: Anti-bias algorithms for equitable discovery
|
|
50
|
+
|
|
51
|
+
### 3.2 WAB Runtime (JavaScript SDK)
|
|
52
|
+
Client-side script (`ai-agent-bridge.js`) that:
|
|
53
|
+
- Exposes `window.AICommands` interface
|
|
54
|
+
- Registers and executes actions
|
|
55
|
+
- Enforces permissions and rate limits
|
|
56
|
+
- Provides auto-discovery of page elements
|
|
57
|
+
- Falls back to NoScript mode when JS is disabled
|
|
58
|
+
|
|
59
|
+
### 3.3 WAB Transport (Server)
|
|
60
|
+
Node.js server providing:
|
|
61
|
+
- REST API endpoints (`/api/wab/*`)
|
|
62
|
+
- License verification and tier management
|
|
63
|
+
- Analytics and audit logging
|
|
64
|
+
- Stripe billing integration
|
|
65
|
+
- WebSocket real-time analytics
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 4. Discovery Protocol
|
|
70
|
+
|
|
71
|
+
Websites serve a discovery document at one of these URLs:
|
|
72
|
+
- `/agent-bridge.json`
|
|
73
|
+
- `/.well-known/wab.json`
|
|
74
|
+
- `/api/wab/discover`
|
|
75
|
+
|
|
76
|
+
Example discovery document:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"wab_version": "1.2.0",
|
|
81
|
+
"protocol": "1.0",
|
|
82
|
+
"site": {
|
|
83
|
+
"name": "Example Store",
|
|
84
|
+
"domain": "example.com",
|
|
85
|
+
"description": "Online electronics store",
|
|
86
|
+
"platform": "custom"
|
|
87
|
+
},
|
|
88
|
+
"agent_access": {
|
|
89
|
+
"discovery": "https://example.com/api/wab/discover",
|
|
90
|
+
"actions": "https://example.com/api/wab/actions",
|
|
91
|
+
"execute": "https://example.com/api/wab/execute",
|
|
92
|
+
"ping": "https://example.com/api/wab/ping"
|
|
93
|
+
},
|
|
94
|
+
"permissions": {
|
|
95
|
+
"readContent": true,
|
|
96
|
+
"click": true,
|
|
97
|
+
"fillForms": true,
|
|
98
|
+
"scroll": true,
|
|
99
|
+
"navigate": true,
|
|
100
|
+
"apiAccess": false
|
|
101
|
+
},
|
|
102
|
+
"actions": [
|
|
103
|
+
{"name": "search", "description": "Search products", "category": "navigation"},
|
|
104
|
+
{"name": "addToCart", "description": "Add item to cart", "category": "commerce"},
|
|
105
|
+
{"name": "checkout", "description": "Proceed to checkout", "category": "commerce"}
|
|
106
|
+
],
|
|
107
|
+
"restrictions": {
|
|
108
|
+
"rate_limit": 60,
|
|
109
|
+
"blocked_selectors": [".private", "[data-no-agent]"]
|
|
110
|
+
},
|
|
111
|
+
"lifecycle": ["discover", "authenticate", "plan", "execute", "confirm"],
|
|
112
|
+
"transport": ["http", "javascript"]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 5. Command Protocol
|
|
119
|
+
|
|
120
|
+
Commands follow this JSON format:
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"action": "click",
|
|
125
|
+
"target": "#submit-button",
|
|
126
|
+
"context": {
|
|
127
|
+
"page": "/checkout",
|
|
128
|
+
"userIntent": "complete purchase"
|
|
129
|
+
},
|
|
130
|
+
"metadata": {
|
|
131
|
+
"agentId": "claude-3",
|
|
132
|
+
"sessionId": "abc123"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Supported Commands
|
|
138
|
+
|
|
139
|
+
| Command | Description | Parameters |
|
|
140
|
+
|---------|-------------|------------|
|
|
141
|
+
| `click` | Click an element | `target` (selector) |
|
|
142
|
+
| `fill` | Fill form field | `target`, `value` |
|
|
143
|
+
| `submit` | Submit a form | `target` |
|
|
144
|
+
| `navigate` | Go to URL | `url` |
|
|
145
|
+
| `scroll` | Scroll page | `direction`, `amount` |
|
|
146
|
+
| `read` | Read content | `target`, `format` |
|
|
147
|
+
| `select` | Select dropdown | `target`, `value` |
|
|
148
|
+
| `wait` | Wait for element | `target`, `timeout` |
|
|
149
|
+
| `screenshot` | Capture page | `format` |
|
|
150
|
+
| `execute` | Run custom action | `name`, `params` |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 6. Lifecycle Protocol
|
|
155
|
+
|
|
156
|
+
Every agent interaction follows five phases:
|
|
157
|
+
|
|
158
|
+
1. **Discover** — Agent fetches `agent-bridge.json` to learn site capabilities
|
|
159
|
+
2. **Authenticate** — Agent presents license key or API key
|
|
160
|
+
3. **Plan** — Agent analyzes available actions and plans execution
|
|
161
|
+
4. **Execute** — Agent sends commands; site processes them
|
|
162
|
+
5. **Confirm** — Agent verifies results; site logs the interaction
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 7. Fairness Engine
|
|
167
|
+
|
|
168
|
+
WAB includes a built-in fairness system to prevent AI bias:
|
|
169
|
+
|
|
170
|
+
- **Neutrality Score** (0-100): Calculated per site based on config completeness, trust signals, commission transparency
|
|
171
|
+
- **Anti-monopoly**: Agents must consider small businesses alongside large platforms
|
|
172
|
+
- **Transparent commissions**: Sites declare commission rates in discovery document
|
|
173
|
+
- **Local priority**: Supports `support_local` flag for local business preference
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 8. MCP Integration
|
|
178
|
+
|
|
179
|
+
The `wab-mcp-adapter` package converts WAB commands into MCP (Model Context Protocol) tools:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
npm install wab-mcp-adapter
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
```javascript
|
|
186
|
+
const { WABMCPAdapter } = require('wab-mcp-adapter');
|
|
187
|
+
const adapter = new WABMCPAdapter('https://example.com');
|
|
188
|
+
await adapter.connect();
|
|
189
|
+
const tools = adapter.getMCPTools(); // Returns MCP-compatible tool definitions
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
This means any MCP-enabled AI agent (Claude, LangChain, etc.) can interact with any WAB-enabled website.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 9. Installation & Quick Start
|
|
197
|
+
|
|
198
|
+
### npm
|
|
199
|
+
```bash
|
|
200
|
+
npm install web-agent-bridge
|
|
201
|
+
npx web-agent-bridge start
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Docker
|
|
205
|
+
```bash
|
|
206
|
+
docker pull webagentbridge/wab
|
|
207
|
+
docker run -p 3000:3000 webagentbridge/wab
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Script Tag
|
|
211
|
+
```html
|
|
212
|
+
<script src="https://webagentbridge.com/script/ai-agent-bridge.js"></script>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### WordPress
|
|
216
|
+
Upload the `web-agent-bridge-wordpress` plugin to `wp-content/plugins/` and activate.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 10. API Endpoints
|
|
221
|
+
|
|
222
|
+
| Endpoint | Method | Description |
|
|
223
|
+
|----------|--------|-------------|
|
|
224
|
+
| `/api/wab/discover` | GET | Discovery document |
|
|
225
|
+
| `/api/wab/actions` | GET | Available actions |
|
|
226
|
+
| `/api/wab/execute` | POST | Execute a command |
|
|
227
|
+
| `/api/wab/ping` | GET | Health check |
|
|
228
|
+
| `/api/wab/page-info` | GET | Page metadata |
|
|
229
|
+
| `/api/plans` | GET | Subscription plans |
|
|
230
|
+
| `/api/auth/register` | POST | Create account |
|
|
231
|
+
| `/api/auth/login` | POST | Authenticate |
|
|
232
|
+
| `/api/sites` | GET/POST | Manage sites |
|
|
233
|
+
| `/api/license/verify` | POST | Verify license key |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 11. Subscription Tiers
|
|
238
|
+
|
|
239
|
+
| Tier | Price | Sites | Actions/mo | Key Features |
|
|
240
|
+
|------|-------|-------|-----------|--------------|
|
|
241
|
+
| Free | $0 | 1 | 1,000 | Basic commands, community support |
|
|
242
|
+
| Starter | $9/mo | 3 | 10,000 | Form filling, analytics, email support |
|
|
243
|
+
| Pro | $29/mo | 10 | 100,000 | API access, CRM, stealth mode, CDN |
|
|
244
|
+
| Enterprise | Custom | Unlimited | Unlimited | SSO, SLA, sandbox, custom dev |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## 12. Comparison with Alternatives
|
|
249
|
+
|
|
250
|
+
### WAB vs Screen Scraping (Puppeteer, Playwright)
|
|
251
|
+
- WAB uses declared actions; scraping guesses from DOM
|
|
252
|
+
- WAB has permission model; scraping has none
|
|
253
|
+
- WAB survives UI changes; scraping breaks
|
|
254
|
+
|
|
255
|
+
### WAB vs Browser Automation (Selenium, Cypress)
|
|
256
|
+
- WAB works without a browser; automation needs one
|
|
257
|
+
- WAB is website-initiated; automation is agent-initiated
|
|
258
|
+
- WAB has built-in fairness; automation has bias
|
|
259
|
+
|
|
260
|
+
### WAB vs OpenAPI
|
|
261
|
+
- OpenAPI describes REST APIs; WAB describes website interactions
|
|
262
|
+
- WAB includes visual elements (click, scroll); OpenAPI is data-only
|
|
263
|
+
- WAB has discovery protocol; OpenAPI needs manual URL
|
|
264
|
+
|
|
265
|
+
### WAB vs MCP (Model Context Protocol)
|
|
266
|
+
- WAB and MCP are complementary, not competing
|
|
267
|
+
- WAB handles website interaction; MCP handles tool orchestration
|
|
268
|
+
- `wab-mcp-adapter` bridges both protocols
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 13. Frequently Asked Questions
|
|
273
|
+
|
|
274
|
+
**Q: Is WAB free?**
|
|
275
|
+
A: The core protocol and runtime are MIT-licensed and free forever. Premium features (analytics, CRM, stealth mode) require a subscription.
|
|
276
|
+
|
|
277
|
+
**Q: Does WAB work without JavaScript?**
|
|
278
|
+
A: Yes. The NoScript fallback provides meta tags, link elements, and REST API endpoints for HTTP-only agents.
|
|
279
|
+
|
|
280
|
+
**Q: How does WAB prevent abuse?**
|
|
281
|
+
A: Through permission model (sites declare what agents can do), rate limiting, blocked selectors, and audit logging.
|
|
282
|
+
|
|
283
|
+
**Q: Can I use WAB with ChatGPT/Claude?**
|
|
284
|
+
A: Yes. Via the MCP adapter, any MCP-enabled AI can interact with WAB sites. Direct API access is also available.
|
|
285
|
+
|
|
286
|
+
**Q: Is there a WordPress plugin?**
|
|
287
|
+
A: Yes. The official WordPress plugin adds discovery protocol, REST API endpoints, and NoScript fallback with one click.
|
|
288
|
+
|
|
289
|
+
**Q: What makes WAB different from robots.txt?**
|
|
290
|
+
A: robots.txt says "what you can crawl." WAB says "what you can do" — it's actionable, not just permissive.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 14. Keywords and Categories
|
|
295
|
+
|
|
296
|
+
- AI agent automation
|
|
297
|
+
- Website automation protocol
|
|
298
|
+
- Machine-readable web
|
|
299
|
+
- Agentic web standard
|
|
300
|
+
- AI-website interaction
|
|
301
|
+
- Browser automation alternative
|
|
302
|
+
- Fair AI discovery
|
|
303
|
+
- MCP integration
|
|
304
|
+
- Web scraping alternative
|
|
305
|
+
- OpenAPI for websites
|
|
306
|
+
- AI-ready websites
|
|
307
|
+
- WordPress AI plugin
|
|
308
|
+
- Agent discovery protocol
|
|
309
|
+
- Structured web commands
|
package/public/llms.txt
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Web Agent Bridge (WAB)
|
|
2
|
+
|
|
3
|
+
> Open protocol and runtime for AI agent ↔ website interaction.
|
|
4
|
+
|
|
5
|
+
## What is WAB?
|
|
6
|
+
|
|
7
|
+
Web Agent Bridge is an open standard that allows AI agents to interact with websites using structured commands instead of fragile DOM scraping. It provides a Discovery Protocol, Command Protocol, Lifecycle Protocol, and Fairness Engine — making the web machine-readable and agent-friendly.
|
|
8
|
+
|
|
9
|
+
## Key Facts
|
|
10
|
+
|
|
11
|
+
- **Type**: Open protocol + JavaScript runtime + Node.js server
|
|
12
|
+
- **License**: MIT
|
|
13
|
+
- **Version**: 1.2.0
|
|
14
|
+
- **Protocol**: WAB Protocol v1.0
|
|
15
|
+
- **Website**: https://webagentbridge.com
|
|
16
|
+
- **npm**: https://www.npmjs.com/package/web-agent-bridge
|
|
17
|
+
- **GitHub**: https://github.com/abokenan444/web-agent-bridge
|
|
18
|
+
- **Security Audit**: https://socket.dev/npm/package/web-agent-bridge
|
|
19
|
+
- **YouTube**: https://youtube.com/@abokenan4
|
|
20
|
+
|
|
21
|
+
## Problem It Solves
|
|
22
|
+
|
|
23
|
+
AI agents today interact with websites through brittle DOM scraping, CSS selectors that break, and screen parsing. WAB solves this by providing a standardized protocol that websites can implement to declare their capabilities, actions, and data — making agent interaction reliable, fast, and fair.
|
|
24
|
+
|
|
25
|
+
## Core Components
|
|
26
|
+
|
|
27
|
+
1. **Discovery Protocol** — Websites serve `agent-bridge.json` or `/.well-known/wab.json` to declare capabilities
|
|
28
|
+
2. **Command Protocol** — Standardized JSON format for agent commands (click, fill, navigate, read, submit)
|
|
29
|
+
3. **Lifecycle Protocol** — Five phases: Discover → Authenticate → Plan → Execute → Confirm
|
|
30
|
+
4. **Fairness Engine** — Prevents AI bias toward large platforms; ensures small businesses get equal visibility
|
|
31
|
+
5. **MCP Compatibility** — `wab-mcp-adapter` converts WAB commands into MCP tools for any LLM
|
|
32
|
+
6. **NoScript Fallback** — HTTP-only agents can interact via REST API when JavaScript is unavailable
|
|
33
|
+
|
|
34
|
+
## Use Cases
|
|
35
|
+
|
|
36
|
+
- Make any website AI-agent-ready in minutes
|
|
37
|
+
- Enable AI assistants (ChatGPT, Claude, Gemini) to interact with websites via structured commands
|
|
38
|
+
- Build fair AI shopping/booking agents that don't favor large platforms
|
|
39
|
+
- Create automation workflows without fragile selectors
|
|
40
|
+
- WordPress plugin available for one-click integration
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install web-agent-bridge
|
|
46
|
+
npx web-agent-bridge start
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or add the script to any HTML page:
|
|
50
|
+
|
|
51
|
+
```html
|
|
52
|
+
<script src="https://webagentbridge.com/script/ai-agent-bridge.js"></script>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## How WAB Compares
|
|
56
|
+
|
|
57
|
+
| Feature | WAB | Screen Scraping | Browser Automation |
|
|
58
|
+
|---------|-----|-----------------|-------------------|
|
|
59
|
+
| Reliability | ✅ Structured commands | ❌ Breaks with UI changes | ⚠️ Fragile selectors |
|
|
60
|
+
| Speed | ✅ Direct API | ❌ Slow parsing | ⚠️ Browser overhead |
|
|
61
|
+
| Permission model | ✅ Granular | ❌ None | ❌ None |
|
|
62
|
+
| Fairness | ✅ Built-in engine | ❌ Biased to known sites | ❌ Biased to known sites |
|
|
63
|
+
| MCP compatible | ✅ Native adapter | ❌ No | ❌ No |
|
|
64
|
+
| Standards-based | ✅ Open protocol | ❌ Ad hoc | ❌ Proprietary |
|
|
65
|
+
|
|
66
|
+
## Related Concepts
|
|
67
|
+
|
|
68
|
+
- OpenAPI (for REST APIs) — WAB is "OpenAPI for websites"
|
|
69
|
+
- Model Context Protocol (MCP) — WAB integrates with MCP via adapter
|
|
70
|
+
- robots.txt — WAB's agent-bridge.json is the next evolution
|
|
71
|
+
- Schema.org — WAB adds actionable commands on top of structured data
|
|
72
|
+
|
|
73
|
+
## Who Should Use WAB
|
|
74
|
+
|
|
75
|
+
- **Website owners** who want AI agents to interact with their site properly
|
|
76
|
+
- **AI agent developers** who need reliable website interaction
|
|
77
|
+
- **E-commerce platforms** that want fair AI-driven discovery
|
|
78
|
+
- **WordPress sites** via the official plugin
|
|
79
|
+
- **Any developer** building for the Agentic Web
|
|
80
|
+
|
|
81
|
+
## Contact
|
|
82
|
+
|
|
83
|
+
- Support: support@webagentbridge.com
|
|
84
|
+
- Sales: sales@webagentbridge.com
|
|
85
|
+
- GitHub Issues: https://github.com/abokenan444/web-agent-bridge/issues
|