web-agent-bridge 3.0.0 → 3.3.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 +72 -21
- package/README.ar.md +1286 -1073
- package/README.md +1764 -1535
- package/bin/agent-runner.js +474 -474
- package/bin/cli.js +237 -138
- package/bin/wab.js +80 -80
- package/examples/bidi-agent.js +119 -119
- package/examples/cross-site-agent.js +91 -91
- package/examples/mcp-agent.js +94 -94
- package/examples/next-app-router/README.md +44 -44
- package/examples/puppeteer-agent.js +108 -108
- package/examples/saas-dashboard/README.md +55 -55
- package/examples/shopify-hydrogen/README.md +74 -74
- package/examples/vision-agent.js +171 -171
- package/examples/wordpress-elementor/README.md +77 -77
- package/package.json +17 -3
- package/public/.well-known/agent-tools.json +180 -180
- package/public/.well-known/ai-assets.json +59 -59
- package/public/.well-known/ai-plugin.json +28 -0
- package/public/.well-known/security.txt +8 -0
- package/public/agent-workspace.html +349 -347
- package/public/ai.html +198 -196
- package/public/api.html +413 -0
- package/public/browser.html +486 -484
- package/public/commander-dashboard.html +243 -243
- package/public/cookies.html +210 -208
- package/public/css/agent-workspace.css +1713 -1713
- package/public/css/premium.css +317 -317
- package/public/css/styles.css +1235 -1235
- package/public/dashboard.html +706 -704
- package/public/demo.html +1770 -1
- package/public/dns.html +507 -0
- package/public/docs.html +587 -585
- package/public/feed.xml +89 -89
- package/public/growth.html +463 -0
- package/public/index.html +341 -9
- package/public/integrations.html +556 -0
- package/public/js/agent-workspace.js +1740 -1740
- 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 -721
- package/public/js/ws-client.js +74 -74
- package/public/llms-full.txt +360 -309
- package/public/llms.txt +125 -86
- package/public/login.html +85 -83
- package/public/mesh-dashboard.html +328 -328
- package/public/openapi.json +580 -580
- package/public/phone-shield.html +281 -0
- package/public/premium-dashboard.html +2489 -2487
- package/public/premium.html +793 -791
- package/public/privacy.html +297 -295
- package/public/register.html +105 -103
- package/public/robots.txt +87 -87
- package/public/script/wab-consent.d.ts +36 -36
- package/public/script/wab-consent.js +104 -104
- package/public/script/wab-schema.js +131 -131
- package/public/script/wab.d.ts +108 -108
- package/public/script/wab.min.js +580 -580
- package/public/security.txt +8 -0
- package/public/terms.html +256 -254
- package/script/ai-agent-bridge.js +1754 -1754
- package/sdk/README.md +99 -99
- package/sdk/agent-mesh.js +449 -449
- package/sdk/commander.js +262 -262
- package/sdk/index.d.ts +464 -464
- package/sdk/index.js +18 -1
- package/sdk/multi-agent.js +318 -318
- package/sdk/package.json +12 -1
- package/sdk/safety-shield.js +219 -0
- package/sdk/schema-discovery.js +83 -83
- package/server/adapters/index.js +520 -520
- package/server/config/plans.js +367 -367
- package/server/config/secrets.js +102 -102
- package/server/control-plane/index.js +301 -301
- package/server/data-plane/index.js +354 -354
- package/server/index.js +175 -19
- package/server/llm/index.js +404 -404
- package/server/middleware/adminAuth.js +35 -35
- package/server/middleware/auth.js +50 -50
- package/server/middleware/featureGate.js +88 -88
- package/server/middleware/rateLimits.js +100 -100
- package/server/middleware/sensitiveAction.js +157 -0
- package/server/migrations/001_add_analytics_indexes.sql +7 -7
- package/server/migrations/002_premium_features.sql +418 -418
- package/server/migrations/003_ads_integer_cents.sql +33 -33
- package/server/migrations/004_agent_os.sql +158 -158
- package/server/migrations/005_marketplace_metering.sql +126 -126
- 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 +681 -681
- package/server/observability/failure-analysis.js +337 -337
- package/server/observability/index.js +394 -394
- package/server/protocol/capabilities.js +223 -223
- package/server/protocol/index.js +243 -243
- package/server/protocol/schema.js +584 -584
- package/server/registry/certification.js +271 -271
- package/server/registry/index.js +326 -326
- package/server/routes/admin-premium.js +671 -671
- package/server/routes/admin.js +261 -261
- package/server/routes/ads.js +130 -130
- package/server/routes/agent-workspace.js +540 -378
- package/server/routes/api.js +150 -150
- package/server/routes/auth.js +71 -71
- package/server/routes/billing.js +45 -45
- package/server/routes/commander.js +316 -316
- package/server/routes/demo-showcase.js +332 -0
- package/server/routes/demo-store.js +154 -0
- package/server/routes/discovery.js +417 -406
- package/server/routes/gateway.js +173 -0
- package/server/routes/license.js +251 -240
- package/server/routes/mesh.js +469 -469
- package/server/routes/noscript.js +543 -543
- package/server/routes/premium-v2.js +686 -686
- package/server/routes/premium.js +724 -724
- package/server/routes/runtime.js +2148 -2147
- package/server/routes/sovereign.js +465 -385
- package/server/routes/universal.js +200 -177
- package/server/routes/wab-api.js +850 -491
- package/server/runtime/container-worker.js +111 -111
- package/server/runtime/container.js +448 -448
- package/server/runtime/distributed-worker.js +362 -362
- package/server/runtime/event-bus.js +210 -210
- package/server/runtime/index.js +253 -253
- package/server/runtime/queue.js +599 -599
- package/server/runtime/replay.js +666 -666
- package/server/runtime/sandbox.js +266 -266
- package/server/runtime/scheduler.js +534 -534
- package/server/runtime/session-engine.js +293 -293
- package/server/runtime/state-manager.js +188 -188
- package/server/security/cross-site-redactor.js +196 -0
- package/server/security/dry-run.js +180 -0
- package/server/security/human-gate-rate-limit.js +147 -0
- package/server/security/human-gate-transports.js +178 -0
- package/server/security/human-gate.js +281 -0
- package/server/security/index.js +368 -368
- package/server/security/intent-engine.js +245 -0
- package/server/security/reward-guard.js +171 -0
- package/server/security/rollback-store.js +239 -0
- package/server/security/token-scope.js +404 -0
- package/server/security/url-policy.js +139 -0
- package/server/services/agent-chat.js +506 -506
- package/server/services/agent-learning.js +601 -575
- package/server/services/agent-memory.js +625 -625
- package/server/services/agent-mesh.js +555 -539
- package/server/services/agent-symphony.js +717 -717
- package/server/services/agent-tasks.js +1807 -1807
- package/server/services/api-key-engine.js +292 -0
- package/server/services/cluster.js +894 -894
- package/server/services/commander.js +738 -738
- package/server/services/edge-compute.js +440 -440
- package/server/services/email.js +204 -204
- package/server/services/hosted-runtime.js +205 -205
- package/server/services/lfd.js +635 -616
- package/server/services/local-ai.js +389 -389
- package/server/services/marketplace.js +270 -270
- package/server/services/metering.js +182 -182
- package/server/services/modules/affiliate-intelligence.js +93 -0
- package/server/services/modules/agent-firewall.js +90 -0
- package/server/services/modules/bounty.js +89 -0
- package/server/services/modules/collective-bargaining.js +92 -0
- package/server/services/modules/dark-pattern.js +66 -0
- package/server/services/modules/gov-intelligence.js +45 -0
- package/server/services/modules/neural.js +55 -0
- package/server/services/modules/notary.js +49 -0
- package/server/services/modules/price-time-machine.js +86 -0
- package/server/services/modules/protocol.js +104 -0
- package/server/services/negotiation.js +439 -439
- package/server/services/plugins.js +771 -771
- package/server/services/premium.js +1 -1
- package/server/services/price-intelligence.js +566 -565
- package/server/services/price-shield.js +1137 -1137
- package/server/services/reputation.js +465 -465
- package/server/services/search-engine.js +357 -357
- package/server/services/security.js +513 -513
- package/server/services/self-healing.js +843 -843
- package/server/services/sovereign-shield.js +542 -0
- package/server/services/stripe.js +192 -192
- package/server/services/swarm.js +788 -788
- package/server/services/universal-scraper.js +662 -661
- package/server/services/verification.js +481 -481
- package/server/services/vision.js +1163 -1163
- package/server/utils/cache.js +125 -125
- package/server/utils/migrate.js +81 -81
- package/server/utils/safe-fetch.js +228 -0
- package/server/utils/secureFields.js +50 -50
- package/server/ws.js +161 -161
- package/templates/artisan-marketplace.yaml +104 -104
- package/templates/book-price-scout.yaml +98 -98
- package/templates/electronics-price-tracker.yaml +108 -108
- package/templates/flight-deal-hunter.yaml +113 -113
- package/templates/freelancer-direct.yaml +116 -116
- package/templates/grocery-price-compare.yaml +93 -93
- package/templates/hotel-direct-booking.yaml +113 -113
- package/templates/local-services.yaml +98 -98
- package/templates/olive-oil-tunisia.yaml +88 -88
- package/templates/organic-farm-fresh.yaml +101 -101
- package/templates/restaurant-direct.yaml +97 -97
- package/server/services/fairness-engine.js +0 -409
- package/server/services/fairness.js +0 -420
package/public/llms.txt
CHANGED
|
@@ -1,86 +1,125 @@
|
|
|
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
|
-
7. **Private Agent Mesh** — Inter-agent communication, local reinforcement learning, and symphony orchestration without external LLM dependency
|
|
34
|
-
|
|
35
|
-
## Use Cases
|
|
36
|
-
|
|
37
|
-
- Make any website AI-agent-ready in minutes
|
|
38
|
-
- Enable AI assistants (ChatGPT, Claude, Gemini) to interact with websites via structured commands
|
|
39
|
-
- Build fair AI shopping/booking agents that don't favor large platforms
|
|
40
|
-
- Create automation workflows without fragile selectors
|
|
41
|
-
- WordPress plugin available for one-click integration
|
|
42
|
-
|
|
43
|
-
## Quick Start
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
npm install web-agent-bridge
|
|
47
|
-
npx web-agent-bridge start
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
Or add the script to any HTML page:
|
|
51
|
-
|
|
52
|
-
```html
|
|
53
|
-
<script src="https://webagentbridge.com/script/ai-agent-bridge.js"></script>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## How WAB Compares
|
|
57
|
-
|
|
58
|
-
| Feature | WAB | Screen Scraping | Browser Automation |
|
|
59
|
-
|---------|-----|-----------------|-------------------|
|
|
60
|
-
| Reliability | ✅ Structured commands | ❌ Breaks with UI changes | ⚠️ Fragile selectors |
|
|
61
|
-
| Speed | ✅ Direct API | ❌ Slow parsing | ⚠️ Browser overhead |
|
|
62
|
-
| Permission model | ✅ Granular | ❌ None | ❌ None |
|
|
63
|
-
| Fairness | ✅ Built-in engine | ❌ Biased to known sites | ❌ Biased to known sites |
|
|
64
|
-
| MCP compatible | ✅ Native adapter | ❌ No | ❌ No |
|
|
65
|
-
| Standards-based | ✅ Open protocol | ❌ Ad hoc | ❌ Proprietary |
|
|
66
|
-
|
|
67
|
-
## Related Concepts
|
|
68
|
-
|
|
69
|
-
- OpenAPI (for REST APIs) — WAB is "OpenAPI for websites"
|
|
70
|
-
- Model Context Protocol (MCP) — WAB integrates with MCP via adapter
|
|
71
|
-
- robots.txt — WAB's agent-bridge.json is the next evolution
|
|
72
|
-
- Schema.org — WAB adds actionable commands on top of structured data
|
|
73
|
-
|
|
74
|
-
## Who Should Use WAB
|
|
75
|
-
|
|
76
|
-
- **Website owners** who want AI agents to interact with their site properly
|
|
77
|
-
- **AI agent developers** who need reliable website interaction
|
|
78
|
-
- **E-commerce platforms** that want fair AI-driven discovery
|
|
79
|
-
- **WordPress sites** via the official plugin
|
|
80
|
-
- **Any developer** building for the Agentic Web
|
|
81
|
-
|
|
82
|
-
##
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
+
7. **Private Agent Mesh** — Inter-agent communication, local reinforcement learning, and symphony orchestration without external LLM dependency
|
|
34
|
+
|
|
35
|
+
## Use Cases
|
|
36
|
+
|
|
37
|
+
- Make any website AI-agent-ready in minutes
|
|
38
|
+
- Enable AI assistants (ChatGPT, Claude, Gemini) to interact with websites via structured commands
|
|
39
|
+
- Build fair AI shopping/booking agents that don't favor large platforms
|
|
40
|
+
- Create automation workflows without fragile selectors
|
|
41
|
+
- WordPress plugin available for one-click integration
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install web-agent-bridge
|
|
47
|
+
npx web-agent-bridge start
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Or add the script to any HTML page:
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<script src="https://webagentbridge.com/script/ai-agent-bridge.js"></script>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## How WAB Compares
|
|
57
|
+
|
|
58
|
+
| Feature | WAB | Screen Scraping | Browser Automation |
|
|
59
|
+
|---------|-----|-----------------|-------------------|
|
|
60
|
+
| Reliability | ✅ Structured commands | ❌ Breaks with UI changes | ⚠️ Fragile selectors |
|
|
61
|
+
| Speed | ✅ Direct API | ❌ Slow parsing | ⚠️ Browser overhead |
|
|
62
|
+
| Permission model | ✅ Granular | ❌ None | ❌ None |
|
|
63
|
+
| Fairness | ✅ Built-in engine | ❌ Biased to known sites | ❌ Biased to known sites |
|
|
64
|
+
| MCP compatible | ✅ Native adapter | ❌ No | ❌ No |
|
|
65
|
+
| Standards-based | ✅ Open protocol | ❌ Ad hoc | ❌ Proprietary |
|
|
66
|
+
|
|
67
|
+
## Related Concepts
|
|
68
|
+
|
|
69
|
+
- OpenAPI (for REST APIs) — WAB is "OpenAPI for websites"
|
|
70
|
+
- Model Context Protocol (MCP) — WAB integrates with MCP via adapter
|
|
71
|
+
- robots.txt — WAB's agent-bridge.json is the next evolution
|
|
72
|
+
- Schema.org — WAB adds actionable commands on top of structured data
|
|
73
|
+
|
|
74
|
+
## Who Should Use WAB
|
|
75
|
+
|
|
76
|
+
- **Website owners** who want AI agents to interact with their site properly
|
|
77
|
+
- **AI agent developers** who need reliable website interaction
|
|
78
|
+
- **E-commerce platforms** that want fair AI-driven discovery
|
|
79
|
+
- **WordPress sites** via the official plugin
|
|
80
|
+
- **Any developer** building for the Agentic Web
|
|
81
|
+
|
|
82
|
+
## MCP Server (for AI Coding Tools)
|
|
83
|
+
|
|
84
|
+
WAB provides a Model Context Protocol (MCP) server that works with Cursor, Claude Desktop, Cline, Windsurf, and other MCP-compatible AI tools.
|
|
85
|
+
|
|
86
|
+
### Install
|
|
87
|
+
```bash
|
|
88
|
+
npm install -g wab-mcp-server
|
|
89
|
+
# or use directly
|
|
90
|
+
npx wab-mcp-server
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Configure (Cursor / Claude Desktop)
|
|
94
|
+
Add to your MCP configuration:
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"mcpServers": {
|
|
98
|
+
"wab": {
|
|
99
|
+
"command": "npx",
|
|
100
|
+
"args": ["-y", "wab-mcp-server"]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Available MCP Tools
|
|
107
|
+
- `wab_scan_url` — Scan URLs for phishing, malware, and scams (47 databases)
|
|
108
|
+
- `wab_fairness_check` — Score platform transparency (0-100, 15 signals)
|
|
109
|
+
- `wab_find_deals` — Cross-platform price intelligence with fairness filtering
|
|
110
|
+
- `wab_agent_query` — Natural language web automation
|
|
111
|
+
- `wab_generate_snippet` — Generate WAB integration code (JS, Python, React, Next.js, Docker)
|
|
112
|
+
- `wab_get_docs` — Get WAB documentation and API reference
|
|
113
|
+
|
|
114
|
+
## SDK Packages
|
|
115
|
+
|
|
116
|
+
- **JavaScript/Node.js**: `npm install @wab/sdk`
|
|
117
|
+
- **React**: `npm install @wab/react`
|
|
118
|
+
- **Python**: `pip install wab-sdk`
|
|
119
|
+
- **MCP Server**: `npm install -g wab-mcp-server`
|
|
120
|
+
|
|
121
|
+
## Contact
|
|
122
|
+
|
|
123
|
+
- Support: support@webagentbridge.com
|
|
124
|
+
- Sales: sales@webagentbridge.com
|
|
125
|
+
- GitHub Issues: https://github.com/abokenan444/web-agent-bridge/issues
|
package/public/login.html
CHANGED
|
@@ -1,83 +1,85 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Sign In — Web Agent Bridge</title>
|
|
7
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
-
<
|
|
10
|
-
<link rel="
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
</
|
|
83
|
-
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Sign In — Web Agent Bridge</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
+
<style>body{background:#0a0e1a;color:#f0f4ff;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;margin:0;min-height:100vh}</style>
|
|
10
|
+
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
11
|
+
<noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"></noscript>
|
|
12
|
+
<link rel="stylesheet" href="/css/styles.css?v=3.0.1">
|
|
13
|
+
<script src="/js/auth-redirect.js?v=3.0.1"></script>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<div class="auth-page">
|
|
17
|
+
<div class="auth-card fade-in">
|
|
18
|
+
<div style="text-align:center; margin-bottom:32px;">
|
|
19
|
+
<a href="/" class="navbar-brand" style="justify-content:center;">
|
|
20
|
+
<div class="brand-icon">⚡</div>
|
|
21
|
+
<span>WAB</span>
|
|
22
|
+
</a>
|
|
23
|
+
</div>
|
|
24
|
+
<h1 style="text-align:center;">Welcome back</h1>
|
|
25
|
+
<p class="subtitle" style="text-align:center;">Sign in to your account</p>
|
|
26
|
+
|
|
27
|
+
<div class="alert alert-error" id="errorAlert"></div>
|
|
28
|
+
|
|
29
|
+
<form id="loginForm">
|
|
30
|
+
<div class="form-group">
|
|
31
|
+
<label for="email">Email</label>
|
|
32
|
+
<input type="email" id="email" class="form-input" placeholder="you@example.com" required>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="form-group">
|
|
35
|
+
<label for="password">Password</label>
|
|
36
|
+
<input type="password" id="password" class="form-input" placeholder="Your password" required>
|
|
37
|
+
</div>
|
|
38
|
+
<button type="submit" class="btn btn-primary btn-lg">Sign In</button>
|
|
39
|
+
</form>
|
|
40
|
+
|
|
41
|
+
<div class="auth-footer">
|
|
42
|
+
Don't have an account? <a href="/register">Create one</a>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<script>
|
|
48
|
+
if (localStorage.getItem('wab_token')) {
|
|
49
|
+
window.location.replace(typeof wabGetPostAuthRedirect === 'function' ? wabGetPostAuthRedirect() : '/dashboard');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
document.getElementById('loginForm').addEventListener('submit', async (e) => {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
const errorEl = document.getElementById('errorAlert');
|
|
55
|
+
errorEl.style.display = 'none';
|
|
56
|
+
|
|
57
|
+
const email = document.getElementById('email').value;
|
|
58
|
+
const password = document.getElementById('password').value;
|
|
59
|
+
|
|
60
|
+
try {
|
|
61
|
+
const res = await fetch('/api/auth/login', {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: { 'Content-Type': 'application/json' },
|
|
64
|
+
body: JSON.stringify({ email, password })
|
|
65
|
+
});
|
|
66
|
+
const data = await res.json();
|
|
67
|
+
|
|
68
|
+
if (!res.ok) {
|
|
69
|
+
errorEl.textContent = data.error || 'Login failed';
|
|
70
|
+
errorEl.style.display = 'block';
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
localStorage.setItem('wab_token', data.token);
|
|
75
|
+
localStorage.setItem('wab_user', JSON.stringify(data.user));
|
|
76
|
+
window.location.href = typeof wabGetPostAuthRedirect === 'function' ? wabGetPostAuthRedirect() : '/dashboard';
|
|
77
|
+
} catch (err) {
|
|
78
|
+
errorEl.textContent = 'Connection error. Please try again.';
|
|
79
|
+
errorEl.style.display = 'block';
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
</script>
|
|
83
|
+
<script src="/js/cookie-consent.js?v=3.0.1"></script>
|
|
84
|
+
</body>
|
|
85
|
+
</html>
|