web-agent-bridge 3.2.0 → 3.4.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.
Files changed (256) hide show
  1. package/LICENSE +84 -72
  2. package/README.ar.md +1304 -1152
  3. package/README.md +298 -1635
  4. package/bin/agent-runner.js +474 -474
  5. package/bin/cli.js +237 -138
  6. package/bin/wab-init.js +223 -0
  7. package/bin/wab.js +80 -80
  8. package/examples/azure-dns-wab.js +83 -0
  9. package/examples/bidi-agent.js +119 -119
  10. package/examples/cloudflare-wab-dns.js +121 -0
  11. package/examples/cpanel-wab-dns.js +114 -0
  12. package/examples/cross-site-agent.js +91 -91
  13. package/examples/dns-discovery-agent.js +166 -0
  14. package/examples/gcp-dns-wab.js +76 -0
  15. package/examples/governance-agent.js +169 -0
  16. package/examples/mcp-agent.js +94 -94
  17. package/examples/next-app-router/README.md +44 -44
  18. package/examples/plesk-wab-dns.js +103 -0
  19. package/examples/puppeteer-agent.js +108 -108
  20. package/examples/route53-wab-dns.js +144 -0
  21. package/examples/saas-dashboard/README.md +55 -55
  22. package/examples/safe-mode-agent.js +96 -0
  23. package/examples/shopify-hydrogen/README.md +74 -74
  24. package/examples/vision-agent.js +171 -171
  25. package/examples/wab-sign.js +74 -0
  26. package/examples/wab-verify.js +60 -0
  27. package/examples/wordpress-elementor/README.md +77 -77
  28. package/package.json +19 -6
  29. package/public/.well-known/agent-tools.json +180 -180
  30. package/public/.well-known/ai-assets.json +59 -59
  31. package/public/.well-known/security.txt +8 -0
  32. package/public/.well-known/wab.json +28 -0
  33. package/public/activate.html +368 -0
  34. package/public/adoption-metrics.html +188 -0
  35. package/public/agent-workspace.html +349 -349
  36. package/public/ai.html +198 -198
  37. package/public/api.html +413 -412
  38. package/public/azure-dns-integration.html +289 -0
  39. package/public/browser.html +486 -486
  40. package/public/cloudflare-integration.html +380 -0
  41. package/public/commander-dashboard.html +243 -243
  42. package/public/cookies.html +210 -210
  43. package/public/cpanel-integration.html +398 -0
  44. package/public/css/agent-workspace.css +1713 -1713
  45. package/public/css/premium.css +317 -317
  46. package/public/css/styles.css +1263 -1235
  47. package/public/dashboard.html +707 -706
  48. package/public/dns.html +436 -0
  49. package/public/docs.html +588 -587
  50. package/public/feed.xml +89 -89
  51. package/public/gcp-dns-integration.html +318 -0
  52. package/public/growth.html +465 -463
  53. package/public/index.html +1266 -982
  54. package/public/integrations.html +556 -0
  55. package/public/js/activate.js +145 -0
  56. package/public/js/agent-workspace.js +1740 -1740
  57. package/public/js/auth-nav.js +65 -31
  58. package/public/js/auth-redirect.js +12 -12
  59. package/public/js/cookie-consent.js +56 -56
  60. package/public/js/dns.js +438 -0
  61. package/public/js/wab-demo-page.js +721 -721
  62. package/public/js/ws-client.js +74 -74
  63. package/public/llms-full.txt +360 -360
  64. package/public/llms.txt +125 -125
  65. package/public/login.html +85 -85
  66. package/public/mesh-dashboard.html +328 -328
  67. package/public/openapi.json +669 -580
  68. package/public/phone-shield.html +281 -0
  69. package/public/plesk-integration.html +375 -0
  70. package/public/premium-dashboard.html +2489 -2489
  71. package/public/premium.html +793 -793
  72. package/public/privacy.html +297 -297
  73. package/public/provider-onboarding.html +172 -0
  74. package/public/provider-sandbox.html +134 -0
  75. package/public/providers.html +359 -0
  76. package/public/register.html +105 -105
  77. package/public/registrar-integrations.html +141 -0
  78. package/public/robots.txt +99 -87
  79. package/public/route53-integration.html +531 -0
  80. package/public/script/wab-consent.d.ts +36 -36
  81. package/public/script/wab-consent.js +104 -104
  82. package/public/script/wab-schema.js +131 -131
  83. package/public/script/wab.d.ts +108 -108
  84. package/public/script/wab.min.js +580 -580
  85. package/public/security.txt +8 -0
  86. package/public/shieldqr.html +231 -0
  87. package/public/sitemap.xml +6 -0
  88. package/public/terms.html +256 -256
  89. package/public/wab-trust.html +200 -0
  90. package/public/wab-vs-protocols.html +210 -0
  91. package/public/whitepaper.html +449 -0
  92. package/script/ai-agent-bridge.js +1754 -1754
  93. package/sdk/README.md +99 -99
  94. package/sdk/agent-mesh.js +449 -449
  95. package/sdk/auto-discovery.js +288 -0
  96. package/sdk/commander.js +262 -262
  97. package/sdk/governance.js +262 -0
  98. package/sdk/index.d.ts +464 -464
  99. package/sdk/index.js +25 -1
  100. package/sdk/multi-agent.js +318 -318
  101. package/sdk/package.json +2 -2
  102. package/sdk/safe-mode.js +221 -0
  103. package/sdk/safety-shield.js +219 -0
  104. package/sdk/schema-discovery.js +83 -83
  105. package/server/adapters/index.js +520 -520
  106. package/server/config/plans.js +367 -367
  107. package/server/config/secrets.js +102 -102
  108. package/server/control-plane/index.js +301 -301
  109. package/server/data-plane/index.js +354 -354
  110. package/server/index.js +670 -427
  111. package/server/llm/index.js +404 -404
  112. package/server/middleware/adminAuth.js +35 -35
  113. package/server/middleware/auth.js +50 -50
  114. package/server/middleware/featureGate.js +88 -88
  115. package/server/middleware/rateLimits.js +100 -100
  116. package/server/middleware/sensitiveAction.js +157 -0
  117. package/server/migrations/001_add_analytics_indexes.sql +7 -7
  118. package/server/migrations/002_premium_features.sql +418 -418
  119. package/server/migrations/003_ads_integer_cents.sql +33 -33
  120. package/server/migrations/004_agent_os.sql +158 -158
  121. package/server/migrations/005_marketplace_metering.sql +126 -126
  122. package/server/migrations/007_governance.sql +106 -0
  123. package/server/migrations/008_plans.sql +144 -0
  124. package/server/migrations/009_shieldqr.sql +30 -0
  125. package/server/migrations/010_extended_trust.sql +33 -0
  126. package/server/models/adapters/index.js +33 -33
  127. package/server/models/adapters/mysql.js +183 -183
  128. package/server/models/adapters/postgresql.js +172 -172
  129. package/server/models/adapters/sqlite.js +7 -7
  130. package/server/models/db.js +740 -681
  131. package/server/observability/failure-analysis.js +337 -337
  132. package/server/observability/index.js +394 -394
  133. package/server/protocol/capabilities.js +223 -223
  134. package/server/protocol/index.js +243 -243
  135. package/server/protocol/schema.js +584 -584
  136. package/server/registry/certification.js +271 -271
  137. package/server/registry/index.js +326 -326
  138. package/server/routes/admin-plans.js +76 -0
  139. package/server/routes/admin-premium.js +673 -671
  140. package/server/routes/admin-shieldqr.js +90 -0
  141. package/server/routes/admin-trust-monitor.js +83 -0
  142. package/server/routes/admin.js +549 -261
  143. package/server/routes/ads.js +130 -130
  144. package/server/routes/agent-workspace.js +540 -540
  145. package/server/routes/api.js +150 -150
  146. package/server/routes/auth.js +71 -71
  147. package/server/routes/billing.js +57 -45
  148. package/server/routes/commander.js +316 -316
  149. package/server/routes/demo-showcase.js +332 -332
  150. package/server/routes/demo-store.js +154 -0
  151. package/server/routes/discovery.js +2348 -417
  152. package/server/routes/gateway.js +173 -157
  153. package/server/routes/governance.js +208 -0
  154. package/server/routes/license.js +251 -240
  155. package/server/routes/mesh.js +469 -469
  156. package/server/routes/noscript.js +543 -543
  157. package/server/routes/plans.js +33 -0
  158. package/server/routes/premium-v2.js +686 -686
  159. package/server/routes/premium.js +724 -724
  160. package/server/routes/providers.js +650 -0
  161. package/server/routes/runtime.js +2148 -2147
  162. package/server/routes/shieldqr.js +88 -0
  163. package/server/routes/sovereign.js +465 -385
  164. package/server/routes/universal.js +200 -185
  165. package/server/routes/wab-api.js +850 -501
  166. package/server/runtime/container-worker.js +111 -111
  167. package/server/runtime/container.js +448 -448
  168. package/server/runtime/distributed-worker.js +362 -362
  169. package/server/runtime/event-bus.js +210 -210
  170. package/server/runtime/index.js +253 -253
  171. package/server/runtime/queue.js +599 -599
  172. package/server/runtime/replay.js +666 -666
  173. package/server/runtime/sandbox.js +266 -266
  174. package/server/runtime/scheduler.js +534 -534
  175. package/server/runtime/session-engine.js +293 -293
  176. package/server/runtime/state-manager.js +188 -188
  177. package/server/security/cross-site-redactor.js +196 -0
  178. package/server/security/dry-run.js +180 -0
  179. package/server/security/human-gate-rate-limit.js +147 -0
  180. package/server/security/human-gate-transports.js +178 -0
  181. package/server/security/human-gate.js +281 -0
  182. package/server/security/index.js +368 -368
  183. package/server/security/intent-engine.js +245 -0
  184. package/server/security/reward-guard.js +171 -0
  185. package/server/security/rollback-store.js +239 -0
  186. package/server/security/token-scope.js +404 -0
  187. package/server/security/url-policy.js +139 -0
  188. package/server/services/agent-chat.js +506 -506
  189. package/server/services/agent-learning.js +601 -575
  190. package/server/services/agent-memory.js +625 -625
  191. package/server/services/agent-mesh.js +555 -539
  192. package/server/services/agent-symphony.js +717 -717
  193. package/server/services/agent-tasks.js +1807 -1807
  194. package/server/services/api-key-engine.js +292 -261
  195. package/server/services/cluster.js +894 -894
  196. package/server/services/commander.js +738 -738
  197. package/server/services/edge-compute.js +440 -440
  198. package/server/services/email.js +233 -204
  199. package/server/services/governance.js +466 -0
  200. package/server/services/hosted-runtime.js +205 -205
  201. package/server/services/lfd.js +635 -635
  202. package/server/services/local-ai.js +389 -389
  203. package/server/services/marketplace.js +270 -270
  204. package/server/services/metering.js +182 -182
  205. package/server/services/modules/affiliate-intelligence.js +93 -93
  206. package/server/services/modules/agent-firewall.js +90 -90
  207. package/server/services/modules/bounty.js +89 -89
  208. package/server/services/modules/collective-bargaining.js +92 -92
  209. package/server/services/modules/dark-pattern.js +66 -66
  210. package/server/services/modules/gov-intelligence.js +45 -45
  211. package/server/services/modules/neural.js +55 -55
  212. package/server/services/modules/notary.js +49 -49
  213. package/server/services/modules/price-time-machine.js +86 -86
  214. package/server/services/modules/protocol.js +104 -104
  215. package/server/services/negotiation.js +439 -439
  216. package/server/services/plans.js +214 -0
  217. package/server/services/plugins.js +771 -771
  218. package/server/services/premium.js +1 -1
  219. package/server/services/price-intelligence.js +566 -566
  220. package/server/services/price-shield.js +1137 -1137
  221. package/server/services/provider-clients.js +740 -0
  222. package/server/services/reputation.js +465 -465
  223. package/server/services/search-engine.js +357 -357
  224. package/server/services/security.js +513 -513
  225. package/server/services/self-healing.js +843 -843
  226. package/server/services/shieldqr.js +322 -0
  227. package/server/services/sovereign-shield.js +542 -0
  228. package/server/services/ssl-inspector.js +42 -0
  229. package/server/services/ssl-monitor.js +167 -0
  230. package/server/services/stripe.js +205 -192
  231. package/server/services/swarm.js +788 -788
  232. package/server/services/universal-scraper.js +662 -661
  233. package/server/services/verification.js +481 -481
  234. package/server/services/vision.js +1163 -1163
  235. package/server/services/wab-crypto.js +178 -0
  236. package/server/utils/cache.js +125 -125
  237. package/server/utils/migrate.js +81 -81
  238. package/server/utils/safe-fetch.js +228 -0
  239. package/server/utils/secureFields.js +50 -50
  240. package/server/ws.js +161 -161
  241. package/templates/artisan-marketplace.yaml +104 -104
  242. package/templates/book-price-scout.yaml +98 -98
  243. package/templates/electronics-price-tracker.yaml +108 -108
  244. package/templates/flight-deal-hunter.yaml +113 -113
  245. package/templates/freelancer-direct.yaml +116 -116
  246. package/templates/grocery-price-compare.yaml +93 -93
  247. package/templates/hotel-direct-booking.yaml +113 -113
  248. package/templates/local-services.yaml +98 -98
  249. package/templates/olive-oil-tunisia.yaml +88 -88
  250. package/templates/organic-farm-fresh.yaml +101 -101
  251. package/templates/restaurant-direct.yaml +97 -97
  252. package/public/score.html +0 -263
  253. package/server/migrations/006_growth_suite.sql +0 -138
  254. package/server/routes/growth.js +0 -962
  255. package/server/services/fairness-engine.js +0 -409
  256. package/server/services/fairness.js +0 -420
