@agent-beam/beam 0.1.0 → 0.2.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/dist/account.d.ts +21 -0
- package/dist/account.js +59 -0
- package/dist/account.js.map +1 -0
- package/dist/agents.d.ts +6 -0
- package/dist/agents.js +44 -6
- package/dist/agents.js.map +1 -1
- package/dist/banner.d.ts +1 -0
- package/dist/banner.js +10 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli.js +137 -4
- package/dist/cli.js.map +1 -1
- package/dist/client.js +9 -3
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/connect.d.ts +11 -0
- package/dist/connect.js +92 -0
- package/dist/connect.js.map +1 -0
- package/dist/elevate.d.ts +3 -0
- package/dist/elevate.js +40 -0
- package/dist/elevate.js.map +1 -0
- package/dist/enroll.d.ts +2 -0
- package/dist/enroll.js +15 -4
- package/dist/enroll.js.map +1 -1
- package/dist/enterprise-install.d.ts +10 -0
- package/dist/enterprise-install.js +55 -0
- package/dist/enterprise-install.js.map +1 -0
- package/dist/forward.d.ts +13 -1
- package/dist/forward.js +87 -0
- package/dist/forward.js.map +1 -1
- package/dist/install.d.ts +7 -0
- package/dist/install.js +44 -0
- package/dist/install.js.map +1 -1
- package/dist/open-browser.js +6 -1
- package/dist/open-browser.js.map +1 -1
- package/dist/serve.js +7 -2
- package/dist/serve.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.js +16 -3
- package/dist/server.js.map +1 -1
- package/dist/setup.d.ts +2 -0
- package/dist/setup.js +91 -0
- package/dist/setup.js.map +1 -0
- package/package.json +1 -4
package/dist/server.js
CHANGED
|
@@ -4,12 +4,14 @@ import { Store } from "./store.js";
|
|
|
4
4
|
import { inventory } from "./inventory.js";
|
|
5
5
|
import { studioPage } from "./studio.js";
|
|
6
6
|
import { loadCustomRules } from "./custom-rules.js";
|
|
7
|
+
import { ForwardQueue, forwardReview, forwardScan } from "./forward.js";
|
|
7
8
|
export async function createCollector(options) {
|
|
8
9
|
const store = new Store(options.directory);
|
|
9
10
|
await store.init();
|
|
11
|
+
const forwardQueue = new ForwardQueue();
|
|
10
12
|
const origins = new Set(options.origins ?? ["http://localhost:3200", "http://127.0.0.1:3200"]);
|
|
11
13
|
const secret = Buffer.from(`Bearer ${options.token}`);
|
|
12
|
-
return { store, async fetch(req) {
|
|
14
|
+
return { store, forwardQueue, async fetch(req) {
|
|
13
15
|
const origin = req.headers.get("origin");
|
|
14
16
|
const url = new URL(req.url);
|
|
15
17
|
const headers = { "Cache-Control": "no-store", "X-Content-Type-Options": "nosniff", "Vary": "Origin" };
|
|
@@ -75,18 +77,29 @@ export async function createCollector(options) {
|
|
|
75
77
|
throw new Error("Batch exceeds 2,000 records.");
|
|
76
78
|
// Some exporters also emit indicator, summary and enforcement records; those are not action events.
|
|
77
79
|
const supported = records.filter(r => !r.record_type || ["event", "finding"].includes(String(r.record_type)));
|
|
78
|
-
const
|
|
80
|
+
const normalized = supported.map(normalize);
|
|
81
|
+
const result = await store.addEvents(normalized);
|
|
82
|
+
forwardQueue.push(normalized);
|
|
79
83
|
return json(url.pathname === "/v1/logs" ? {} : { ...result, skipped: records.length - supported.length });
|
|
80
84
|
}
|
|
81
85
|
const data = JSON.parse(body);
|
|
82
86
|
if (url.pathname === "/scan") {
|
|
83
87
|
if (typeof data.content !== "string" || typeof data.name !== "string" || !["skill", "mcp"].includes(data.kind))
|
|
84
88
|
throw new Error("Expected name, content and kind (skill or mcp).");
|
|
85
|
-
|
|
89
|
+
const scan = await store.addScan(scanText(data.name, data.content, data.kind));
|
|
90
|
+
try {
|
|
91
|
+
await forwardScan(scan);
|
|
92
|
+
}
|
|
93
|
+
catch { /* offline */ }
|
|
94
|
+
return json(scan);
|
|
86
95
|
}
|
|
87
96
|
if (typeof data.id !== "string" || typeof data.reviewed !== "boolean")
|
|
88
97
|
throw new Error("Expected event id and reviewed boolean.");
|
|
89
98
|
await store.review(data.id, data.reviewed);
|
|
99
|
+
try {
|
|
100
|
+
await forwardReview(data.id, data.reviewed);
|
|
101
|
+
}
|
|
102
|
+
catch { /* offline */ }
|
|
90
103
|
return json({ ok: true });
|
|
91
104
|
}
|
|
92
105
|
catch (e) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
package/dist/setup.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createInterface } from "node:readline/promises";
|
|
2
|
+
import { installAllDetectedHooks } from "./install.js";
|
|
3
|
+
import { readIdentity } from "./enroll.js";
|
|
4
|
+
import { startConnect } from "./connect.js";
|
|
5
|
+
import { installEnterprisePackage } from "./enterprise-install.js";
|
|
6
|
+
import { installService } from "./service.js";
|
|
7
|
+
import { openBrowser } from "./open-browser.js";
|
|
8
|
+
import { getIdentityPath } from "./config.js";
|
|
9
|
+
export async function promptYesNo(question, defaultYes = true) {
|
|
10
|
+
const suffix = defaultYes ? "[Y/n]" : "[y/N]";
|
|
11
|
+
if (!process.stdin.isTTY) {
|
|
12
|
+
console.log(`${question} ${suffix} (non-interactive shell, defaulting to ${defaultYes ? "yes" : "no"})`);
|
|
13
|
+
return defaultYes;
|
|
14
|
+
}
|
|
15
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
try {
|
|
17
|
+
const answer = (await rl.question(`${question} ${suffix} `)).trim().toLowerCase();
|
|
18
|
+
if (!answer)
|
|
19
|
+
return defaultYes;
|
|
20
|
+
return answer.startsWith("y");
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
rl.close();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// One-shot onboarding for a machine that already has `beam` installed: wires beam's hook into
|
|
27
|
+
// every detected agent, connects the device if it isn't already, and optionally starts the
|
|
28
|
+
// background service. Any step that genuinely needs root (currently just installing the
|
|
29
|
+
// beam-enterprise package into global node_modules) transparently falls back to sudo via
|
|
30
|
+
// runWithSudoFallback -- service install never does, since it must write into the invoking
|
|
31
|
+
// user's own home directory, not root's.
|
|
32
|
+
export async function runSetup() {
|
|
33
|
+
console.log("Setting up Beam...\n");
|
|
34
|
+
console.log("Detecting installed AI agents and wiring beam's hook into each one...");
|
|
35
|
+
const hookResults = await installAllDetectedHooks();
|
|
36
|
+
for (const r of hookResults) {
|
|
37
|
+
if (r.status === "installed")
|
|
38
|
+
console.log(` ✔ Installed for ${r.name}`);
|
|
39
|
+
else if (r.status === "already-installed")
|
|
40
|
+
console.log(` ✔ Already installed for ${r.name}`);
|
|
41
|
+
else if (r.status === "not-supported")
|
|
42
|
+
console.log(` — ${r.name} detected, but hook install isn't built for it yet`);
|
|
43
|
+
else if (r.status === "error")
|
|
44
|
+
console.log(` ✖ ${r.name}: ${r.error}`);
|
|
45
|
+
}
|
|
46
|
+
if (!hookResults.some(r => r.status === "installed" || r.status === "already-installed")) {
|
|
47
|
+
console.log(" No supported agents detected on this machine.");
|
|
48
|
+
}
|
|
49
|
+
let identity = await readIdentity();
|
|
50
|
+
if (identity) {
|
|
51
|
+
console.log(`\n✔ Already connected (device ${identity.deviceId}).`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const shouldConnect = await promptYesNo("\nConnect this device to your Beam workspace now?");
|
|
55
|
+
if (shouldConnect) {
|
|
56
|
+
const session = await startConnect();
|
|
57
|
+
console.log(`\nConnect Beam CLI to Agentbeam:\n${session.url}`);
|
|
58
|
+
openBrowser(session.url);
|
|
59
|
+
console.log("Waiting for you to finish in the browser…");
|
|
60
|
+
identity = await session.poll();
|
|
61
|
+
console.log(`✔ Connected device ${identity.deviceId}\n` +
|
|
62
|
+
` org: ${identity.orgId}\n` +
|
|
63
|
+
` api: ${identity.apiBase}\n` +
|
|
64
|
+
` identity: ${getIdentityPath()} (0600)`);
|
|
65
|
+
const enterprise = await installEnterprisePackage(identity);
|
|
66
|
+
if (enterprise.status === "installed")
|
|
67
|
+
console.log("✔ beam-enterprise installed (OS-level monitoring enabled).");
|
|
68
|
+
else if (enterprise.status === "error")
|
|
69
|
+
console.error(`✖ Could not install beam-enterprise: ${enterprise.message}`);
|
|
70
|
+
// "not-entitled": org isn't on the enterprise plan -- nothing to print, this is the normal case.
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
console.log("Skipped. Run 'beam connect' whenever you're ready.");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const shouldStart = await promptYesNo("\nStart the beam background service now (survives reboot/logout)?");
|
|
77
|
+
if (shouldStart) {
|
|
78
|
+
try {
|
|
79
|
+
const result = await installService();
|
|
80
|
+
console.log(`✔ Installed and started the beam service (${result.platform})\n config: ${result.configPath}`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
console.error(`✖ Could not start the beam service: ${err.message}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log("Skipped. Run 'beam service install' (background) or 'beam start' (foreground) whenever you want it running.");
|
|
88
|
+
}
|
|
89
|
+
console.log("\nSetup complete. Run 'beam studio' to see activity, or 'beam agent list' to check hook status.");
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-beam/beam",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Beam - local observation and heuristic risk scanning for AI agent activity",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"type": "module",
|
|
@@ -29,9 +29,6 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"commander": "^13.0.0"
|
|
31
31
|
},
|
|
32
|
-
"optionalDependencies": {
|
|
33
|
-
"beam-enterprise": "^0.1.0"
|
|
34
|
-
},
|
|
35
32
|
"devDependencies": {
|
|
36
33
|
"@types/jest": "^30.0.0",
|
|
37
34
|
"@types/node": "^22.10.5",
|