web-agent-bridge 2.5.0 → 2.6.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/README.md +14 -0
- package/package.json +1 -1
- package/public/.well-known/agent-tools.json +180 -0
- package/sdk/package.json +1 -1
- package/server/adapters/index.js +520 -0
- package/server/index.js +4 -0
- package/server/migrations/004_agent_os.sql +158 -0
- package/server/observability/failure-analysis.js +337 -0
- package/server/registry/certification.js +271 -0
- package/server/routes/runtime.js +411 -0
- package/server/runtime/replay.js +264 -0
- package/server/runtime/session-engine.js +293 -0
- package/server/security/index.js +13 -0
package/README.md
CHANGED
|
@@ -119,6 +119,20 @@ WAB v3.0 transforms the project from an advanced automation tool into a **real A
|
|
|
119
119
|
- **Unified Runtime API** — All Agent OS layers exposed via RESTful endpoints at `/api/os/*`: protocol discovery, agent identity/auth, task CRUD, semantic execution, deployments, policies, isolation, observability (metrics/traces/logs), registry (commands/sites/templates), LLM operations, command signing, and Server-Sent Events for real-time streaming
|
|
120
120
|
- **WABAgentOS SDK Client** — New `WABAgentOS` class in the SDK provides full TypeScript-typed API for all Agent OS operations: register → authenticate → negotiate capabilities → submit tasks → execute semantically → query observability → subscribe to events
|
|
121
121
|
|
|
122
|
+
### v3.1 — WAP Deep Architecture (Protocol Hardening)
|
|
123
|
+
|
|
124
|
+
v3.1 hardens the Agent OS into a production-grade system that *surpasses* MCP — making WAP (Web Agent Protocol) the top-level protocol with MCP as just one adapter.
|
|
125
|
+
|
|
126
|
+
- **WAP Discovery Spec** — Formal `/.well-known/agent-tools.json` discovery document. AI agents can find all WAP capabilities, commands, permissions, runtime config, security model, and SDKs from a single standardized URL
|
|
127
|
+
- **Adapter Layer** — WAP sits at the top; MCP, REST/GraphQL, and Browser automation are transport adapters beneath it. MCP Adapter exposes all WAB commands as MCP tools (list_tools / call_tool). REST Adapter registers external APIs as first-class WAP endpoints with auth, mapping, and rate limiting. Browser Adapter translates semantic actions (checkout.addItem, search.query, auth.login) into concrete browser step plans with selector fallbacks and verification
|
|
128
|
+
- **Auth Middleware** — All `/api/os/*` mutation endpoints require authentication (Bearer token, API key, or agent header). Public read endpoints remain open for discovery. GET requests pass through for read-only access
|
|
129
|
+
- **Deterministic Replay Engine** — Records all task inputs, outputs, and side-effects. Supports replay with verification mode (re-execute and compare), dry-run mode (inspect recorded steps), and diff between two recordings. Enables debugging, regression testing, and workflow certification
|
|
130
|
+
- **Failure Analysis & Classification** — Automatic classification of failures into 9 categories (network, timeout, permission, validation, execution, rate_limit, resource, dependency, unknown). Root cause analysis, severity scoring, retryability assessment, suggested fixes, and pattern detection for recurring failures
|
|
131
|
+
- **Session Engine** — Browser execution sessions with cookie jar (set/get/domain-scoped), localStorage/sessionStorage emulation, navigation history, variable store, session export/import for transfer, and TTL-based expiration
|
|
132
|
+
- **Certification System** — Site compatibility verification with 13 weighted checks across 7 categories (integration, protocol, data, security, fairness, compliance, sovereignty). Issues certificates at 5 levels (none → basic → standard → premium → sovereign) with 90-day validity, HMAC-signed badges, and revocation
|
|
133
|
+
- **DB Persistence Layer** — SQLite tables for all Agent OS entities: agents, sessions, tasks, deployments, registry commands/sites/templates, audit log (immutable append-only), capability grants, and policies. Auto-migrates on boot
|
|
134
|
+
- **65+ API Endpoints** — Adapters (MCP tools, REST endpoints, browser mappings), replay (recordings, replay, diff, stats), sessions (CRUD, cookies, storage, export/import), failure analysis (query, patterns, summary, classify), certification (verify, certificates, revoke), plus all existing v3.0 endpoints
|
|
135
|
+
|
|
122
136
|
> **Many more features** are available on the live website that aren't listed here — dashboards, analytics, admin tools, and more. Visit [webagentbridge.com](https://webagentbridge.com) to explore.
|
|
123
137
|
|
|
124
138
|
---
|
package/package.json
CHANGED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocol": "wap",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"name": "Web Agent Bridge",
|
|
5
|
+
"description": "Web Execution Layer for AI Agents — Protocol + Runtime + Security + Ecosystem",
|
|
6
|
+
"homepage": "https://webagentbridge.com",
|
|
7
|
+
"spec": "https://webagentbridge.com/.well-known/agent-tools.json",
|
|
8
|
+
|
|
9
|
+
"discovery": {
|
|
10
|
+
"protocol_endpoint": "/api/os/protocol",
|
|
11
|
+
"commands_endpoint": "/api/os/registry/commands",
|
|
12
|
+
"sites_endpoint": "/api/os/registry/sites",
|
|
13
|
+
"templates_endpoint": "/api/os/registry/templates",
|
|
14
|
+
"health_endpoint": "/api/os/observability/health"
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"capabilities": {
|
|
18
|
+
"browser": {
|
|
19
|
+
"read": { "risk": "low", "description": "Read page content, text, attributes" },
|
|
20
|
+
"click": { "risk": "medium", "description": "Click interactive elements" },
|
|
21
|
+
"fill": { "risk": "medium", "description": "Fill form fields" },
|
|
22
|
+
"navigate": { "risk": "medium", "description": "Navigate to URLs" },
|
|
23
|
+
"scroll": { "risk": "low", "description": "Scroll the page" },
|
|
24
|
+
"screenshot": { "risk": "low", "description": "Capture screenshots" },
|
|
25
|
+
"execute": { "risk": "high", "description": "Execute JavaScript in page" }
|
|
26
|
+
},
|
|
27
|
+
"data": {
|
|
28
|
+
"extract": { "risk": "low", "description": "Extract structured data" },
|
|
29
|
+
"compare": { "risk": "low", "description": "Compare data across sources" },
|
|
30
|
+
"store": { "risk": "medium", "description": "Persist data" }
|
|
31
|
+
},
|
|
32
|
+
"agent": {
|
|
33
|
+
"spawn": { "risk": "high", "description": "Create child agents" },
|
|
34
|
+
"communicate": { "risk": "medium", "description": "Inter-agent messaging" },
|
|
35
|
+
"delegate": { "risk": "high", "description": "Delegate tasks to other agents" }
|
|
36
|
+
},
|
|
37
|
+
"system": {
|
|
38
|
+
"api": { "risk": "medium", "description": "Make API calls" },
|
|
39
|
+
"webhook": { "risk": "medium", "description": "Send webhook notifications" },
|
|
40
|
+
"schedule": { "risk": "medium", "description": "Schedule future tasks" }
|
|
41
|
+
},
|
|
42
|
+
"commerce": {
|
|
43
|
+
"price": { "risk": "low", "description": "Read prices" },
|
|
44
|
+
"negotiate": { "risk": "high", "description": "Negotiate prices" },
|
|
45
|
+
"purchase": { "risk": "critical", "description": "Complete purchases" }
|
|
46
|
+
},
|
|
47
|
+
"ai": {
|
|
48
|
+
"infer": { "risk": "medium", "description": "Run LLM inference" },
|
|
49
|
+
"vision": { "risk": "medium", "description": "Analyze images" },
|
|
50
|
+
"embed": { "risk": "low", "description": "Generate embeddings" }
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
"permissions": {
|
|
55
|
+
"levels": ["none", "read", "write", "execute", "admin", "owner"],
|
|
56
|
+
"default": "read",
|
|
57
|
+
"negotiable": true
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
"security": {
|
|
61
|
+
"authentication": ["api_key", "bearer_token"],
|
|
62
|
+
"signing": "HMAC-SHA256",
|
|
63
|
+
"isolation": "per-site-sandbox",
|
|
64
|
+
"audit": true
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
"runtime": {
|
|
68
|
+
"scheduler": {
|
|
69
|
+
"maxConcurrency": 50,
|
|
70
|
+
"retries": 3,
|
|
71
|
+
"backoff": "exponential",
|
|
72
|
+
"maxBackoff": 30000,
|
|
73
|
+
"priorities": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
|
74
|
+
},
|
|
75
|
+
"sandbox": {
|
|
76
|
+
"defaultTimeout": 30000,
|
|
77
|
+
"maxMemory": 134217728,
|
|
78
|
+
"maxNetworkCalls": 100,
|
|
79
|
+
"maxDomOperations": 1000
|
|
80
|
+
},
|
|
81
|
+
"state": {
|
|
82
|
+
"checkpoints": true,
|
|
83
|
+
"rollback": true,
|
|
84
|
+
"ttl": 86400000
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
"adapters": {
|
|
89
|
+
"mcp": { "endpoint": "/api/os/adapters/mcp", "spec": "Model Context Protocol" },
|
|
90
|
+
"rest": { "endpoint": "/api/os/adapters/rest", "spec": "REST/OpenAPI" },
|
|
91
|
+
"browser": { "endpoint": "/api/os/adapters/browser", "spec": "Puppeteer/Playwright/BiDi" }
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
"commands": [
|
|
95
|
+
{
|
|
96
|
+
"name": "wab.discover",
|
|
97
|
+
"version": "1.0.0",
|
|
98
|
+
"category": "discovery",
|
|
99
|
+
"description": "Discover available actions on a site",
|
|
100
|
+
"capabilities": ["browser.read"],
|
|
101
|
+
"input": { "type": "object", "properties": { "siteId": { "type": "string" }, "category": { "type": "string" } } },
|
|
102
|
+
"output": { "type": "object", "properties": { "actions": { "type": "array" }, "meta": { "type": "object" } } }
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "wab.execute",
|
|
106
|
+
"version": "1.0.0",
|
|
107
|
+
"category": "execution",
|
|
108
|
+
"description": "Execute a registered action",
|
|
109
|
+
"capabilities": ["browser.execute"],
|
|
110
|
+
"input": { "type": "object", "properties": { "action": { "type": "string" }, "params": { "type": "object" } }, "required": ["action"] },
|
|
111
|
+
"sideEffects": true
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "wab.semantic.execute",
|
|
115
|
+
"version": "1.0.0",
|
|
116
|
+
"category": "execution",
|
|
117
|
+
"description": "Execute semantic action (e.g., checkout.addItem) without raw selectors",
|
|
118
|
+
"capabilities": ["browser.execute"],
|
|
119
|
+
"input": { "type": "object", "properties": { "domain": { "type": "string" }, "action": { "type": "string" }, "params": { "type": "object" } }, "required": ["domain", "action"] },
|
|
120
|
+
"sideEffects": true
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "wab.agent.register",
|
|
124
|
+
"version": "1.0.0",
|
|
125
|
+
"category": "lifecycle",
|
|
126
|
+
"description": "Register an agent with the runtime",
|
|
127
|
+
"capabilities": [],
|
|
128
|
+
"input": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "capabilities": { "type": "array" } }, "required": ["name", "type"] }
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "wab.task.submit",
|
|
132
|
+
"version": "1.0.0",
|
|
133
|
+
"category": "runtime",
|
|
134
|
+
"description": "Submit a task to the scheduler",
|
|
135
|
+
"capabilities": ["system.schedule"],
|
|
136
|
+
"input": { "type": "object", "properties": { "type": { "type": "string" }, "params": { "type": "object" }, "priority": { "type": "integer" } } }
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "wab.commerce.compare",
|
|
140
|
+
"version": "1.0.0",
|
|
141
|
+
"category": "commerce",
|
|
142
|
+
"description": "Compare prices across sources with fairness scoring",
|
|
143
|
+
"capabilities": ["commerce.price", "data.compare"]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "wab.commerce.negotiate",
|
|
147
|
+
"version": "1.0.0",
|
|
148
|
+
"category": "commerce",
|
|
149
|
+
"description": "Open or continue a price negotiation session",
|
|
150
|
+
"capabilities": ["commerce.negotiate"],
|
|
151
|
+
"sideEffects": true
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "wab.ai.infer",
|
|
155
|
+
"version": "1.0.0",
|
|
156
|
+
"category": "ai",
|
|
157
|
+
"description": "Run LLM inference through the model abstraction layer",
|
|
158
|
+
"capabilities": ["ai.infer"],
|
|
159
|
+
"input": { "type": "object", "properties": { "prompt": { "type": "string" }, "model": { "type": "string" }, "provider": { "type": "string" } }, "required": ["prompt"] }
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
|
|
163
|
+
"ecosystem": {
|
|
164
|
+
"sdks": {
|
|
165
|
+
"javascript": { "npm": "web-agent-bridge-sdk", "version": "2.5.0" },
|
|
166
|
+
"langchain": { "npm": "web-agent-bridge-langchain", "version": "2.5.0" },
|
|
167
|
+
"react": { "npm": "web-agent-bridge-react", "version": "2.5.0" },
|
|
168
|
+
"vue": { "npm": "web-agent-bridge-vue", "version": "2.5.0" },
|
|
169
|
+
"svelte": { "npm": "web-agent-bridge-svelte", "version": "2.5.0" }
|
|
170
|
+
},
|
|
171
|
+
"plugins": {
|
|
172
|
+
"wordpress": "web-agent-bridge-wordpress",
|
|
173
|
+
"mcp_adapter": "wab-mcp-adapter"
|
|
174
|
+
},
|
|
175
|
+
"certification": {
|
|
176
|
+
"endpoint": "/api/os/certification/verify",
|
|
177
|
+
"badge_url": "https://webagentbridge.com/badge/agent-compatible.svg"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|