@@ -0,0 +1,106 @@
1
+ -- ═══════════════════════════════════════════════════════════════════
2
+ -- WAB Agent Governance Layer
3
+ -- Permission Boundaries · Approval Gates · Tamper-Evident Audit Log
4
+ -- Kill Switch · Spend Limits
5
+ -- ═══════════════════════════════════════════════════════════════════
6
+
7
+ -- Agents registered for governance (one row per agent identity).
8
+ CREATE TABLE IF NOT EXISTS gov_agents (
9
+ agent_id TEXT PRIMARY KEY,
10
+ owner_id TEXT, -- user_id of owner (nullable for unauthed)
11
+ display_name TEXT,
12
+ token_hash TEXT NOT NULL, -- sha256(agent_token); used to authenticate the agent
13
+ status TEXT NOT NULL DEFAULT 'alive' CHECK(status IN ('alive','killed','suspended')),
14
+ killed_at TEXT,
15
+ killed_reason TEXT,
16
+ metadata TEXT, -- JSON
17
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
18
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
19
+ );
20
+
21
+ -- Permission policies. One row = one rule. Evaluated allow-list style.
22
+ CREATE TABLE IF NOT EXISTS gov_policies (
23
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
24
+ agent_id TEXT NOT NULL,
25
+ resource TEXT NOT NULL, -- e.g. "stripe", "gmail", "clickup", "domain:example.com"
26
+ action TEXT NOT NULL, -- "read" | "write" | "execute" | "*"
27
+ scope TEXT, -- optional: e.g. "refunds", "inbox", "tasks/123"
28
+ max_amount REAL, -- monetary cap per single action
29
+ currency TEXT DEFAULT 'USD',
30
+ daily_cap REAL, -- monetary cap per 24h rolling
31
+ per_call_rate INTEGER, -- max calls per minute
32
+ requires_approval INTEGER NOT NULL DEFAULT 0, -- 1 = always send to human gate
33
+ effect TEXT NOT NULL DEFAULT 'allow' CHECK(effect IN ('allow','deny')),
34
+ expires_at TEXT,
35
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
36
+ FOREIGN KEY (agent_id) REFERENCES gov_agents(agent_id) ON DELETE CASCADE
37
+ );
38
+ CREATE INDEX IF NOT EXISTS idx_gov_policies_agent ON gov_policies(agent_id);
39
+ CREATE INDEX IF NOT EXISTS idx_gov_policies_lookup ON gov_policies(agent_id, resource, action);
40
+
41
+ -- Append-only audit log with HMAC hash chain (tamper-evident).
42
+ -- prev_hash → hash chain links every entry; breaking the chain detects tampering.
43
+ CREATE TABLE IF NOT EXISTS gov_audit (
44
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
45
+ agent_id TEXT NOT NULL,
46
+ ts TEXT NOT NULL DEFAULT (datetime('now')),
47
+ event_type TEXT NOT NULL, -- 'check' | 'execute' | 'deny' | 'approval_request' | 'approval_decision' | 'kill' | 'policy_change' | 'note'
48
+ resource TEXT,
49
+ action TEXT,
50
+ scope TEXT,
51
+ amount REAL,
52
+ currency TEXT,
53
+ decision TEXT, -- 'allow' | 'deny' | 'pending' | 'approved' | 'rejected'
54
+ reason TEXT,
55
+ params_json TEXT, -- redacted parameter snapshot
56
+ result_json TEXT,
57
+ prev_hash TEXT, -- prior entry's hash
58
+ hash TEXT NOT NULL, -- HMAC(secret, prev_hash || row_payload)
59
+ FOREIGN KEY (agent_id) REFERENCES gov_agents(agent_id) ON DELETE CASCADE
60
+ );
61
+ CREATE INDEX IF NOT EXISTS idx_gov_audit_agent_ts ON gov_audit(agent_id, ts);
62
+ CREATE INDEX IF NOT EXISTS idx_gov_audit_event ON gov_audit(agent_id, event_type);
63
+
64
+ -- Approval requests. Async — agent requests, human resolves later.
65
+ CREATE TABLE IF NOT EXISTS gov_approvals (
66
+ request_id TEXT PRIMARY KEY,
67
+ agent_id TEXT NOT NULL,
68
+ resource TEXT NOT NULL,
69
+ action TEXT NOT NULL,
70
+ scope TEXT,
71
+ amount REAL,
72
+ currency TEXT,
73
+ params_json TEXT,
74
+ reason TEXT, -- why approval is required
75
+ status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','approved','rejected','expired','cancelled')),
76
+ decided_by TEXT, -- user_id of approver
77
+ decided_at TEXT,
78
+ decided_note TEXT,
79
+ expires_at TEXT, -- auto-expire pending requests
80
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
81
+ FOREIGN KEY (agent_id) REFERENCES gov_agents(agent_id) ON DELETE CASCADE
82
+ );
83
+ CREATE INDEX IF NOT EXISTS idx_gov_approvals_pending ON gov_approvals(agent_id, status);
84
+
85
+ -- Spend tracker (per agent, per resource, sliding window).
86
+ -- Rebuilt rolling-style; we just append on every monetary action.
87
+ CREATE TABLE IF NOT EXISTS gov_spend (
88
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
89
+ agent_id TEXT NOT NULL,
90
+ resource TEXT NOT NULL,
91
+ amount REAL NOT NULL,
92
+ currency TEXT NOT NULL DEFAULT 'USD',
93
+ ts TEXT NOT NULL DEFAULT (datetime('now')),
94
+ ref TEXT, -- audit_id or external ref
95
+ FOREIGN KEY (agent_id) REFERENCES gov_agents(agent_id) ON DELETE CASCADE
96
+ );
97
+ CREATE INDEX IF NOT EXISTS idx_gov_spend_window ON gov_spend(agent_id, resource, ts);
98
+
99
+ -- Rate-limit token buckets (lightweight; we keep counters).
100
+ CREATE TABLE IF NOT EXISTS gov_rate (
101
+ agent_id TEXT NOT NULL,
102
+ resource TEXT NOT NULL,
103
+ window_start TEXT NOT NULL, -- ISO timestamp (minute-resolution)
104
+ count INTEGER NOT NULL DEFAULT 0,
105
+ PRIMARY KEY (agent_id, resource, window_start)
106
+ );
@@ -0,0 +1,144 @@
1
+ -- Migration 008: Plans Management
2
+ -- Database-driven plans + feature catalog so admins can add/edit plans,
3
+ -- toggle which features each plan includes, and have changes flow live to
4
+ -- the landing page pricing section AND the Stripe checkout flow.
5
+ --
6
+ -- Backwards-compatible: legacy code paths that look up tiers by slug
7
+ -- ('free' | 'starter' | 'pro' | 'enterprise') keep working — those slugs
8
+ -- are seeded as plan ids below.
9
+ --
10
+ -- An older `plans` table (different schema: tier/price/etc.) may exist from
11
+ -- a previous admin dashboard iteration. Its rows are pure default seeds with
12
+ -- no FK references, so we drop it and recreate with the new schema.
13
+
14
+ DROP TABLE IF EXISTS plans;
15
+
16
+ CREATE TABLE plans (
17
+ id TEXT PRIMARY KEY, -- slug, lowercase, e.g. 'free' / 'pro' / 'business' / 'enterprise'
18
+ name TEXT NOT NULL,
19
+ tagline TEXT,
20
+ description TEXT,
21
+ price_cents INTEGER NOT NULL DEFAULT 0,
22
+ currency TEXT NOT NULL DEFAULT 'EUR',
23
+ billing_period TEXT NOT NULL DEFAULT 'month'
24
+ CHECK(billing_period IN ('month','year','one_time','custom')),
25
+ stripe_price_id TEXT,
26
+ cta_type TEXT NOT NULL DEFAULT 'checkout'
27
+ CHECK(cta_type IN ('checkout','register','contact','external')),
28
+ cta_label TEXT,
29
+ cta_url TEXT,
30
+ highlight INTEGER NOT NULL DEFAULT 0,
31
+ is_public INTEGER NOT NULL DEFAULT 1,
32
+ is_archived INTEGER NOT NULL DEFAULT 0,
33
+ sort_order INTEGER NOT NULL DEFAULT 100,
34
+ features_json TEXT NOT NULL DEFAULT '{}',
35
+ limits_json TEXT NOT NULL DEFAULT '{}',
36
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
37
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
38
+ );
39
+
40
+ CREATE INDEX IF NOT EXISTS idx_plans_public_archived ON plans(is_public, is_archived, sort_order);
41
+
42
+ CREATE TABLE IF NOT EXISTS feature_catalog (
43
+ feature_key TEXT PRIMARY KEY,
44
+ label TEXT NOT NULL,
45
+ description TEXT,
46
+ category TEXT NOT NULL DEFAULT 'general',
47
+ is_open_source INTEGER NOT NULL DEFAULT 0,
48
+ sort_order INTEGER NOT NULL DEFAULT 100,
49
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
50
+ );
51
+
52
+ -- Feature catalog (open-source / always-free first, then paid features)
53
+ INSERT OR IGNORE INTO feature_catalog (feature_key, label, description, category, is_open_source, sort_order) VALUES
54
+ -- Always-free / open core
55
+ ('protocol', 'WAP Protocol Core', 'Open Web Agent Protocol — schema, discovery, permissions', 'core', 1, 10),
56
+ ('sdk', 'SDK & Client Runtime', 'JavaScript SDK and client integrations', 'core', 1, 20),
57
+ ('browserExecution', 'Browser Execution Layer', 'Basic browser automation primitives', 'core', 1, 30),
58
+ ('adapters', 'MCP / REST / Browser Adapters','Adapters for MCP, REST APIs, and browser back-ends', 'core', 1, 40),
59
+ ('registryRead', 'Public Registry (read-only)', 'Browse commands, sites and templates', 'core', 1, 50),
60
+ ('agentRegistration', 'Agent Registration', 'Register agents and obtain credentials', 'core', 1, 60),
61
+ ('basicAuth', 'Basic Authentication', 'API keys and basic auth flows', 'core', 1, 70),
62
+ ('discovery', 'DNS / .well-known Discovery', 'Service discovery via DNS TXT and /.well-known/', 'core', 1, 80),
63
+ ('capabilityNegotiation', 'Capability Negotiation', 'Capability handshake between agent and site', 'core', 1, 90),
64
+ ('semanticActions', 'Semantic Actions', 'Built-in semantic actions catalog', 'core', 1,100),
65
+ ('communityTemplates', 'Community Templates', 'Public template library', 'core', 1,110),
66
+
67
+ -- Workspace / orchestration
68
+ ('workspace', 'Control Plane / Workspace', 'Web dashboard, monitoring and agent management', 'workspace', 0,200),
69
+ ('advancedOrchestration', 'Advanced Orchestration', 'Scheduling, retries, pipelines, distributed execution', 'workspace', 0,210),
70
+ ('observability', 'Observability', 'Tracing, metrics, logs and performance insights', 'workspace', 0,220),
71
+ ('failureAnalysis', 'Failure Analysis', 'Debugging tools and root-cause reports', 'workspace', 0,230),
72
+ ('replayEngine', 'Replay Engine', 'Record and replay agent runs', 'workspace', 0,240),
73
+ ('advancedAnalytics', 'Advanced Analytics', 'Detailed analytics dashboards and exports', 'workspace', 0,250),
74
+ ('dataExtraction', 'Data Extraction', 'Structured data extraction and export', 'workspace', 0,260),
75
+ ('agentMemory', 'Agent Memory Engine', 'Persistent context and long-term memory for agents', 'workspace', 0,270),
76
+ ('llmInference', 'LLM Inference', 'Built-in LLM inference via the platform', 'workspace', 0,280),
77
+
78
+ -- Premium / business
79
+ ('hostedRuntime', 'Hosted Runtime (Cloud Exec)', 'Auto-scaling hosted execution environment', 'premium', 0,300),
80
+ ('marketplace', 'Marketplace (Publish & Sell)','Publish agents and templates on the marketplace', 'premium', 0,310),
81
+ ('certification', 'Agent Certification', 'Verified agent identity badge', 'premium', 0,320),
82
+ ('trafficIntelligence', 'Traffic Intelligence', 'Agent profiling, anomaly detection and reporting', 'premium', 0,330),
83
+ ('exploitShield', 'Exploit Shield', 'Block malicious agents at the edge', 'premium', 0,340),
84
+ ('visionAnalysis', 'Vision Analysis', 'Visual page inspection (computer-vision pipeline)', 'premium', 0,350),
85
+ ('swarmExecution', 'Swarm / Multi-Agent', 'Coordinated multi-agent (swarm) execution', 'premium', 0,360),
86
+ ('auditLog', 'Audit Logs', 'Tamper-evident HMAC-chained audit history', 'premium', 0,370),
87
+ ('customDomain', 'Custom Domain / White-label', 'Serve the workspace on your own domain', 'premium', 0,380),
88
+ ('governanceLayer', 'Agent Governance Layer', 'Policies, approvals, kill switch and spend limits', 'premium', 0,390),
89
+
90
+ -- Enterprise
91
+ ('enterpriseSecurity', 'Enterprise Security', 'Request signing, IP allowlists, SSO/SAML', 'enterprise', 0,400),
92
+ ('prioritySupport', 'Priority Support', 'Dedicated SLA-backed support channel', 'enterprise', 0,410),
93
+ ('sla', 'Uptime SLA', 'Contractual uptime SLA', 'enterprise', 0,420),
94
+ ('customDevelopment', 'Custom Development', 'Bespoke engineering and integrations', 'enterprise', 0,430),
95
+ ('dedicatedInfra', 'Dedicated Infrastructure', 'Isolated single-tenant deployment', 'enterprise', 0,440);
96
+
97
+ -- Seed the four canonical plans (admin can edit/add later).
98
+ -- features_json keys MUST match feature_catalog.feature_key.
99
+ INSERT OR IGNORE INTO plans
100
+ (id, name, tagline, description, price_cents, currency, billing_period, cta_type, cta_label, cta_url, highlight, sort_order, features_json, limits_json)
101
+ VALUES
102
+ ('free',
103
+ 'Free',
104
+ 'Open-source core, forever free',
105
+ 'WAP protocol, SDK, discovery and the entire open-source surface — for developers and integrators.',
106
+ 0, 'EUR', 'month',
107
+ 'register', 'Get started for free', '/register',
108
+ 0, 10,
109
+ '{"protocol":true,"sdk":true,"browserExecution":true,"adapters":true,"registryRead":true,"agentRegistration":true,"basicAuth":true,"discovery":true,"capabilityNegotiation":true,"semanticActions":true,"communityTemplates":true}',
110
+ '{"agents":3,"tasksPerDay":50,"executionsPerDay":100,"sessions":5,"maxConcurrency":2,"replayRecordings":10,"computeMinutesPerDay":10,"storageMB":50,"webhooks":1,"customAgents":1,"apiCallsPerMinute":20}'
111
+ ),
112
+
113
+ ('pro',
114
+ 'Pro',
115
+ 'For developers shipping production agents',
116
+ 'Everything in Free plus the workspace, observability, replay engine, advanced orchestration and analytics.',
117
+ 1000, 'EUR', 'month',
118
+ 'checkout', 'Start Pro', NULL,
119
+ 1, 20,
120
+ '{"protocol":true,"sdk":true,"browserExecution":true,"adapters":true,"registryRead":true,"agentRegistration":true,"basicAuth":true,"discovery":true,"capabilityNegotiation":true,"semanticActions":true,"communityTemplates":true,"workspace":true,"advancedOrchestration":true,"observability":true,"failureAnalysis":true,"replayEngine":true,"advancedAnalytics":true,"dataExtraction":true,"agentMemory":true,"llmInference":true}',
121
+ '{"agents":25,"tasksPerDay":2000,"executionsPerDay":5000,"sessions":50,"maxConcurrency":10,"replayRecordings":500,"computeMinutesPerDay":180,"storageMB":2000,"webhooks":10,"customAgents":10,"apiCallsPerMinute":120}'
122
+ ),
123
+
124
+ ('business',
125
+ 'Business',
126
+ 'All paid features, ready for scale',
127
+ 'Everything in Pro plus hosted runtime, marketplace, vision, swarm, traffic intelligence, exploit shield, audit logs, custom domain and governance.',
128
+ 2900, 'EUR', 'month',
129
+ 'checkout', 'Start Business', NULL,
130
+ 0, 30,
131
+ '{"protocol":true,"sdk":true,"browserExecution":true,"adapters":true,"registryRead":true,"agentRegistration":true,"basicAuth":true,"discovery":true,"capabilityNegotiation":true,"semanticActions":true,"communityTemplates":true,"workspace":true,"advancedOrchestration":true,"observability":true,"failureAnalysis":true,"replayEngine":true,"advancedAnalytics":true,"dataExtraction":true,"agentMemory":true,"llmInference":true,"hostedRuntime":true,"marketplace":true,"certification":true,"trafficIntelligence":true,"exploitShield":true,"visionAnalysis":true,"swarmExecution":true,"auditLog":true,"customDomain":true,"governanceLayer":true}',
132
+ '{"agents":100,"tasksPerDay":20000,"executionsPerDay":50000,"sessions":250,"maxConcurrency":40,"replayRecordings":5000,"computeMinutesPerDay":600,"storageMB":10000,"webhooks":50,"customAgents":50,"apiCallsPerMinute":300}'
133
+ ),
134
+
135
+ ('enterprise',
136
+ 'Enterprise',
137
+ 'Custom-built for organisations',
138
+ 'Everything in Business plus enterprise security, dedicated infrastructure, custom development, priority support and a contractual uptime SLA. Pricing is tailored to your scope.',
139
+ 0, 'EUR', 'custom',
140
+ 'contact', 'Contact sales', 'mailto:sales@webagentbridge.com',
141
+ 0, 40,
142
+ '{"protocol":true,"sdk":true,"browserExecution":true,"adapters":true,"registryRead":true,"agentRegistration":true,"basicAuth":true,"discovery":true,"capabilityNegotiation":true,"semanticActions":true,"communityTemplates":true,"workspace":true,"advancedOrchestration":true,"observability":true,"failureAnalysis":true,"replayEngine":true,"advancedAnalytics":true,"dataExtraction":true,"agentMemory":true,"llmInference":true,"hostedRuntime":true,"marketplace":true,"certification":true,"trafficIntelligence":true,"exploitShield":true,"visionAnalysis":true,"swarmExecution":true,"auditLog":true,"customDomain":true,"governanceLayer":true,"enterpriseSecurity":true,"prioritySupport":true,"sla":true,"customDevelopment":true,"dedicatedInfra":true}',
143
+ '{"agents":-1,"tasksPerDay":-1,"executionsPerDay":-1,"sessions":-1,"maxConcurrency":-1,"replayRecordings":-1,"computeMinutesPerDay":-1,"storageMB":-1,"webhooks":-1,"customAgents":-1,"apiCallsPerMinute":-1}'
144
+ );
@@ -0,0 +1,30 @@
1
+ -- Migration 009: WAB ShieldQR scan history + reports
2
+ CREATE TABLE IF NOT EXISTS shieldqr_scans (
3
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
4
+ url TEXT NOT NULL,
5
+ host TEXT,
6
+ level TEXT NOT NULL CHECK(level IN ('green','yellow','red')),
7
+ score INTEGER NOT NULL DEFAULT 0,
8
+ signals_json TEXT NOT NULL DEFAULT '[]',
9
+ trust_ok INTEGER NOT NULL DEFAULT 0,
10
+ ssl_ok INTEGER NOT NULL DEFAULT 0,
11
+ user_id TEXT,
12
+ ip TEXT,
13
+ user_agent TEXT,
14
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
15
+ );
16
+ CREATE INDEX IF NOT EXISTS idx_shieldqr_scans_host_created ON shieldqr_scans(host, created_at DESC);
17
+ CREATE INDEX IF NOT EXISTS idx_shieldqr_scans_level_created ON shieldqr_scans(level, created_at DESC);
18
+
19
+ CREATE TABLE IF NOT EXISTS shieldqr_reports (
20
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
21
+ scan_id INTEGER REFERENCES shieldqr_scans(id) ON DELETE SET NULL,
22
+ url TEXT NOT NULL,
23
+ reason TEXT,
24
+ reporter_id TEXT,
25
+ reporter_ip TEXT,
26
+ status TEXT NOT NULL DEFAULT 'open' CHECK(status IN ('open','reviewing','resolved','rejected')),
27
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
28
+ resolved_at DATETIME
29
+ );
30
+ CREATE INDEX IF NOT EXISTS idx_shieldqr_reports_status ON shieldqr_reports(status, created_at DESC);
@@ -0,0 +1,33 @@
1
+ -- Migration 010: WAB Extended Trust — Certificate Companion & SSL Health Monitoring
2
+ -- Per-domain SSL certificate history (Certificate Transparency log) +
3
+ -- live SSL monitoring state for the trust dashboard.
4
+
5
+ CREATE TABLE IF NOT EXISTS cert_history (
6
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+ host TEXT NOT NULL,
8
+ fingerprint_sha256 TEXT NOT NULL,
9
+ issuer TEXT,
10
+ subject TEXT,
11
+ serial TEXT,
12
+ valid_from TEXT,
13
+ valid_to TEXT,
14
+ observed_at DATETIME DEFAULT CURRENT_TIMESTAMP,
15
+ source TEXT DEFAULT 'monitor' -- 'monitor' | 'shieldqr' | 'sign'
16
+ );
17
+ CREATE INDEX IF NOT EXISTS idx_cert_history_host_observed ON cert_history(host, observed_at DESC);
18
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_cert_history_host_fp ON cert_history(host, fingerprint_sha256);
19
+
20
+ CREATE TABLE IF NOT EXISTS ssl_monitor (
21
+ host TEXT PRIMARY KEY,
22
+ fingerprint_sha256 TEXT,
23
+ issuer TEXT,
24
+ valid_to TEXT,
25
+ days_until_expiry INTEGER,
26
+ status TEXT, -- 'active' | 'expiring' | 'expired' | 'error'
27
+ error TEXT,
28
+ last_checked_at DATETIME,
29
+ last_alert_at DATETIME,
30
+ enabled INTEGER NOT NULL DEFAULT 1,
31
+ owner_user_id TEXT
32
+ );
33
+ CREATE INDEX IF NOT EXISTS idx_ssl_monitor_status ON ssl_monitor(status, valid_to);
@@ -1,33 +1,33 @@
1
- /**
2
- * Database Adapter Interface
3
- *
4
- * WAB supports multiple database backends via adapters.
5
- * Set DB_ADAPTER environment variable to choose: sqlite (default), postgresql, mysql
6
- *
7
- * For PostgreSQL:
8
- * npm install pg
9
- * DB_ADAPTER=postgresql DATABASE_URL=postgres://user:pass@host:5432/wab
10
- *
11
- * For MySQL:
12
- * npm install mysql2
13
- * DB_ADAPTER=mysql DATABASE_URL=mysql://user:pass@host:3306/wab
14
- */
15
-
16
- const adapter = process.env.DB_ADAPTER || 'sqlite';
17
-
18
- let db;
19
- switch (adapter) {
20
- case 'postgresql':
21
- case 'postgres':
22
- db = require('./postgresql');
23
- break;
24
- case 'mysql':
25
- db = require('./mysql');
26
- break;
27
- case 'sqlite':
28
- default:
29
- db = require('./sqlite');
30
- break;
31
- }
32
-
33
- module.exports = db;
1
+ /**
2
+ * Database Adapter Interface
3
+ *
4
+ * WAB supports multiple database backends via adapters.
5
+ * Set DB_ADAPTER environment variable to choose: sqlite (default), postgresql, mysql
6
+ *
7
+ * For PostgreSQL:
8
+ * npm install pg
9
+ * DB_ADAPTER=postgresql DATABASE_URL=postgres://user:pass@host:5432/wab
10
+ *
11
+ * For MySQL:
12
+ * npm install mysql2
13
+ * DB_ADAPTER=mysql DATABASE_URL=mysql://user:pass@host:3306/wab
14
+ */
15
+
16
+ const adapter = process.env.DB_ADAPTER || 'sqlite';
17
+
18
+ let db;
19
+ switch (adapter) {
20
+ case 'postgresql':
21
+ case 'postgres':
22
+ db = require('./postgresql');
23
+ break;
24
+ case 'mysql':
25
+ db = require('./mysql');
26
+ break;
27
+ case 'sqlite':
28
+ default:
29
+ db = require('./sqlite');
30
+ break;
31
+ }
32
+
33
+ module.exports = db;