web-agent-bridge 3.2.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 -72
- package/README.ar.md +1286 -1152
- package/README.md +1764 -1635
- 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 +16 -3
- package/public/.well-known/agent-tools.json +180 -180
- package/public/.well-known/ai-assets.json +59 -59
- package/public/.well-known/security.txt +8 -0
- package/public/agent-workspace.html +349 -349
- package/public/ai.html +198 -198
- package/public/api.html +413 -412
- package/public/browser.html +486 -486
- package/public/commander-dashboard.html +243 -243
- package/public/cookies.html +210 -210
- 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 -706
- package/public/dns.html +507 -0
- package/public/docs.html +587 -587
- package/public/feed.xml +89 -89
- package/public/growth.html +463 -463
- package/public/index.html +1070 -982
- 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 -360
- package/public/llms.txt +125 -125
- package/public/login.html +85 -85
- 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 -2489
- package/public/premium.html +793 -793
- package/public/privacy.html +297 -297
- package/public/register.html +105 -105
- 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 -256
- 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 +12 -1
- package/sdk/multi-agent.js +318 -318
- package/sdk/package.json +1 -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 +531 -427
- 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 -540
- 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 -332
- package/server/routes/demo-store.js +154 -0
- package/server/routes/discovery.js +417 -417
- package/server/routes/gateway.js +173 -157
- 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 -185
- package/server/routes/wab-api.js +850 -501
- 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 -261
- 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 -635
- 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 -93
- package/server/services/modules/agent-firewall.js +90 -90
- package/server/services/modules/bounty.js +89 -89
- package/server/services/modules/collective-bargaining.js +92 -92
- package/server/services/modules/dark-pattern.js +66 -66
- package/server/services/modules/gov-intelligence.js +45 -45
- package/server/services/modules/neural.js +55 -55
- package/server/services/modules/notary.js +49 -49
- package/server/services/modules/price-time-machine.js +86 -86
- package/server/services/modules/protocol.js +104 -104
- package/server/services/negotiation.js +439 -439
- package/server/services/plugins.js +771 -771
- package/server/services/price-intelligence.js +566 -566
- 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/public/score.html +0 -263
- package/server/migrations/006_growth_suite.sql +0 -138
- package/server/routes/growth.js +0 -962
- package/server/services/fairness-engine.js +0 -409
- package/server/services/fairness.js +0 -420
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* WAB Container Worker — Runs inside a forked child process
|
|
5
|
-
*
|
|
6
|
-
* This script is the entry point for process-isolated task execution.
|
|
7
|
-
* It reads the task definition from a JSON file, executes it,
|
|
8
|
-
* and sends results back via IPC.
|
|
9
|
-
*
|
|
10
|
-
* Security:
|
|
11
|
-
* - Runs in a separate process with memory limits (--max-old-space-size)
|
|
12
|
-
* - Limited filesystem access (only its tmp directory)
|
|
13
|
-
* - Can disable network via environment
|
|
14
|
-
* - Timeout enforced by parent
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
const fs = require('fs');
|
|
18
|
-
const path = require('path');
|
|
19
|
-
|
|
20
|
-
const taskFile = process.argv[2];
|
|
21
|
-
if (!taskFile) {
|
|
22
|
-
process.stderr.write('No task file specified\n');
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
let taskData;
|
|
27
|
-
try {
|
|
28
|
-
taskData = JSON.parse(fs.readFileSync(taskFile, 'utf8'));
|
|
29
|
-
} catch (err) {
|
|
30
|
-
process.stderr.write(`Failed to read task file: ${err.message}\n`);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// ─── Sandbox Utilities (available to task code) ──────────────────────
|
|
35
|
-
|
|
36
|
-
const sandbox = {
|
|
37
|
-
taskId: taskData.taskId,
|
|
38
|
-
containerId: taskData.containerId,
|
|
39
|
-
params: taskData.params || {},
|
|
40
|
-
|
|
41
|
-
// Send progress updates
|
|
42
|
-
progress(pct) {
|
|
43
|
-
if (process.send) process.send({ type: 'progress', progress: pct });
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
// Send log messages
|
|
47
|
-
log(message) {
|
|
48
|
-
if (process.send) process.send({ type: 'log', message: String(message).slice(0, 1000) });
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
// Read a param
|
|
52
|
-
param(key, defaultValue) {
|
|
53
|
-
return taskData.params[key] !== undefined ? taskData.params[key] : defaultValue;
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
// Filesystem is restricted to tmpDir
|
|
57
|
-
tmpDir: path.dirname(taskFile),
|
|
58
|
-
|
|
59
|
-
readFile(name) {
|
|
60
|
-
const p = path.join(sandbox.tmpDir, path.basename(name));
|
|
61
|
-
return fs.readFileSync(p, 'utf8');
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
writeFile(name, content) {
|
|
65
|
-
const p = path.join(sandbox.tmpDir, path.basename(name));
|
|
66
|
-
fs.writeFileSync(p, content);
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
// ─── Execute Task ────────────────────────────────────────────────────
|
|
71
|
-
|
|
72
|
-
async function execute() {
|
|
73
|
-
try {
|
|
74
|
-
let result;
|
|
75
|
-
|
|
76
|
-
if (taskData.code) {
|
|
77
|
-
// Execute provided code string in a restricted scope
|
|
78
|
-
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
|
|
79
|
-
const fn = new AsyncFunction('sandbox', 'params', taskData.code);
|
|
80
|
-
result = await fn(sandbox, taskData.params);
|
|
81
|
-
} else if (taskData.module) {
|
|
82
|
-
// Execute a module (for trusted internal tasks)
|
|
83
|
-
const mod = require(taskData.module);
|
|
84
|
-
if (typeof mod.execute === 'function') {
|
|
85
|
-
result = await mod.execute(taskData.params, sandbox);
|
|
86
|
-
} else {
|
|
87
|
-
result = { error: 'Module has no execute() function' };
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
result = { echo: taskData.params, message: 'No code or module specified' };
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Send result back via IPC
|
|
94
|
-
if (process.send) {
|
|
95
|
-
process.send({ type: 'result', data: result });
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Give IPC time to flush
|
|
99
|
-
setTimeout(() => process.exit(0), 100);
|
|
100
|
-
} catch (err) {
|
|
101
|
-
process.stderr.write(`Task error: ${err.message}\n${err.stack}\n`);
|
|
102
|
-
|
|
103
|
-
if (process.send) {
|
|
104
|
-
process.send({ type: 'result', data: null });
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
setTimeout(() => process.exit(1), 100);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
execute();
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WAB Container Worker — Runs inside a forked child process
|
|
5
|
+
*
|
|
6
|
+
* This script is the entry point for process-isolated task execution.
|
|
7
|
+
* It reads the task definition from a JSON file, executes it,
|
|
8
|
+
* and sends results back via IPC.
|
|
9
|
+
*
|
|
10
|
+
* Security:
|
|
11
|
+
* - Runs in a separate process with memory limits (--max-old-space-size)
|
|
12
|
+
* - Limited filesystem access (only its tmp directory)
|
|
13
|
+
* - Can disable network via environment
|
|
14
|
+
* - Timeout enforced by parent
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fs = require('fs');
|
|
18
|
+
const path = require('path');
|
|
19
|
+
|
|
20
|
+
const taskFile = process.argv[2];
|
|
21
|
+
if (!taskFile) {
|
|
22
|
+
process.stderr.write('No task file specified\n');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let taskData;
|
|
27
|
+
try {
|
|
28
|
+
taskData = JSON.parse(fs.readFileSync(taskFile, 'utf8'));
|
|
29
|
+
} catch (err) {
|
|
30
|
+
process.stderr.write(`Failed to read task file: ${err.message}\n`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ─── Sandbox Utilities (available to task code) ──────────────────────
|
|
35
|
+
|
|
36
|
+
const sandbox = {
|
|
37
|
+
taskId: taskData.taskId,
|
|
38
|
+
containerId: taskData.containerId,
|
|
39
|
+
params: taskData.params || {},
|
|
40
|
+
|
|
41
|
+
// Send progress updates
|
|
42
|
+
progress(pct) {
|
|
43
|
+
if (process.send) process.send({ type: 'progress', progress: pct });
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
// Send log messages
|
|
47
|
+
log(message) {
|
|
48
|
+
if (process.send) process.send({ type: 'log', message: String(message).slice(0, 1000) });
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
// Read a param
|
|
52
|
+
param(key, defaultValue) {
|
|
53
|
+
return taskData.params[key] !== undefined ? taskData.params[key] : defaultValue;
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
// Filesystem is restricted to tmpDir
|
|
57
|
+
tmpDir: path.dirname(taskFile),
|
|
58
|
+
|
|
59
|
+
readFile(name) {
|
|
60
|
+
const p = path.join(sandbox.tmpDir, path.basename(name));
|
|
61
|
+
return fs.readFileSync(p, 'utf8');
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
writeFile(name, content) {
|
|
65
|
+
const p = path.join(sandbox.tmpDir, path.basename(name));
|
|
66
|
+
fs.writeFileSync(p, content);
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// ─── Execute Task ────────────────────────────────────────────────────
|
|
71
|
+
|
|
72
|
+
async function execute() {
|
|
73
|
+
try {
|
|
74
|
+
let result;
|
|
75
|
+
|
|
76
|
+
if (taskData.code) {
|
|
77
|
+
// Execute provided code string in a restricted scope
|
|
78
|
+
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
|
|
79
|
+
const fn = new AsyncFunction('sandbox', 'params', taskData.code);
|
|
80
|
+
result = await fn(sandbox, taskData.params);
|
|
81
|
+
} else if (taskData.module) {
|
|
82
|
+
// Execute a module (for trusted internal tasks)
|
|
83
|
+
const mod = require(taskData.module);
|
|
84
|
+
if (typeof mod.execute === 'function') {
|
|
85
|
+
result = await mod.execute(taskData.params, sandbox);
|
|
86
|
+
} else {
|
|
87
|
+
result = { error: 'Module has no execute() function' };
|
|
88
|
+
}
|
|
89
|
+
} else {
|
|
90
|
+
result = { echo: taskData.params, message: 'No code or module specified' };
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Send result back via IPC
|
|
94
|
+
if (process.send) {
|
|
95
|
+
process.send({ type: 'result', data: result });
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Give IPC time to flush
|
|
99
|
+
setTimeout(() => process.exit(0), 100);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
process.stderr.write(`Task error: ${err.message}\n${err.stack}\n`);
|
|
102
|
+
|
|
103
|
+
if (process.send) {
|
|
104
|
+
process.send({ type: 'result', data: null });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
setTimeout(() => process.exit(1), 100);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
execute();
|